Frage Wie lege ich die Versionsinformationen für eine vorhandene .exe, .dll fest?


Als Teil unseres Build-Prozesses muss ich die Versionsinformationen für alle kompilierten Binärdateien festlegen. Einige der Binärdateien verfügen bereits über Versionsinformationen (zur Kompilierzeit hinzugefügt) und andere nicht.

Ich möchte die folgenden Informationen anwenden können:

  • Name der Firma
  • Urheberrechtshinweis
  • Produktname
  • Produktbeschreibung
  • Dateiversion
  • Produktversion

Alle diese Attribute werden vom Buildskript angegeben und müssen nach dem Kompilieren angewendet werden. Dies sind Standardbinärdateien (keine Assemblies), die mit C ++ Builder 2007 kompiliert wurden.

Wie kann ich das machen?


75
2017-11-12 15:16


Ursprung


Antworten:


Obwohl es sich nicht um einen Stapelverarbeitungsprozess handelt, kann Visual Studio auch Dateiressourcen hinzufügen / bearbeiten.

Verwenden Sie einfach Datei-> Öffnen-> Datei auf der .EXE oder .DLL. Dies ist praktisch, um Versionsinformationen nach dem Build zu korrigieren oder um sie zu Dateien hinzuzufügen, die nicht über diese Ressourcen verfügen.


38
2017-07-15 19:38



Im Gegensatz zu vielen anderen Antworten verwendet diese Lösung völlig freie Software.

Erstellen Sie zuerst eine Datei namens Resources.rc so was:

VS_VERSION_INFO VERSIONINFO
    FILEVERSION    1,0,0,0
    PRODUCTVERSION 1,0,0,0
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904b0"
        {
            VALUE "CompanyName",        "ACME Inc.\0"
            VALUE "FileDescription",    "MyProg\0"
            VALUE "FileVersion",        "1.0.0.0\0"
            VALUE "LegalCopyright",     " 2013 ACME Inc. All Rights Reserved\0"
            VALUE "OriginalFilename",   "MyProg.exe\0"
            VALUE "ProductName",        "My Program\0"
            VALUE "ProductVersion",     "1.0.0.0\0"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x409, 1200
    }
}

Als nächstes benutze GoRC um es zu kompilieren .res Datei mit:

GoRC /fo Resources.res Resources.rc

(Siehe meinen Kommentar unten für einen Spiegel von GoRC.exe)

Dann benutze Ressourcen Hacker im CLI-Modus, um es zu einem vorhandenen hinzuzufügen .exe:

ResHacker -add MyProg.exe, MyProg.exe, Resources.res,,,

Das ist es!


21
2017-09-17 00:37



Oder Sie könnten die Freeware ausprobieren StampVer für Win32-Exe / DLL-Dateien.
Es wird nur die Datei- und Produktversionen ändern, wenn sie bereits eine Versionsressource haben. Es kann keine Versionsressource hinzufügen, wenn eine nicht vorhanden ist.


21
2018-04-30 18:12



Was ist mit so etwas?

verpatch /va foodll.dll %VERSION% %FILEDESCR% %COMPINFO% %PRODINFO% %BUILDINFO%

Verfügbar hier mit vollständigen Quellen.


13
2018-01-21 18:12



rcedit ist relativ neu und funktioniert gut über die Befehlszeile: https://github.com/atom/rcedit

$ rcedit "path-to-exe-or-dll" --set-version-string "Comments" "This is an exe"
$ rcedit "path-to-exe-or-dll" --set-file-version "10.7"
$ rcedit "path-to-exe-or-dll" --set-product-version "10.7"

Es gibt auch ein NPM-Modul was es von JavaScript und a umschließt Grunt Aufgabe falls du Grunt benutzt.


11
2018-02-03 22:26



Da ist dieses Werkzeug Änderungsversion  [1]

Liste der Funktionen (von der Website):

  • Befehlszeilenschnittstelle
  • Unterstützung für .EXE-, .DLL- und .RES-Dateien
  • Aktualisieren Sie FileVersion und ProductVersion basierend auf einer Versionsmaske
  • Hinzufügen / Ändern / Entfernen von Versionsschlüsselzeichenfolgen
  • Datei-Flags anpassen (Debug, Spezial, Privat usw.)
  • Projektdateien aktualisieren (.bdsproj | .bpr | .bpk | .dproj)
  • Hauptanwendungssymbol hinzufügen / ändern
  • Verwenden Sie die INI-Datei mit der Konfiguration
  • Windows Vista-Unterstützung (benötigt Erhöhung)
  • einfach in eine kontinuierliche Build-Umgebung zu integrieren

Vollständige Offenlegung: Ich kenne den Typen, der dieses Werkzeug geschrieben hat, ich habe früher mit ihm gearbeitet. Aber das bedeutet auch, dass ich weiß, dass er qualitativ hochwertige Software macht;)


[1] Die Verbindung ist tot. Es scheint eine gespiegelte Version zu geben download.cnet.com.


10
2017-11-12 15:47



Verpatch ist gut, aber nicht mit Unicode-Zeichen ...
Versuchen Ressourcenliste


8
2018-01-19 12:44



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 dem Qt-Team, das mir gezeigt hat, wie man es in einem Qt-Projekt macht, funktioniert es jetzt auch in meiner Win32-App.

---- [version.h] ----

#ifndef VERSION_H
#define VERSION_H

#define VER_FILEVERSION             0,3,0,0
#define VER_FILEVERSION_STR         "0.3.0.0\0"

#define VER_PRODUCTVERSION          0,3,0,0
#define VER_PRODUCTVERSION_STR      "0.3.0.0\0"

#define VER_COMPANYNAME_STR         "IPanera"
#define VER_FILEDESCRIPTION_STR     "Localiza archivos duplicados"
#define VER_INTERNALNAME_STR        "MyProject"
#define VER_LEGALCOPYRIGHT_STR      "Copyright 2016 ipanera@gmail.com"
#define VER_LEGALTRADEMARKS1_STR    "All Rights Reserved"
#define VER_LEGALTRADEMARKS2_STR    VER_LEGALTRADEMARKS1_STR
#define VER_ORIGINALFILENAME_STR    "MyProject.exe"
#define VER_PRODUCTNAME_STR         "My project"

#define VER_COMPANYDOMAIN_STR       "www.myurl.com"

#endif // VERSION_H

---- [MyProjectVersion.rc] ----

#include <windows.h>
#include "version.h"

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_PRODUCTVERSION
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",        VER_COMPANYNAME_STR
            VALUE "FileDescription",    VER_FILEDESCRIPTION_STR
            VALUE "FileVersion",        VER_FILEVERSION_STR
            VALUE "InternalName",       VER_INTERNALNAME_STR
            VALUE "LegalCopyright",     VER_LEGALCOPYRIGHT_STR
            VALUE "LegalTrademarks1",   VER_LEGALTRADEMARKS1_STR
            VALUE "LegalTrademarks2",   VER_LEGALTRADEMARKS2_STR
            VALUE "OriginalFilename",   VER_ORIGINALFILENAME_STR
            VALUE "ProductName",        VER_PRODUCTNAME_STR
            VALUE "ProductVersion",     VER_PRODUCTVERSION_STR
        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

4
2018-02-16 10:06



Es gibt Ressourcen-Tuner-Konsole von Heaventools Software.

Resource Tuner Console ist ein Befehlszeilentool, mit dem Entwickler die Bearbeitung verschiedener Ressourcentypen in zahlreichen ausführbaren Windows 32- und 64-Bit-Dateien automatisieren können.

Siehe speziell die Ändern von Versionsvariablen und Aktualisieren der Versionsinformationen Seite für weitere Details.


2
2017-07-10 00:17