Como defino as informações de versão de um .exe, .dll existente?


113

Como parte de nosso processo de construção, preciso definir as informações de versão para todos os nossos binários compilados. Alguns dos binários já possuem informações de versão (adicionadas em tempo de compilação) e outros não.

Eu quero ser capaz de aplicar as seguintes informações:

  • Nome da empresa
  • Aviso de direitos autorais
  • Nome do Produto
  • Descrição do Produto
  • Versão do arquivo
  • Versão do produto

Todos esses atributos são especificados pelo script de construção e devem ser aplicados após a compilação. Esses são binários padrão (não assemblies) compilados com C ++ Builder 2007.

Como posso fazer isso?


para quê usar ResourceHacker ? como exatamente a tarefa é definida? em que problema usar a UpdateResourcefunção, se a versão de atualização da tarefa no pe existente
RbMm

Tente isto: alternativeto.net/software/xn-resource-editor , acho que existem ferramentas de engenharia reversa para fazer isso
i_thamary

Respostas:


59

Embora não seja um processo em lote, o Visual Studio também pode adicionar / editar recursos de arquivo.

Basta usar Arquivo-> Abrir-> Arquivo no .EXE ou .DLL. Isso é útil para corrigir informações de versão pós-compilação ou adicioná-las a arquivos que não têm esses recursos para começar.


8
Funcionou perfeitamente quando tentei. Para um arquivo sem informações de versão completamente: Depois de abrir a DLL no Visual Studio, vá para Editar> Adicionar Recurso> Versão e clique em Novo. Em seguida, na nova guia Versão, altere FILEVERSION e PRODUCTVERSION, CompanyName, etc. Salve os arquivos e está tudo pronto!
twasbrillig

2
@UweBaemayr. a resposta que você citou quero perguntar sobre a mesma, pois podemos automatizar exatamente como eu faço a mesma pós-compilação e quero automatizar. Mas como ?
SteveScm

1
Para o meu antigo Delphi win32 dll isso não funciona. Embora as informações da dll sejam alteradas corretamente, ao executar verificações de integridade, você percebe que está corrompido.
sthiers

3
Tentei (adicionar informações da versão) no Windows 8, VS 2015 e tudo está bem no Windows Explorer, exceto ... o executável não inicia mais.
Liviu,

36

Ao contrário de muitas das outras respostas, esta solução usa software totalmente gratuito.

Em primeiro lugar, crie um arquivo chamado Resources.rcassim:

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

Em seguida, use GoRC para compilá-lo em um .resarquivo usando:

GoRC /fo Resources.res Resources.rc

(veja meu comentário abaixo para um espelho de GoRC.exe)

Em seguida, use o Resource Hacker no modo CLI para adicioná-lo a um existente .exe:

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

É isso aí!


1
@CharlesB Eu mesma percebi, mas é o link certo. Parece que alguém se esqueceu de pagar ao seu host! Aqui está o binário, eu o espelhei para minha conta pública do Assembla: assembla.com/code/danny-beckett/subversion/nodes/13/GoRC.exe
Danny Beckett

3
Você também pode usar o Microsoft Resource Compiler no lugar do GoRC. Ele está disponível com o Windows SDK.
Holistic Developer

Perfeito para Resource Hacker, usei-o com base nesta resposta e é um programa brilhante, ótimo. (sem afinidade com o programa ou criador ;-)
user2109254

@UweKeim Faz um tempo que não uso isso, mas tenho quase certeza de que é obrigatório.
Danny Beckett

6
Parece que a linha de comando mudou um pouco: ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.resAlém disso, o ResourceHacker pode compilar o próprio arquivo .rc:ResourceHacker.exe -open Version.rc -save Version.res -action compile
Yusuf Tarık Günaydın

23

Ou você pode verificar o freeware StampVer para arquivos exe / dll Win32.
No entanto, só mudará as versões do arquivo e do produto se eles já tiverem um recurso de versão. Ele não pode adicionar um recurso de versão se não houver um.


19

rcedit é relativamente novo e funciona bem na linha 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"

Há também um módulo NPM que o envolve do JavaScript e uma tarefa do Grunt, caso você esteja usando o Grunt.


5
observe que o rcedit só pode modificar os recursos existentes, não inserir novos
Bevan Collins

2
Não funciona com arquivos 7zip sfx: / Apenas corta a parte do arquivo 7zip.
Mgamerz

1
tentei isso, continua dando incapaz de carregar o arquivo quando no mesmo diretório e parece que a ferramenta pode depender da configuração do host
Arijoon

Funciona com o stub 7zS.sfx, a primeira parte com o VERSIONINFO dentro que você usa para conciliar um arquivo de extração automática. Manualmente, você também pode renomear 7zS.sfx em 7zS.exe e editá-lo no Visual Studio, mas como o número da versão muda para cada compilação, você prefere um arquivo em lote com instruções rcedit dentro para defini-lo.
AndresRohrAtlasInformatik

1
esta ferramenta é muito desagradável, por favor, olhe para este bug antes de aplicá-lo em seus binários: github.com/electron/rcedit/issues/51
Brun

14

Que tal algo assim?

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

Disponível aqui com fontes completas .


Verpatch pareceu criar um recurso de versão de produto ruim para mim (usando a /va /pvopção). A versão apareceu corretamente no Windows Explorer, mas o último caractere estava faltando quando recuperado no código com VerQueryValue. Para consertar o recurso inválido, fiz o seguinte: (1) Carregue a DLL no Resource Hacker. (2) Visualize o recurso de versão. (3) Compile (modifique algo e depois mude de volta para habilitar o botão). (4) Salvar.
dan-gph

verpatch funciona muito bem para as versões x64 e x86 das minhas DLLs na minha caixa de desenvolvimento, no entanto, no projeto de compilação do apveyor, ele só funciona para x64 e não está fazendo absolutamente nada para a dll x86 - nenhum erro também! alguma dica do que pode acontecer? Posso ver no log do appveyor que o comando verpatch está sendo executado, sem erros, e a dll não está sendo substituída de alguma forma e no final não está tendo o carimbo de versão; para x64, tudo funciona bem em todas as situações. alguma pista, por favor?
Ovi

@ Ovi-Wan Kenobi: Eu não sabia o que era um apveyor, mas de acordo com sua descrição, me parece mais um problema de apveyor. Na pior das hipóteses, se isso for possível, prepare-se para alguma depuração no ambiente do apveyor? ...
filofel

10

Existe esta ferramenta ChangeVersion [1]

Lista de recursos (do site):

  • interface da Linha de comando
  • suporte para arquivos .EXE, .DLL e .RES
  • atualizar FileVersion e ProductVersion com base em uma máscara de versão
  • adicionar / alterar / remover strings de chave de versão
  • ajustar sinalizadores de arquivo (depuração, especial, privado etc)
  • atualizar arquivos de projeto (.bdsproj | .bpr | .bpk | .dproj)
  • adicionar / alterar o ícone do aplicativo principal
  • usar arquivo ini com configuração
  • Suporte para Windows Vista (precisa de elevação)
  • fácil de integrar em um ambiente de construção contínua

Full Disclosure: Eu conheço o cara que escreveu essa ferramenta, trabalhei com ele. Mas isso também significa que sei que ele fabrica software de qualidade;)


[1] o link está morto. Parece haver uma versão espelhada em download.cnet.com .


@Gareth eu adicionei um link de espelho. Por outro lado, duvido que esta resposta tenha algum valor sem qualquer referência de trabalho.
Wolf de

5
O segundo link resulta em uma ferramenta expirada"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
Preet Sangha

2
Ao executá-lo na linha de comando, ele diz "Alterar versão v2012.9.6.0 - (C) 2007-2012 The-Software-Box.com Esta versão de teste expirou"
RDeveloper

10

Estou fazendo isso sem nenhuma ferramenta adicional. Acabei de adicionar os seguintes arquivos ao meu projeto de aplicativo Win32.

Um arquivo de cabeçalho que define algumas constantes que podemos reutilizar em nosso arquivo de recursos e até mesmo no código do programa. Precisamos manter apenas um arquivo. Graças à equipe Qt que me mostrou como fazer isso em um projeto Qt, agora também funciona no meu aplicativo 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

2
Apenas curioso; como você impediu que o Windows substituísse seu arquivo .rc toda vez que você alterasse uma caixa de diálogo ou modificasse qualquer recurso no projeto? Eu vi alguns artigos como este até agora e parece que funcionaria se você nunca mais tivesse que alterar um recurso que causaria a geração automática pelo IDE.
shawn1874

@ shawn1874 - Inclui a linha #include <windows.h>no resource.harquivo que é adicionado automaticamente. Esse arquivo não é regenerado (observe no topo do arquivo .rc que indica seu código gerado e pode ser modificado no designer).
CJBS

1
@CJBS que não responde à pergunta. Embora isso possa funcionar, não explica como a resposta postada pode funcionar. Na resposta postada, o user3016543 está incluindo o version.h diretamente no arquivo .rc. Existem várias maneiras de lidar com a substituição do arquivo .rc que eu sei fazer. Estou apenas questionando a maneira como essa resposta em particular é mostrada, porque ela não parece certa para mim.
shawn1874

Estou supondo que esse método funciona para ele porque o componente em questão não tem componentes de diálogo, portanto, o arquivo não é regenerado com frequência ou nunca. No entanto, em um aplicativo do Windows com recursos de diálogo MFC, isso não seria o caso.
shawn1874

1
Obrigado por me lembrar de uma técnica que vi pela primeira vez em ação em um arquivo de recurso fornecido com o WinBatch Extender SDK. Já fazia tanto tempo que eu não precisava disso que esqueci a maioria dos detalhes. Sua explicação trouxe tudo de volta.
David A. Gray,


6

Existem várias ferramentas, mencionadas por muitas respostas excelentes, vou escolher uma.

Hacker de recursos

Baixei a versão mais recente ( 5.1.7 ) de [AngusJ]: Resource Hacker . Todas as informações necessárias podem ser encontradas nessa página (opções de linha de comando, scripts, ...). No passo a passo a seguir, irei operar em 2 executáveis ​​(ratos de laboratório) que (por razões óbvias) copiei em meu cwd :

  • ResourceHacker.exe : Achei que seria interessante operar sozinho
  • cmake.exe : executável aleatório sem informações da versão definidas (parte da instalação da v3.6.3 em minha máquina)

Antes de prosseguir, gostaria de mencionar que o ResourceHacker tem uma saída de terminal engraçada e os fragmentos de copiar / colar a seguir podem gerar um pouco de confusão.

1. Configuração

Isso é mais como uma etapa preliminar, para se familiarizar com o meio ambiente, para mostrar que não há negócios descolados acontecendo, ...

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 visto, os executáveis ​​estão OK, eles funcionam bem e é assim que seus detalhes (com os quais nos preocupamos) se parecem:

Img0-inicial

2. Recursos

Os arquivos de recursos são arquivos de texto que contêm recursos. Um recurso (simplificado) tem:

  • Nome
  • Tipo
  • Valor

Para obter mais detalhes, consulte [MS.Docs]: Sobre os arquivos de recursos . Existem muitas ferramentas (mencionadas nas respostas existentes) que facilitam a edição de arquivos de recursos como:

  • O VStudio cria um padrão ao iniciar um novo projeto
  • Pode-se criar esse arquivo manualmente
  • Mas, uma vez que é sobre Resource Hacker , e:

    • É capaz de extrair recursos de um executável existente
    • Possui recursos embutidos nele (como mostrado na imagem anterior)

    Vou usá-lo para esta etapa ( -action extract)

Em seguida, para que um recurso seja incorporado em um .exe ( .dll , ...), ele deve ser compilado em um formato binário, que se ajusta ao formato PE . Novamente, existem muitas ferramentas que podem fazer isso, mas como você provavelmente adivinhou, vou me limitar a 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

No seu caso não será necessário salvar e editar o arquivo de recurso, pois o arquivo já estará presente, fiz apenas para fins de demonstração. Abaixo está o arquivo de recurso após ser modificado (e, portanto, 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. Incorporar

Isso também será executado pelo Resource Hacker ( -action addoverwrite). Como os .exe s já foram copiados, irei editar seus recursos no local.

[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 visto, tive que fazer um pequeno truque ( gainarie ) porque não posso (pelo menos acho que não posso) modificar o .exe durante o uso.

4. Teste

Esta é uma fase opcional, para garantir que:

  • Os executáveis ​​ainda funcionam (eles não foram prejudicados no processo)
  • Os recursos foram adicionados / atualizados
[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

E seus detalhes :

Img1-Final


@ColonelPanic: Obrigado!
CristiFati

Muito boa resposta. Infelizmente, o ResourceHacker não é mais mantido e fica sem memória ao tentar editar um arquivo EXE grande (recebi o erro ao tentar abrir um exe de 3 GB).
Lews Therin

@LewsTherin: A versão mais recente (também usada pela resposta) é de 01/2019, então eu diria que está bem mantida. O problema é que tem 32 bits . Você pode entrar em contato com os autores pedindo uma versão de 64 bits (presumo que, como eles já têm o código, não seria difícil construí-lo para 64 bits ).
CristiFati


3

Um pouco tarde para a festa, mas como eu estava procurando por ele (e talvez precise encontrá-lo novamente algum dia), aqui está o que fiz para incluir a versão, o nome da empresa, etc. em minha DLL C ++ no VS2013 Express:

  1. Criado e editado um arquivo dllproj.rc, conforme indicado anteriormente.
  2. Adicionada a linha "rc.exe dllproj.rc" como uma etapa de pré-compilação no projeto DLL.
  3. Adicionado dllproj.res à pasta de recursos do projeto.

Espero que isto ajude!


3

a resposta acima de @DannyBeckett me ajudou muito,

Coloquei o seguinte em um arquivo de lote e o coloco na mesma pasta onde ResourceHacker.exe e o EXE em que trabalho estão localizados e funciona perfeitamente. [você pode editá-lo para atender às suas necessidades]

    @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 uma nota lateral, usei o hacker de recursos também para compilar o arquivo res, não GoRC]


2

Na verdade, você pode tentar baixar o FVIE do Link de download e tentar editar as informações de qualquer arquivo .exe.

(OU)

Você pode baixar StampVer - Win32 Version Resource Stamping em Download Link, que é realmente útil para arquivos .exe do Windows.

(OU)

Você pode usar uma ferramenta de comando chamada RCEDIT . Baixe do link Github Source e, em seguida, crie usando o Visual Studio 2015 e você terá comandos específicos para alterar a versão dos arquivos .exe. Consulte o link do Documentos para ver os vários comandos disponíveis.


1

Esta é a melhor ferramenta que já vi para o trabalho, permite controle total sobre todos os recursos de arquivo, incluindo VersionInfo.

Veja: ResourceEditor de Anders Melander .


1
O download do Editor de recursos (0 bytes) foi interrompido.
Jack
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.