2010-05-22 10 views
7

Die ganze Geschichte: Ich habe ein schickes .NET-Programm erstellt, das ein vom Visual Studio Installer (VSI) erstelltes Installationsprogramm hat. Die VSI erstellt 2 Dateien (setup.exe und MyProgramSetup.msi). Ich verstehe die Gründe für beide Dateien benötigt, aber ich möchte nur ein ausführbares SINGLE Installer an Benutzer verteilen. Ich möchte nicht, dass sie 2 Dateien sehen und zwischen ihnen wählen müssen.Wie kann ich die Ressourcen einer EXE (Dateibeschreibung, Symbol usw.) mit einem Befehlszeilenprogramm bearbeiten?

Um dies zu tun, habe ich die 2 Dateien in ein selbstextrahierendes Archiv mit IExpress zusammengeführt (wie in dieser Antwort zu sehen: Merge msi and exe). Dies funktioniert gut, jedoch hat das selbstextrahierende Archiv, das erstellt wird, ein hässliches Symbol und verwirrende Dateiinformationen (die Dateibeschreibung ist "Win32 Cabinet Self-Extractor" mit 43 Leerzeichen dahinter).

Ich muss das Symbol durch mein eigenes ersetzen und einige der Dateieigenschaften wie "Beschreibung", "Firma" usw. ändern. Ich möchte dies automatisch als Build-Schritt getan haben, so dass ein Programm das ist ein Kommandozeilen-/Konsolendienstprogramm wäre großartig.

Ich habe jetzt eine Weile gesucht und kann nur ein Programm finden, das genau das tut, was ich will (ResourceTuner Console: http://www.heaventools.com/command-line_resource_editor.htm), aber es kostet einen Arm und ein Bein und mein Budget ist $ 0.

Kennt jemand einen besseren Weg, um zu erreichen, was ich will, oder weiß von einem Programm, das die Ressourcen einer ausführbaren Datei ersetzen kann, ohne eine GUI verwenden zu müssen?

By the way, ich habe auch nicht einmal die ausführbare Datei öffnen kann, und ResEdit versucht SiComponents' Resource Builder 3, die die gerade stürzt ab, wenn ich den Befehl:

resedit.exe -convert "Modified Resources.rc" "MyProgramSetup.exe" 

Antwort

5

Visual Studio können sie bearbeiten, wenn Sie öffnen die ausführbare Datei. Ich bin mir nicht sicher, ob es einen Weg gibt, es von der Kommandozeile aus zu tun.

Es gibt eine anständige CodeProject article, die mit Symbolen befasst (einschließlich Speichern in exe-Dateien).

Firmenname, Beschreibung usw. sind Teil der Versionsressource. Ein weiteres CodeProject article behandelt die Aktualisierung der Versionsressource, obwohl ich das nicht eingehend untersucht habe.

+3

Ihr zweiter Link (VerPatch) war perfekt zum Ändern der Versionsressourcen. Open Source und nur 93KB, hervorragend! Ich habe den folgenden Befehl verwendet: verpatch.exe "Blah Setup.exe "/ s Firmenname" Blah "/ s Dateibeschreibung" Blah "/ s InternerName" Blah "/ s RechtCopyright" Blah "/ s OriginalDateiname" Blah " – Coder7862396

3

Haben Sie sich 'Reshacker' AKA 'Ressource Hacker' angesehen? Es wird hauptsächlich als GUI-Tool beworben, aber die Hilfedatei sagt, dass alle seine Funktionen mit Befehlszeilenskripten zugänglich sind. Ich habe seine GUI-Form verwendet, um Symbole in exe's zu ändern, und es wird Sie auch bei den anderen eingebetteten Ressourcen lassen. Googeln Sie einfach nach 'Ressourcen-Hacker', die aktuelle Version scheint 3.4.0 zu sein

+1

Ich konnte mit dem Resourse Hacker das Hauptsymbol mit dem folgenden Befehl ersetzen: ResHacker.exe -addowerwrite "Blah Setup.exe", "Blah Setup.exe", "ProgramIcon.ico", ICONGROUP, MAINICON, 0 – Coder7862396

2

Wenn Sie nur die Dateiversions-Informationsfrage beantworten, können Sie Ihre eigenen Versionsinformationen in die IExpress-.SED-Datei aufnehmen. Diese site bietet zusätzliche Details zu den IExpress.SED-Dateiabschnitten und -attributen. Die Verwendung der integrierten Funktionalität scheint einfacher zu sein als die Nachbearbeitung der Setup-Exe.

Fügen Sie in der .SED-Datei die VersionInfo-Referenz im Abschnitt Optionen ein. Erstellen Sie dann den Abschnitt, der Ihre Versionsinformationen enthält.

[Options] 
VersionInfo=VersionSection 

[VersionSection] 
FromFile= ;Uses the version info in this executable file 
; or specify each attribute 
; or specify the FromFile and override individual attributes 
FileDescription= 
CompanyName= 
FileVersion= 
ProductVersion= 
OriginalFilename= 
LegalCopyright= 
ProductName= 
InternalName= 

BTW, funktioniert die FileVersion nicht für mich. YMMV,

+0

Ich bearbeite die Sed-Dateien wie folgt und speicherte die Änderungen, aber geänderte Details werden nicht berücksichtigt die letzte exe. Auch muss ich die sed-Datei zusammen mit der exe auf dem Zielcomputer teilen, um die Änderungen zu sehen? –

+0

@JMat Haben Sie die .SED-Datei zu Ihrem Deployment-Projekt hinzugefügt. Die .SED-Datei wird nur während verwendet Die Build - Phase, keine Notwendigkeit, diese Datei zu liefern. –

+0

Die .SEED-Datei wird durch den IExpres-Assistenten für mich zusammen mit EXE-Datei generiert. So wie wir müssen die Sed-Datei nach dem Generieren der EXE bearbeiten oder mache ich es in der falsche Ordnung Derzeit sind die Schritte, die ich mache, 1.generate exe und sed Datei mit Iexpress-Tool und bearbeiten Sie die Sed-Datei gemäß der oben genannten Antwort und speichern Sie Änderungen. Aber die Bearbeitung von Sed-Dateien spiegelt nicht die exe-Datei wider. Meine Frage hier http://stackoverflow.com/questions/28313804/edit-fileinfo-of-exe-created-using-iexpress-by-modifying-sed-file –