2009-07-30 3 views
12

... ID wie etwas, das ich in meinen Build-Prozess integrieren könnte: Gibt es irgendetwas "Standard" -Tool, das das tut?Gibt es ein Befehlszeilenprogramm, um das eingebettete Icon einer Win32-Exe zu ändern?

+0

Wenn Sie dies während des Erstellungsprozesses tun, warum müssen Sie das Symbol nachträglich ändern? Warum nicht einfach mit dem richtigen Icon bauen? (Siehe Ville Laurikaris Antwort). –

+0

Siehe meine Kommentare als Antwort auf seine Antwort. – jkp

+0

Manchmal ist es erforderlich, die Version der Datei nach dem eigentlichen Build zu aktualisieren (SVN- oder CVS-Version ohne Quellenänderung einfügen). Aber ich kann wirklich nicht sehen, warum du das Icon wechseln musst. –

Antwort

3

Ich bin mir ziemlich sicher Resource Hacker kann dies tun, und einige andere Dinge, ich glaube, ich erkenne sein Symbol aus, als ich es vor einer Weile verwendet. Hoffe das hilft dir!

+0

Das ist fantastisch: und fast perfekt, außer dass ich es als Teil meines Build-Prozesses nicht ausführen kann, weil es nicht auf der Befehlszeile basiert. Upvote für einen interessanten Link. – jkp

+0

Ich fand dies: http://www.heaventools.com/command-line_resource_editor.htm. Schade, dass sie eine übermäßige Menge an Bargeld dafür haben wollen. – jkp

+0

Es ist keine Konsolenanwendung, aber Sie können es trotzdem mit Parametern ausführen und eine einzelne "Aktion" ohne Benutzerinteraktion ausführen. Es unterstützt auch Skript-Dateien, wenn Sie mehrere Aktionen ausführen müssen – Anders

2

Sie benötigen eine Ressource-Skriptdatei (.rc), zu erstellen und kompilieren es dann zu einer Objektdatei mit rc (.rc.res) und cvtres (.res.obj). Beide Tools sind im Microsoft Platform SDK enthalten. Wenn Sie die Objektdatei in einen Linker-Befehl einschließen, wird das Symbol in der Ressourcenskriptdatei im Ergebnis angezeigt. Hier ist ein Beispiel-Ressource-Datei und die Befehle zum Erstellen des Objekts:

resource.rc:

101   ICON     "my_icon.ico" 

Ihre Symboldatei ist in der Datei my_icon.ico. Befehle diese in eine Objektdatei zu kompilieren:

rc -fo resource.res resource.rc 
cvtres -machine:ix86 -out:resource.obj resource.res 

Aber bei weitem die einfachste Möglichkeit, das Programmsymbol zu setzen, ist nur do it in Visual Studio.

Technisch können Sie weder tatsächlich Änderung das Symbol einer vorhandenen ausführbaren Datei, aber irgendwie bezweifle ich, dass das, was Sie wirklich tun möchten.

+0

Nein, nein, das tue ich wirklich! Der Grund ist verschachtelt: Ich muss einigen Dienstprogrammen, die ich mit PyInstaller erstellt habe, benutzerdefinierte Symbole hinzufügen. Das Problem ist, dass die Out-of-the-Box-Funktionalität auf pywin32 basiert, was OK ist, außer dass ich meinen Build in einer Sandbox von 'virtualenv' und' pip' kombiniere: Leider kann ich keinen Weg finden, 'pywin32' zu bekommen überhaupt installieren: Es scheint keine Möglichkeit zu geben, es in dieser Umgebung zu erstellen. Um das Problem zu umgehen, wollte ich das Symbol ändern können, nachdem PyInstaller es geschafft hat. – jkp

3

Sieht aus wie ich die perfect solution für das, was ich versuche, gefunden habe.

+1

Leider fand ich später, dass es nicht Feature komplett war. Trotzdem konnte jemand es mit wenig Aufwand beenden: es war nur eine 'cpp'-Quelldatei und der Code war sehr sauber. – jkp

+0

Ich gebe dieses Tool auf, weil ich Python nicht für einen so kleinen Job wie das Icon-Ändern installieren möchte. – fpemud

7

Haben Sie Resource Hacker gesehen? Sie können es auch über das command line (Skript) fahren, also bin ich mir sicher, dass es in Ihren Build integriert werden könnte.

+0

Ich konnte die Symbole in einer 7z selbst extrahierenden EXE-Datei mit Resource Hacker 4.2.5 nicht ersetzen. Es gibt zwei Icons 1: 0 2: 0 und eine Icon-Gruppe 101: 0 in meiner EXE-Datei. Ich möchte die Symboldaten ersetzen und den Ressourcenindex unberührt lassen, was ich für den einfachsten Weg halte. Nach meinen Kenntnissen des PE-Formats ist es machbar, aber RH4.2.5 kann das einfach nicht. – fpemud