¿Cómo configuro la información de versión para un .exe, .dll existente?

113

Como parte de nuestro proceso de compilación, necesito configurar la información de la versión para todos nuestros binarios compilados. Algunos de los binarios ya tienen información de la versión (agregada en el momento de la compilación) y otros no.

Quiero poder aplicar la siguiente información:

  • nombre de empresa
  • Aviso de copyright
  • nombre del producto
  • Descripción del producto
  • Versión del archivo
  • version del producto

Todos estos atributos están especificados por el script de compilación y deben aplicarse después de la compilación. Estos son binarios estándar (no ensamblados) compilados con C ++ Builder 2007.

¿Cómo puedo hacer esto?

Carl
fuente
¿para qué uso ResourceHacker ? ¿Cómo se establece exactamente la tarea? en qué problema usa la UpdateResourcefunción, si la tarea actualiza la versión en el pe existente
RbMm
Pruebe esto: Alternativeto.net/software/xn-resource-editor , creo que hay herramientas de ingeniería inversa para hacer esto
i_thamary

Respuestas:

59

Si bien no es un proceso por lotes, Visual Studio también puede agregar / editar recursos de archivos.

Simplemente use Archivo-> Abrir-> Archivo en .EXE o .DLL. Esto es útil para corregir la información de la versión después de la compilación o agregarla a archivos que no tienen estos recursos para empezar.

UweBaemayr
fuente
8
Esto funcionó perfectamente cuando lo probé. Para un archivo al que le falta información de la versión por completo: después de abrir la DLL en Visual Studio, vaya a Editar> Agregar recurso> Versión y haga clic en Nuevo. Luego, en la nueva pestaña Versión, cambie FILEVERSION y PRODUCTVERSION, CompanyName, etc. ¡Guarde los archivos y listo!
twasbrillig
2
@UweBaemayr. La respuesta que citó quiero preguntar sobre la misma ya que podemos automatizarlo exactamente como hago la misma compilación de publicaciones y quiero automatizarla. Pero cómo ?
SteveScm
1
Para mi viejo Delphi win32 dll esto no funciona. Aunque la información de la dll se haya modificado correctamente, al ejecutar comprobaciones de cordura te das cuenta de que está dañada.
sthiers
3
Probé esto (agregar información de la versión) en Windows 8, VS 2015 y todo está bien en el Explorador de Windows, excepto que ... el ejecutable ya no se iniciará.
Liviu
36

A diferencia de muchas de las otras respuestas, esta solución utiliza software completamente gratuito.

En primer lugar, cree un archivo llamado Resources.rcasí:

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

A continuación, use GoRC para compilarlo en un .resarchivo usando:

GoRC /fo Resources.res Resources.rc

(mira mi comentario a continuación para ver un espejo de GoRC.exe)

Luego use Resource Hacker en modo CLI para agregarlo a un existente .exe:

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

¡Eso es!

Danny Beckett
fuente
1
@CharlesB Lo noté yo mismo, pero es el enlace correcto. ¡Parece que alguien se olvidó de pagarle a su proveedor de alojamiento web! Aquí está el binario, lo he reflejado en mi cuenta pública de Assembla: assembla.com/code/danny-beckett/subversion/nodes/13/GoRC.exe
Danny Beckett
3
También puede utilizar el compilador de recursos de Microsoft en lugar de GoRC. Está disponible con el SDK de Windows.
Desarrollador holístico
Aprobado por Resource Hacker, lo usé basado en esta respuesta y es brillante, gran programa. (sin afinidad con el programa o el creador ;-)
user2109254
@UweKeim No he usado esto por un tiempo, pero estoy bastante seguro de que son necesarios.
Danny Beckett
6
Parece que la línea de comandos ha cambiado un poco: ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.resAdemás, ResourceHacker puede compilar el archivo .rc en sí mismo:ResourceHacker.exe -open Version.rc -save Version.res -action compile
Yusuf Tarık Günaydın
23

O puede consultar el programa gratuito StampVer para archivos exe / dll de Win32.
Sin embargo, solo cambiará las versiones del archivo y del producto si ya tienen un recurso de versión. No puede agregar un recurso de versión si no existe uno.

Ryan
fuente
19

rcedit es relativamente nuevo y funciona bien desde la línea de comandos: 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"

También hay un módulo NPM que lo envuelve desde JavaScript y una tarea Grunt en caso de que esté usando Grunt.

un nerd pagado
fuente
5
tenga en cuenta que rcedit solo puede modificar los recursos existentes, no insertar nuevos
Bevan Collins
2
No funciona con archivos 7zip sfx: / Simplemente corta la parte del archivo 7zip.
Mgamerz
1
intenté esto, sigue dando incapaz de cargar el archivo cuando está en el mismo directorio y parece que la herramienta puede depender de la configuración del host
Arijoon
Funciona con el stub 7zS.sfx, la primera parte con VERSIONINFO adentro que se usa para concanear un archivo autoextraíble. Manualmente, también puede cambiar el nombre de 7zS.sfx en 7zS.exe y editarlo en Visual Studio, pero dado que el número de versión cambia para cada compilación, prefiere un archivo por lotes con declaraciones rcedit dentro para configurarlo.
AndresRohrAtlasInformatik
1
esta herramienta es muy desagradable, mire este error antes de aplicarlo en sus binarios: github.com/electron/rcedit/issues/51
Brun
14

¿Y algo como esto?

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

Disponible aquí con fuentes completas .

filofel
fuente
Verpatch pareció crearme un recurso de versión de producto incorrecta (usando la /va /pvopción). La versión apareció correctamente en el Explorador de Windows, pero faltaba el último carácter cuando se recuperó en el código con VerQueryValue. Para arreglar el recurso defectuoso, hice esto: (1) Cargue la DLL en Resource Hacker. (2) Ver el recurso de la versión. (3) Compilar (modificar algo y luego volver a cambiarlo para habilitar el botón). (4) Guardar.
dan-gph
verpatch funciona muy bien para las versiones x64 y x86 de mis DLL en mi caja de desarrollo, sin embargo, en un proyecto de compilación de apveyor, solo funciona para x64 y no le hace absolutamente nada a la dll x86, ¡tampoco hay error! ¿Alguna pista de lo que podría pasar? Puedo ver en el registro de appveyor que el comando verpatch se está ejecutando, no hay errores, y el dll no se reemplaza de alguna manera y al final no tiene el sello de versión; para x64 todo funciona bien en todas las situaciones. alguna pista por favor?
Ovi
@ Ovi-Wan Kenobi: No sabía qué era un cedente, pero según su descripción, me parece más un problema de cedente. En el peor de los casos, si eso es posible, ¿prepararse para una depuración en el entorno de un cebador? ...
filofel
10

Existe esta herramienta ChangeVersion [1]

Lista de características (del sitio web):

  • interfaz de línea de comandos
  • soporte para archivos .EXE, .DLL y .RES
  • actualice FileVersion y ProductVersion según una máscara de versión
  • agregar / cambiar / eliminar cadenas de claves de versión
  • ajustar marcas de archivo (depuración, especial, privado, etc.)
  • actualizar archivos de proyecto (.bdsproj | .bpr | .bpk | .dproj)
  • agregar / cambiar el icono de la aplicación principal
  • usar el archivo ini con la configuración
  • Compatibilidad con Windows Vista (necesita elevación)
  • fácil de integrar en un entorno de construcción continuo

Divulgación completa: conozco al tipo que escribió esta herramienta, solía trabajar con él. Pero esto también significa que sé que hace software de calidad;)


[1] el enlace está muerto. Parece haber una versión reflejada en download.cnet.com .

Otro lado
fuente
@Gareth Agregué un enlace espejo. Al otro lado, dudo que esta respuesta tenga algún valor sin ninguna referencia de trabajo.
Wolf
5
El segundo enlace da como resultado una herramienta caducada"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
Preet Sangha
2
Cuando se ejecuta en la línea de comandos, dice "Cambiar versión v2012.9.6.0 - (C) 2007-2012 The-Software-Box.com Esta versión de prueba ha caducado"
RDeveloper
10

Lo estoy haciendo sin herramientas adicionales. Acabo de agregar los siguientes archivos a mi proyecto de aplicación Win32.

Un archivo de encabezado que define algunas constantes que podemos reutilizar en nuestro archivo de recursos e incluso en el código del programa. Solo necesitamos mantener un archivo. Gracias al equipo de Qt que me mostró cómo hacerlo en un proyecto Qt, ahora también funciona en mi aplicación 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
usuario3016543
fuente
2
Sólo curioso; ¿Cómo impidió que Windows sobrescribiera su archivo .rc cada vez que cambiaba un cuadro de diálogo o modificaba cualquier recurso del proyecto? He visto un par de artículos como este hasta ahora y parece que funcionaría si nunca más tuviera que cambiar un recurso que causaría la generación automática por parte del IDE.
shawn1874
@ shawn1874: incluye la línea #include <windows.h>en el resource.harchivo que se agrega automáticamente. Ese archivo no se regenera (tenga en cuenta que en la parte superior del archivo .rc indica su código generado y se puede modificar en el diseñador).
CJBS
1
@CJBS que no responde la pregunta. Aunque eso podría funcionar, no explica cómo podría funcionar la respuesta publicada. En la respuesta publicada, user3016543 incluye version.h directamente dentro del archivo .rc. Hay varias formas de lidiar con la sobrescritura del archivo .rc que sé cómo hacer. Solo estoy cuestionando la forma en que se muestra esta respuesta en particular porque no me parece correcta.
shawn1874
Supongo que ese método le funciona porque el componente en cuestión no tiene componentes de diálogo, por lo que el archivo no se regenera a menudo ni nunca. Sin embargo, en una aplicación de Windows con recursos de diálogo MFC, ese no sería el caso.
shawn1874
1
Gracias por recordarme una técnica que vi por primera vez en acción en un archivo de recursos que se envió con el WinBatch Extender SDK. Había pasado tanto tiempo desde que lo necesitaba que había olvidado la mayoría de los detalles. Tu explicación lo trajo todo de vuelta.
David A. Gray
8

verpatch es bueno, pero no maneja caracteres Unicode ...
prueba ResourceLib

user581430
fuente
6

Hay varias herramientas, mencionadas por muchas respuestas excelentes, elegiré una.

Hacker de recursos

Descargué la última versión ( 5.1.7 ) de [AngusJ]: Resource Hacker . Toda la información necesaria se puede encontrar en esa página (opciones de línea de comandos, scripts, ...). En el siguiente tutorial voy a operar en 2 ejecutables (ratas de laboratorio) que (por razones obvias) he copiado en mi cwd :

  • ResourceHacker.exe : pensé que sería interesante operar sobre sí mismo
  • cmake.exe : ejecutable aleatorio sin información de versión establecida (parte de la instalación v3.6.3 en mi máquina)

Antes de continuar, quiero mencionar que ResourceHacker tiene una salida de terminal divertida , y los siguientes fragmentos de copiar / pegar pueden generar un poco de confusión.

1. Configuración

Esto es más como un paso preliminar, para familiarizarse con el medio ambiente, para demostrar que no hay negocios extravagantes, ...

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

Como se ve, los ejecutables están bien, funcionan bien y así es como se ven sus Detalles (que nos preocupan):

Img0-Inicial

2. Recursos

Los archivos de recursos son archivos de texto que contienen recursos. Un recurso (simplificado) tiene:

  • Nombre
  • Tipo
  • Valor

Para obtener más detalles, consulte [MS.Docs]: Acerca de los archivos de recursos . Hay muchas herramientas (mencionadas en las respuestas existentes) que facilitan la edición de archivos de recursos como:

  • VStudio crea uno predeterminado al iniciar un nuevo proyecto
  • Uno puede crear un archivo de este tipo manualmente
  • Pero, dado que se trata de Resource Hacker y:

    • Es capaz de extraer recursos de un ejecutable existente.
    • Tiene recursos incrustados en él (como se muestra en la imagen anterior)

    Lo voy a usar para este paso ( -action extract)

A continuación, para que un recurso se incruste en un .exe ( .dll , ...), debe compilarse en un formato binario, que se ajuste al formato PE . Nuevamente, hay muchas herramientas que pueden lograr esto, pero como probablemente adivinaste, me quedaré con 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

En su caso, no será necesario guardar y editar el archivo de recursos, ya que el archivo ya estará presente, solo lo hice para fines de demostración. Debajo está el archivo de recursos después de ser modificado (y por lo tanto antes de ser compilado).

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. Insertar

Esto también lo realizará Resource Hacker ( -action addoverwrite). Como los .exe ya están copiados, editaré sus recursos en su lugar.

[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

Como se vio, tuve que hacer un pequeño truco ( gainarie ) ya que no puedo (al menos no creo que pueda) modificar el .exe mientras está en uso.

4. Prueba

Esta es una fase opcional, para asegurarse de que:

  • Los ejecutables aún funcionan (no se estropearon en el proceso)
  • Los recursos se han agregado / actualizado
[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

Y sus detalles :

Img1-Final

CristiFati
fuente
@ColonelPanic: ¡Gracias!
CristiFati
Muy buena respuesta. Desafortunadamente, ResourceHacker ya no se mantiene y se queda sin memoria al intentar editar un archivo EXE grande (recibí el error al intentar abrir un exe de 3GB).
Lews Therin
@LewsTherin: La última versión (también utilizada por la respuesta) es de 2019/01, por lo que diría que está bastante mantenida. El problema es que es de 32 bits . Puede ponerse en contacto con los autores para solicitar una versión de 64 bits (supongo que, dado que ya tienen el código, no sería difícil construirlo para 64 bits ).
CristiFati
3

Un poco tarde para la fiesta, pero como lo estaba buscando (y podría necesitar encontrarlo nuevamente en algún momento), esto es lo que hice para incluir la versión, el nombre de la empresa, etc.en mi DLL de C ++ bajo VS2013 Express:

  1. Creó y editó un archivo dllproj.rc, como se indicó anteriormente.
  2. Se agregó la línea "rc.exe dllproj.rc" como paso previo a la compilación en el proyecto DLL.
  3. Se agregó dllproj.res a la carpeta de recursos del proyecto.

¡Espero que esto ayude!

Tom Gordon
fuente
3

la respuesta anterior de @DannyBeckett me ayudó mucho,

Pongo lo siguiente en un archivo por lotes y lo coloco en la misma carpeta donde se encuentran ResourceHacker.exe y el EXE en el que trabajo y funciona excelente. [puede editarlo para que se ajuste a sus necesidades]

    @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

[como nota al margen utilicé el hacker de recursos también para compilar el archivo res, no GoRC]

RDR
fuente
2

De hecho, puede intentar descargar FVIE desde el enlace de descarga e intentar editar la información de cualquier archivo .exe.

(O)

Puede descargar StampVer - Win32 Version Resource Stamping desde el enlace de descarga, que es realmente útil para archivos .exe de Windows.

(O)

Puede utilizar una herramienta de comando llamada RCEDIT . Descargue desde el enlace de Github Source y luego compile usando Visual Studio 2015 y luego tendrá comandos específicos para cambiar la versión de los archivos .exe. Consulte el enlace de Documentos para ver varios comandos disponibles.

Subash J
fuente
1

Esta es la mejor herramienta que he visto para el trabajo, permite un control total sobre todos los recursos de archivos, incluido VersionInfo.

Ver: ResourceEditor por Anders Melander .

J Collins
fuente
1
La descarga del Editor de recursos (0 bytes) está interrumpida.
Jack