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


Como parte de nuestro proceso de compilación, necesito establecer la información de la versión para todos nuestros binarios compilados. Algunos de los binarios ya tienen información de versión (agregada en tiempo de 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?


75
2017-11-12 15:16


origen


Respuestas:


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 arreglar la información de la versión después de la compilación o para agregarla a los archivos que no tienen estos recursos para empezar.


38
2017-07-15 19:38



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

En primer lugar, crea un archivo llamado Resources.rc Me gusta esto:

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

Luego, usa GoRC compilarlo a .res archivo usando:

GoRC /fo Resources.res Resources.rc

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

Entonces usa Hacker de recursos en modo CLI para agregarlo a un existente .exe:

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

¡Eso es!


21
2017-09-17 00:37



O puedes echarle un vistazo al freeware StampVer para archivos Win32 exe / dll.
Solo cambiará el archivo y las versiones del producto aunque ya tengan un recurso de versión. No puede agregar un recurso de versión si no existe uno.


21
2018-04-30 18:12



¿Qué tal algo así?

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

Disponible aquí con fuentes completas.


13
2018-01-21 18:12



Rcedit es relativamente nuevo y funciona bien desde la línea de comando: 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 de NPM que lo envuelve desde JavaScript y un Grunt tarea en caso de que estés usando Grunt.


11
2018-02-03 22:26



Hay esta herramienta ChangeVersion  [1]

Lista de características (del sitio web):

  • interfaz de línea de comando
  • soporte para archivos .EXE, .DLL y .RES
  • actualizar FileVersion y ProductVersion en base a una máscara de versión
  • agregar / cambiar / eliminar cadenas de teclas de versión
  • ajustar las banderas del archivo (depuración, especial, privado, etc.)
  • actualizar archivos de proyecto (.bdsproj | .bpr | .bpk | .dproj)
  • agregar / cambiar el ícono de la aplicación principal
  • usar archivo ini con configuración
  • Soporte de Windows Vista (necesita elevación)
  • fácil de integrar en un entorno de construcción continua

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


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


10
2017-11-12 15:47



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


8
2018-01-19 12:44



Lo estoy haciendo sin una herramienta adicional. 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 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



Ahi esta Consola sintonizador de recursos del software Heaventools.

Resource Tuner Console es una herramienta de línea de comandos que permite a los desarrolladores automatizar la edición de diferentes tipos de recursos en grandes cantidades de archivos ejecutables de Windows de 32 y 64 bits.

Ver específicamente el Cambiar variables de versión y actualizar la información de la versión página para mayores detalles.


2
2017-07-10 00:17



Un poco tarde para la fiesta, pero como la estaba buscando (y podría necesitar encontrarla de nuevo alguna vez), esto es lo que hice para incluir la versión, el nombre de la compañía, etc. en mi DLL de C ++ bajo VS2013 Express:

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

¡Espero que esto ayude!


2
2017-09-17 18:03



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

Ver: ResourceEditor por Anders Melander.


1
2018-05-21 15:19