Comment définir les informations de version pour un .exe, .dll existant?

113

Dans le cadre de notre processus de construction, j'ai besoin de définir les informations de version pour tous nos binaires compilés. Certains binaires ont déjà des informations de version (ajoutées au moment de la compilation) et d'autres pas.

Je souhaite pouvoir appliquer les informations suivantes:

  • Nom de la compagnie
  • Copyright
  • Nom du produit
  • Description du produit
  • Version du fichier
  • Version de produit

Tous ces attributs sont spécifiés par le script de construction et doivent être appliqués après la compilation. Ce sont des binaires standard (et non des assemblys) compilés avec C ++ Builder 2007.

Comment puis-je faire ceci?

Carl
la source
pour quoi utiliser ResourceHacker ? comment exactement la tâche est définie? dans quel problème utiliser la UpdateResourcefonction, si la version de mise à jour de la tâche dans le
PE
Essayez ceci: alternativeto.net/software/xn-resource-editor , je pense qu'il existe des outils de rétro-ingénierie pour le faire
i_thamary

Réponses:

59

Bien qu'il ne s'agisse pas d'un processus par lots, Visual Studio peut également ajouter / modifier des ressources de fichiers.

Utilisez simplement Fichier-> Ouvrir-> Fichier sur le .EXE ou .DLL. C'est pratique pour corriger les informations de version après la construction ou pour les ajouter à des fichiers qui ne disposent pas de ces ressources pour commencer.

UweBaemayr
la source
8
Cela a parfaitement fonctionné lorsque je l'ai essayé. Pour un fichier dont les informations de version sont complètement manquantes: après avoir ouvert la DLL dans Visual Studio, accédez à Edition> Ajouter une ressource> Version et cliquez sur Nouveau. Ensuite, dans le nouvel onglet Version, modifiez FILEVERSION et PRODUCTVERSION, CompanyName, etc. Enregistrez les fichiers et vous êtes prêt!
twasbrillig
2
@UweBaemayr. la réponse que vous avez citée je veux poser la même question que pouvons-nous l'automatiser comme exactement je fais la même création de poste et je veux l'automatiser. Mais comment ?
SteveScm
1
Pour mon ancienne DLL Delphi win32, cela ne fonctionne pas. Bien que les informations de la DLL soient correctement modifiées, lors de l'exécution de vérifications de cohérence, vous vous rendez compte qu'elle est corrompue.
sthiers
3
J'ai essayé (ajouter les informations de version) sur Windows 8, VS 2015 et tout va bien dans l'Explorateur Windows, sauf ... l'exécutable ne démarre plus.
Liviu
36

Contrairement à de nombreuses autres réponses, cette solution utilise un logiciel totalement gratuit.

Tout d'abord, créez un fichier appelé Resources.rccomme ceci:

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
    }
}

Ensuite, utilisez GoRC pour le compiler dans un .resfichier en utilisant:

GoRC /fo Resources.res Resources.rc

(voir mon commentaire ci-dessous pour un miroir de GoRC.exe)

Ensuite, utilisez Resource Hacker en mode CLI pour l'ajouter à un existant .exe:

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

C'est tout!

Danny Beckett
la source
1
@CharlesB Je l'ai remarqué moi-même, mais c'est le bon lien. On dirait que quelqu'un a oublié de payer son hébergeur! Voici le binaire, je l'ai mis en miroir sur mon compte Assembla public: assembla.com/code/danny-beckett/subversion/nodes/13/GoRC.exe
Danny Beckett
3
Vous pouvez également utiliser le compilateur de ressources Microsoft à la place de GoRC. Il est disponible avec le SDK Windows.
Développeur holistique
Bravo pour Resource Hacker, je l'ai utilisé sur la base de cette réponse et c'est un programme génial et génial. (aucune affinité avec le programme ou le fabricant ;-)
user2109254
@UweKeim Je ne l'ai pas utilisé depuis un moment, mais je suis presque sûr qu'ils sont nécessaires.
Danny Beckett
6
On dirait que la ligne de commande a un peu changé: ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.resEn outre, ResourceHacker peut compiler le fichier .rc lui-même:ResourceHacker.exe -open Version.rc -save Version.res -action compile
Yusuf Tarık Günaydın
23

Ou vous pouvez consulter le logiciel gratuit StampVer pour les fichiers Win32 exe / dll.
Cela ne changera que les versions du fichier et du produit si elles ont déjà une ressource de version. Il ne peut pas ajouter une ressource de version s'il n'en existe pas.

Ryan
la source
19

rcedit est relativement nouveau et fonctionne bien depuis la ligne de commande: 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"

Il existe également un module NPM qui l'enveloppe de JavaScript et une tâche Grunt au cas où vous utiliseriez Grunt.

un nerd payé
la source
5
notez que rcedit ne peut modifier que les ressources existantes et non en insérer de nouvelles
Bevan Collins
2
Ne fonctionne pas avec les archives 7zip sfx: / Coupe simplement la partie archive 7zip.
Mgamerz
1
essayé cela, continue de donner incapable de charger le fichier dans le même répertoire et semble que l'outil puisse dépendre de la configuration de l'hôte
Arijoon
Fonctionne avec le stub 7zS.sfx, la première partie avec le VERSIONINFO à l'intérieur que vous utilisez pour concaténer une archive auto-extractible. Vous pouvez également renommer manuellement 7zS.sfx dans 7zS.exe et le modifier dans Visual Studio, mais comme le numéro de version change pour chaque version, vous préférez un fichier de commandes contenant des instructions rcedit pour le définir.
AndresRohrAtlasInformatik
1
cet outil est très méchant, veuillez regarder ce bogue avant de l'appliquer sur vos binaires: github.com/electron/rcedit/issues/51
Brun
14

Et quelque chose comme ça?

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

Disponible ici avec toutes les sources .

filofel
la source
Verpatch a semblé créer une mauvaise ressource de version de produit pour moi (en utilisant l' /va /pvoption). La version apparaissait correctement dans l'Explorateur Windows mais le dernier caractère manquait lors de la récupération dans le code avec VerQueryValue. Pour réparer la mauvaise ressource, j'ai fait ceci: (1) Chargez la DLL dans Resource Hacker. (2) Affichez la ressource de version. (3) Compilez (modifiez quelque chose puis changez-le pour activer le bouton). (4) Enregistrez.
dan-gph
verpatch fonctionne très bien pour les versions x64 et x86 de mes DLL sur ma boîte de développement, mais dans le projet de construction apveyor, cela ne fonctionne que pour x64 et il ne fait absolument rien à la dll x86 - pas d'erreur non plus! des indices sur ce qui pourrait arriver? Je peux voir dans le journal appveyor que la commande verpatch est en cours d'exécution, aucune erreur, et la dll n'est pas remplacée d'une manière ou d'une autre et la fin n'a pas le cachet de version; pour x64 tout fonctionne bien dans toutes les situations. des indices s'il vous plaît?
Ovi
@ Ovi-Wan Kenobi: Je ne savais pas ce qu'était un convoyeur, mais selon votre description, cela me ressemble plus à un problème de convoyeur. Au pire, si cela est possible, préparez-vous pour un débogage dans l'environnement d'apveyor? ...
filofel
10

Il y a cet outil ChangeVersion [1]

Liste des fonctionnalités (du site Web):

  • interface de ligne de commande
  • prise en charge des fichiers .EXE, .DLL et .RES
  • mettre à jour FileVersion et ProductVersion en fonction d'un masque de version
  • ajouter / modifier / supprimer des chaînes de clé de version
  • ajuster les indicateurs de fichier (débogage, spécial, privé, etc.)
  • mettre à jour les fichiers de projet (.bdsproj | .bpr | .bpk | .dproj)
  • ajouter / modifier l'icône de l'application principale
  • utiliser le fichier ini avec la configuration
  • Prise en charge de Windows Vista (nécessite une élévation)
  • facile à intégrer dans un environnement de construction continu

Divulgation complète: Je connais le gars qui a écrit cet outil, je travaillais avec lui. Mais cela signifie aussi que je sais qu'il fabrique des logiciels de qualité;)


[1] le lien est mort. Il semble y avoir une version en miroir sur download.cnet.com .

Autre côté
la source
@Gareth J'ai ajouté un lien miroir. D'autre part, je doute que cette réponse ait une valeur sans aucune référence de travail.
Wolf
5
Le deuxième lien entraîne un outil expiré"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
Preet Sangha
2
Lors de son exécution en ligne de commande, il est dit "Modifier la version v2012.9.6.0 - (C) 2007-2012 The-Software-Box.com Cette version d'essai a expiré"
RDeveloper
10

Je le fais sans outil supplémentaire. Je viens d'ajouter les fichiers suivants à mon projet d'application Win32.

Un fichier d'en-tête qui définit certaines constantes que nous pouvons réutiliser sur notre fichier de ressources et même sur le code du programme. Nous n'avons besoin de maintenir qu'un seul fichier. Grâce à l'équipe Qt qui m'a montré comment le faire sur un projet Qt, cela fonctionne désormais également sur mon application Win32.

---- [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 [email protected]"
#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
user3016543
la source
2
Juste curieux; Comment avez-vous empêché Windows d'écraser votre fichier .rc chaque fois que vous changez une boîte de dialogue ou modifiez une ressource dans le projet? J'ai vu quelques articles comme celui-ci jusqu'à présent et il semble que cela fonctionnerait si vous ne deviez plus jamais modifier une ressource qui provoquerait une génération automatique par l'EDI.
shawn1874
@ shawn1874 - Inclut la ligne #include <windows.h>dans le resource.hfichier qui est ajouté automatiquement. Ce fichier n'est pas régénéré (notez en haut du fichier .rc qu'il indique que c'est du code généré et qu'il peut être modifié dans le concepteur).
CJBS
1
@CJBS qui ne répond pas à la question. Bien que cela puisse fonctionner, cela n'explique pas comment la réponse publiée pourrait fonctionner. Dans la réponse publiée, user3016543 inclut la version.h directement dans le fichier .rc. Il existe plusieurs façons de traiter l'écrasement du fichier .rc que je sais faire. Je remets seulement en question la façon dont cette réponse particulière est présentée parce qu'elle ne me semble pas juste.
shawn1874
Je suppose que cette méthode fonctionne pour lui parce que le composant en question n'a pas de composants de dialogue, donc le fichier n'est pas régénéré souvent ou jamais. Cependant, dans une application Windows avec des ressources de boîte de dialogue MFC, ce ne serait pas le cas.
shawn1874
1
Merci de me rappeler une technique que j'ai vue pour la première fois en action dans un fichier de ressources livré avec le SDK WinBatch Extender. Cela faisait si longtemps que j'en avais besoin que j'avais oublié la plupart des détails. Votre explication a tout ramené.
David A. Gray
8

verpatch est bon, mais ne gère pas les caractères unicode ...
essayez ResourceLib

user581430
la source
6

Il existe plusieurs outils, mentionnés par de nombreuses bonnes réponses, je vais en choisir un.

Pirate de ressources

J'ai téléchargé la dernière version ( 5.1.7 ) de [AngusJ]: Resource Hacker . Toutes les informations nécessaires se trouvent sur cette page (options de ligne de commande, scripts, ...). Dans la procédure pas à pas suivante, je vais utiliser 2 exécutables (rats de laboratoire) que j'ai copiés (pour des raisons évidentes) dans mon cwd :

  • ResourceHacker.exe : J'ai pensé qu'il serait intéressant de fonctionner sur lui-même
  • cmake.exe : exécutable aléatoire sans jeu d' informations de version (partie de l' installation v3.6.3 sur ma machine)

Avant d'aller plus loin, je tiens à mentionner que ResourceHacker a une sortie de terminal amusante et que les fragments copier / coller suivants peuvent générer un peu de confusion.

1. Configuration

Cela ressemble plus à une étape préliminaire, pour se familiariser avec l'environnement, pour montrer qu'il n'y a pas d'activité funky en cours, ...

e:\Work\Dev\StackOverflow\q000284258> sopr.bat
*** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ***

[prompt]> dir
 Volume in drive E is Work
 Volume Serial Number is 3655-6FED

 Directory of e:\Work\Dev\StackOverflow\q000284258

2019-01-28  20:09    <DIR>          .
2019-01-28  20:09    <DIR>          ..
2016-11-03  09:17         5,413,376 cmake.exe
2019-01-03  02:06         5,479,424 ResourceHacker.exe
2019-01-28  20:30               496 ResourceHacker.ini
               3 File(s)     10,893,296 bytes
               2 Dir(s)  103,723,261,952 bytes free

[prompt]> set PATH=%PATH%;c:\Install\x64\CMake\CMake\3.6.3\bin

[prompt]> .\cmake --help >nul 2>&1

[prompt]> echo %errorlevel%
0

[prompt]> .\ResourceHacker.exe -help

[prompt]>

==================================
Resource Hacker Command Line Help:
==================================

-help             : displays these abbreviated help instructions.
-help commandline : displays help for single commandline instructions
-help script      : displays help for script file instructions.




[prompt]> echo %errorlevel%
0

Comme on le voit, les exécutables sont OK, ils fonctionnent bien, et voici à quoi ressemblent leurs détails (dont nous nous soucions):

Img0-Initiale

2. Ressources

Les fichiers de ressources sont des fichiers texte contenant des ressources. Une ressource (simplifiée) a:

  • Nom
  • Type
  • Valeur

Pour plus de détails, consultez [MS.Docs]: À propos des fichiers de ressources . Il existe de nombreux outils (mentionnés dans les réponses existantes) qui facilitent l'édition des fichiers de ressources comme:

  • VStudio en crée un par défaut lors du démarrage d'un nouveau projet
  • On peut créer un tel fichier manuellement
  • Mais, puisqu'il s'agit de Resource Hacker , et:

    • Il est capable d'extraire des ressources d'un exécutable existant
    • Il contient des ressources intégrées (comme indiqué dans l'image précédente)

    Je vais l'utiliser pour cette étape ( -action extract)

Ensuite, pour qu'une ressource soit incorporée dans un .exe ( .dll , ...), elle doit être compilée sous une forme binaire, qui correspond au format PE . Encore une fois, il existe de nombreux outils qui peuvent y parvenir, mais comme vous l'avez probablement deviné, je vais m'en tenir à Resource Hacker ( -action compile).

[prompt]> :: Extract the resources into a file
[prompt]> .\ResourceHacker.exe -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con

[prompt]>

[28 Jan 2019, 20:58:03]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHacker.exe  -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Save    : e:\Work\Dev\StackOverflow\q000284258\sample.rc


Success!

[prompt]> :: Modify the resource file and set our own values
[prompt]>
[prompt]> :: Compile the resource file
[prompt]> .\ResourceHacker.exe -open .\sample.rc -save .\sample.res -action compile -log con

[prompt]>

[28 Jan 2019, 20:59:51]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHacker.exe  -open .\sample.rc -save .\sample.res -action compile -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\sample.rc
Save    : e:\Work\Dev\StackOverflow\q000284258\sample.res

Compiling: e:\Work\Dev\StackOverflow\q000284258\sample.rc
Success!

[prompt]> dir /b
cmake.exe
ResourceHacker.exe
ResourceHacker.ini
sample.rc
sample.res

Dans votre cas, l'enregistrement et l'édition du fichier de ressources ne seront pas nécessaires, car le fichier sera déjà présent, je l'ai juste fait à des fins de démonstration. En dessous se trouve le fichier de ressources après avoir été modifié (et donc avant d'être compilé).

sample.rc :

1 VERSIONINFO
FILEVERSION 3,1,4,1592
PRODUCTVERSION 2,7,1,8
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
    BLOCK "040904E4"
    {
        VALUE "CompanyName", "Cristi Fati\0"
        VALUE "FileDescription", "20190128 - SO q000284258 demo\0"
        VALUE "FileVersion", "3.1.4.1592\0"
        VALUE "ProductName", "Colonel Panic\0"
        VALUE "InternalName", "100\0"
        VALUE "LegalCopyright", "(c) Cristi Fati 1999-2999\0"
        VALUE "OriginalFilename", "ResHack\0"
        VALUE "ProductVersion", "2.7.1.8\0"
    }
}

BLOCK "VarFileInfo"
{
    VALUE "Translation", 0x0409 0x04E4  
}
}

3. Incorporer

Cela sera également effectué par Resource Hacker ( -action addoverwrite). Puisque les .exe sont déjà copiés, je vais modifier leurs ressources en place.

[prompt]> .\ResourceHacker.exe -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

[prompt]>

[28 Jan 2019, 21:17:19]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHacker.exe  -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\cmake.exe
Save    : e:\Work\Dev\StackOverflow\q000284258\cmake.exe
Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res

  Added: VERSIONINFO,1,1033

Success!

[prompt]> copy ResourceHacker.exe ResourceHackerTemp.exe
        1 file(s) copied.

[prompt]> .\ResourceHackerTemp.exe -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

[prompt]>

[28 Jan 2019, 21:19:29]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHackerTemp.exe  -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Save    : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res

  Modified: VERSIONINFO,1,1033

Success!

[prompt]> del /f /q ResourceHackerTemp.*

[prompt]> dir
 Volume in drive E is Work
 Volume Serial Number is 3655-6FED

 Directory of e:\Work\Dev\StackOverflow\q000284258

2019-01-28  21:20    <DIR>          .
2019-01-28  21:20    <DIR>          ..
2016-11-03  09:17         5,414,400 cmake.exe
2019-01-03  02:06         5,479,424 ResourceHacker.exe
2019-01-28  21:17               551 ResourceHacker.ini
2019-01-28  20:05             1,156 sample.rc
2019-01-28  20:59               792 sample.res
               5 File(s)     10,896,323 bytes
               2 Dir(s)  103,723,253,760 bytes free

Comme on le voit, j'ai dû faire un petit truc ( gainarie ) car je ne peux pas (du moins je ne pense pas pouvoir) modifier le .exe pendant son utilisation.

4. Test

Il s'agit d'une phase facultative, pour s'assurer que:

  • Les exécutables fonctionnent toujours (ils n'ont pas été perturbés dans le processus)
  • Les ressources ont été ajoutées / mises à jour
[prompt]> .\cmake --help >nul 2>&1

[prompt]> echo %errorlevel%
0

[prompt]> .\ResourceHacker.exe -help

[prompt]>

==================================
Resource Hacker Command Line Help:
==================================

-help             : displays these abbreviated help instructions.
-help commandline : displays help for single commandline instructions
-help script      : displays help for script file instructions.




[prompt]> echo %errorlevel%
0

Et leurs détails :

Img1-Final

CristiFati
la source
@ColonelPanic: Merci!
CristiFati
Très belle réponse. Malheureusement, ResourceHacker n'est plus maintenu et manque de mémoire lors de la tentative de modification d'un gros fichier EXE (j'ai eu l'erreur en essayant d'ouvrir un exe de 3 Go).
Lews Therin
@LewsTherin: La dernière version (également utilisée par la réponse) date de 2019/01, donc je dirais qu'elle est assez maintenue. Le problème est que c'est 32 bits . Vous pouvez contacter les auteurs pour demander un 64 bits version (je suppose que puisqu'ils ont déjà le code, il ne serait pas difficile de le construire pour 64 bits ).
CristiFati
3

Un peu tard à la fête, mais comme je le cherchais (et j'aurais peut-être besoin de le retrouver un jour), voici ce que j'ai fait pour inclure la version, le nom de l'entreprise, etc. dans ma DLL C ++ sous VS2013 Express:

  1. Création et modification d'un fichier dllproj.rc, comme indiqué précédemment.
  2. Ajout de la ligne «rc.exe dllproj.rc» comme étape de pré-génération dans le projet DLL.
  3. Ajout de dllproj.res au dossier de ressources du projet.

J'espère que cela t'aides!

Tom Gordon
la source
3

la réponse ci - dessus de @DannyBeckett m'a beaucoup aidé,

J'ai mis ce qui suit dans un fichier batch et je le place dans le même dossier où se trouvent ResourceHacker.exe et l'EXE sur lequel je travaille et cela fonctionne très bien. [vous pouvez le modifier en fonction de vos besoins]

    @echo off
    :start1
    set /p newVersion=Enter version number [?.?.?.?]:
    if "%newVersion%" == "" goto start1
    :start2
    set /p file=Enter EXE name [for 'program.exe' enter 'program']:
    if "%file%" == "" goto start2
    for /f "tokens=1-4 delims=." %%a in ('echo %newVersion%') do (set ResVersion=%%a,%%b,%%c,%%d)
    (
    echo:VS_VERSION_INFO VERSIONINFO
    echo:    FILEVERSION    %ResVersion%
    echo:    PRODUCTVERSION %ResVersion%
    echo:{
    echo:    BLOCK "StringFileInfo"
    echo:    {
    echo:        BLOCK "040904b0"
    echo:        {
    echo:            VALUE "CompanyName",        "MyCompany\0"
    echo:            VALUE "FileDescription",    "TestFile\0"
    echo:            VALUE "FileVersion",        "%newVersion%\0"
    echo:            VALUE "LegalCopyright",     "COPYRIGHT © 2019 MyCompany\0"
    echo:            VALUE "OriginalFilename",   "%file%.exe\0"
    echo:            VALUE "ProductName",        "Test\0"
    echo:            VALUE "ProductVersion",     "%newVersion%\0"
    echo:        }
    echo:    }
    echo:    BLOCK "VarFileInfo"
    echo:    {
    echo:        VALUE "Translation", 0x409, 1200
    echo:    }
    echo:}
    ) >Resources.rc     &&      echo setting Resources.rc
    ResourceHacker.exe -open resources.rc -save resources.res -action compile -log CONSOLE
    ResourceHacker -open "%file%.exe" -save "%file%Res.exe" -action addoverwrite -resource "resources.res"  -log CONSOLE
    ResourceHacker.exe -open "%file%Res.exe" -save "%file%Ico.exe" -action addskip -res "%file%.ico" -mask ICONGROUP,MAINICON, -log CONSOLE
    xCopy /y /f "%file%Ico.exe" "%file%.exe"
    echo.
    echo.
    echo your compiled file %file%.exe is ready
    pause

[en remarque, j'ai également utilisé un pirate de ressources pour compiler le fichier res, pas GoRC]

RDR
la source
2

Vous pouvez en fait essayer de télécharger FVIE à partir du lien de téléchargement et essayer de modifier les informations de n'importe quel fichier .exe.

(OU)

Vous pouvez télécharger StampVer - Win32 Version Resource Stamping à partir du lien de téléchargement qui est vraiment utile pour les fichiers Windows .exe.

(OU)

Vous pouvez utiliser un outil de commande appelé RCEDIT . Téléchargez à partir du lien Github Source , puis créez à l'aide de Visual Studio 2015, puis vous disposez de commandes spécifiques pour modifier la version des fichiers .exe. Voir le lien Docs pour les différentes commandes disponibles.

Subash J
la source
1

C'est le meilleur outil que j'ai vu pour le travail, permet un contrôle total sur toutes les ressources de fichiers, VersionInfo inclus.

Voir: ResourceEditor par Anders Melander .

J Collins
la source
1
Le téléchargement de l'éditeur de ressources (0 octet) est interrompu.
Jack