Im Rahmen unseres Erstellungsprozesses muss ich die Versionsinformationen für alle kompilierten Binärdateien festlegen. Einige der Binärdateien enthalten bereits Versionsinformationen (zur Kompilierungszeit hinzugefügt), andere nicht.
Ich möchte folgende Informationen anwenden können:
- Name der Firma
- Urheberrechtshinweis
- Produktname
- Produktbeschreibung
- Dateiversion
- Produktversion
Alle diese Attribute werden vom Build-Skript angegeben und müssen nach der Kompilierung angewendet werden. Dies sind Standard-Binärdateien (keine Assemblys), die mit C ++ Builder 2007 kompiliert wurden.
Wie kann ich das machen?
UpdateResource
Funktion, wenn Task Update - Version in der bestehenden peAntworten:
Obwohl es sich nicht um einen Stapelprozess handelt, kann Visual Studio auch Dateiressourcen hinzufügen / bearbeiten.
Verwenden Sie einfach Datei-> Öffnen-> Datei in der EXE- oder DLL-Datei. Dies ist praktisch, um Versionsinformationen nach dem Erstellen zu korrigieren oder sie zu Dateien hinzuzufügen, die diese Ressourcen zunächst nicht haben.
quelle
Im Gegensatz zu vielen anderen Antworten verwendet diese Lösung völlig freie Software.
Erstellen Sie zunächst eine Datei mit dem Namen
Resources.rc
:Verwenden Sie als Nächstes GoRC , um es mit folgenden
.res
Dateien in eine Datei zu kompilieren :(siehe meinen Kommentar unten für einen Spiegel von
GoRC.exe
)Verwenden Sie dann Resource Hacker im CLI-Modus, um es einem vorhandenen hinzuzufügen
.exe
:Das ist es!
quelle
ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.res
Außerdem kann ResourceHacker die RC-Datei selbst kompilieren:ResourceHacker.exe -open Version.rc -save Version.res -action compile
Oder Sie können die Freeware StampVer für Win32 exe / dll-Dateien auschecken .
Die Datei- und Produktversionen werden jedoch nur geändert, wenn bereits eine Versionsressource vorhanden ist. Es kann keine Versionsressource hinzugefügt werden, wenn keine vorhanden ist.
quelle
rcedit ist relativ neu und funktioniert gut über die Befehlszeile: https://github.com/atom/rcedit
Es gibt auch ein NPM-Modul, das es aus JavaScript umschließt, und eine Grunt-Aufgabe, falls Sie Grunt verwenden.
quelle
Was ist mit so etwas?
Hier mit vollständigen Quellen erhältlich .
quelle
/va /pv
Option). Die Version wurde im Windows Explorer korrekt angezeigt, aber das letzte Zeichen fehlte beim Abrufen im Code mitVerQueryValue
. Um die fehlerhafte Ressource zu beheben, habe ich Folgendes getan: (1) Laden Sie die DLL in Resource Hacker. (2) Zeigen Sie die Versionsressource an. (3) Kompilieren (etwas ändern und dann wieder ändern, um die Schaltfläche zu aktivieren). (4) Speichern.Es gibt dieses Tool ChangeVersion [1]
Liste der Funktionen (von der Website):
Vollständige Offenlegung: Ich kenne den Mann, der dieses Tool geschrieben hat. Ich habe mit ihm gearbeitet. Das bedeutet aber auch, dass ich weiß, dass er Qualitätssoftware herstellt;)
[1] Der Link ist tot. Es scheint eine gespiegelte Version unter download.cnet.com zu geben .
quelle
"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
Ich mache es ohne zusätzliches Werkzeug. Ich habe gerade die folgenden Dateien zu meinem Win32-App-Projekt hinzugefügt.
Eine Header-Datei, die einige Konstanten definiert, die wir in unserer Ressourcendatei und sogar im Programmcode wiederverwenden können. Wir müssen nur eine Datei pflegen. Dank des Qt-Teams, das mir gezeigt hat, wie es in einem Qt-Projekt gemacht wird, funktioniert es jetzt auch in meiner Win32-App.
---- [version.h] ----
---- [MyProjectVersion.rc] ----
quelle
#include <windows.h>
in dieresource.h
Datei ein, die automatisch hinzugefügt wird. Diese Datei wird nicht neu generiert (Hinweis oben in der RC-Datei zeigt an, dass es sich um generierten Code handelt, der im Designer geändert werden kann).verpatch ist gut, verarbeitet aber keine Unicode-Zeichen ...
versuchen Sie es mit ResourceLib
quelle
Es gibt mehrere Tools, die in vielen tollen Antworten erwähnt werden. Ich werde eines auswählen.
Ressourcen-Hacker
Ich habe die neueste Version ( 5.1.7 ) von [AngusJ]: Resource Hacker heruntergeladen . Alle erforderlichen Informationen finden Sie auf dieser Seite (Befehlszeilenoptionen, Skripte, ...). In der folgenden exemplarischen Vorgehensweise werde ich zwei ausführbare Dateien (Laborratten) bearbeiten, die ich (aus offensichtlichen Gründen) in mein cwd kopiert habe :
Bevor ich weiter gehe, möchte ich diesen ResourceHacker erwähnen eine lustige Terminalausgabe hat hat und die folgenden Fragmente zum Kopieren / Einfügen etwas Verwirrung stiften können.
1. Setup
Dies ist eher ein vorbereitender Schritt, um sich mit der Umwelt vertraut zu machen und zu zeigen, dass es keine funky Geschäfte gibt, ...
Wie zu sehen ist, sind die ausführbaren Dateien in Ordnung, sie funktionieren einwandfrei und so sehen ihre Details (die uns wichtig sind) aus:
2. Ressourcen
Ressourcendateien sind Textdateien, die Ressourcen enthalten. Eine Ressource (vereinfacht) hat:
Weitere Informationen finden Sie unter [MS.Docs]: Informationen zu Ressourcendateien . Es gibt viele Tools (in den vorhandenen Antworten erwähnt), die die Bearbeitung von Ressourcendateien erleichtern, wie z.
Aber da es um Resource Hacker geht und:
Ich werde es für diesen Schritt verwenden (
-action extract
)Damit eine Ressource in eine EXE-Datei ( DLL , ...) eingebettet werden kann, muss sie in eine Binärform kompiliert werden , die in das PE- Format passt . Auch hier gibt es viele Tools, die dies erreichen können, aber wie Sie wahrscheinlich vermutet haben, werde ich mich an Resource Hacker (
-action compile
) halten.In Ihrem Fall ist das Speichern und Bearbeiten der Ressourcendatei nicht erforderlich, da die Datei bereits vorhanden ist. Ich habe dies nur zu Demonstrationszwecken getan. Darunter befindet sich die Ressourcendatei nach dem Ändern (und damit vor dem Kompilieren).
sample.rc :
3. Einbetten
Dies wird auch von Resource Hacker (
-action addoverwrite
) durchgeführt. Da die EXE-Dateien bereits kopiert sind, werde ich ihre Ressourcen an Ort und Stelle bearbeiten.Wie zu sehen ist , musste ich da kleinen Trick ( gainarie ) , wie kann ich nicht (zumindest glaube ich nicht , dass ich kann) , um das ändern .exe , während im Einsatz.
4. Testen
Dies ist eine optionale Phase, um Folgendes sicherzustellen:
Und ihre Details :
quelle
Es gibt eine Resource Tuner Console von Heaventools Software.
Weitere Informationen finden Sie speziell auf der Seite Ändern von Versionsvariablen und Aktualisieren der Versionsinformationen .
quelle
Ein bisschen spät zur Party, aber da ich danach gesucht habe (und es möglicherweise irgendwann wieder finden muss), habe ich Folgendes getan, um Version, Firmenname usw. in meine C ++ - DLL unter VS2013 Express aufzunehmen:
Hoffe das hilft!
quelle
Die obige Antwort von @DannyBeckett hat mir sehr geholfen,
Ich habe Folgendes in eine Batch-Datei eingefügt und es in demselben Ordner abgelegt, in dem sich ResourceHacker.exe und die EXE-Datei befinden, an der ich arbeite, und es funktioniert hervorragend. [Sie können es bearbeiten, um Ihren Bedürfnissen zu entsprechen]
[Als Randnotiz habe ich Resource Hacker auch verwendet, um die res-Datei zu kompilieren, nicht GoRC]
quelle
Sie können tatsächlich versuchen, FVIE über den Download-Link herunterzuladen und die Informationen für jede EXE-Datei zu bearbeiten.
(ODER)
Sie können StampVer - Win32 Version Resource Stamping von Download Link herunterladen, was für Windows EXE-Dateien sehr nützlich ist.
(ODER)
Sie können ein Befehlstool namens RCEDIT verwenden . Laden Sie den Link von Github Source herunter und erstellen Sie ihn mit Visual Studio 2015. Anschließend verfügen Sie über bestimmte Befehle zum Ändern der Version von EXE-Dateien. Unter dem Link "Dokumente" finden Sie verschiedene verfügbare Befehle.
quelle
Dies ist das beste Tool, das ich für diesen Job gesehen habe. Es ermöglicht die vollständige Kontrolle über alle Dateiressourcen, einschließlich VersionInfo.
Siehe: ResourceEditor von Anders Melander .
quelle