Como faço para definir as informações de versão de um exe, .dll?

Como parte de nosso processo de criaçã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 compilation) e outras não.

Eu quero poder 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 compilation. Esses são binários padrão (não assemblies) compilados com o C ++ Builder 2007.

Como posso fazer isso?

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

Basta usar Arquivo-> Abrir-> Arquivo no .EXE ou .DLL. Isso é útil para corrigir as informações da versão pós-construção ou adicioná-las aos arquivos que não possuem esses resources para começar.

Ao contrário de muitas outras respostas, esta solução usa software completamente livre.

Em primeiro lugar, crie um arquivo chamado Resources.rc assim:

 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 o GoRC para compilá-lo em um arquivo .res usando:

 GoRC /fo Resources.res Resources.rc 

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

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

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

É isso aí!

Ou você pode verificar os arquivos freeware StampVer for Win32 exe / dll.
Ele só alterará as versões do arquivo e do produto, embora já tenham um recurso de versão. Não é possível adicionar um recurso de versão, se não existir um.

E algo assim?

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

Disponível aqui com fonts completas .

O rcedit é relativamente novo e funciona bem a partir da 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 envolve o JavaScript e uma tarefa Grunt no caso de você estar usando o Grunt.

Existe esta ferramenta ChangeVersion [1]

Lista de resources (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 sequências de chaves de versão
  • ajustar flags de arquivos (debug, especial, private etc)
  • atualizar arquivos de projeto (.bdsproj | .bpr | .bpk | .dproj)
  • adicionar / alterar o ícone principal da aplicação
  • usar arquivo ini com configuração
  • Suporte do Windows Vista (precisa de elevação)
  • fácil de integrar em um ambiente de construção contínua

Divulgação Completa: Eu conheço o cara que escreveu essa ferramenta, eu costumava trabalhar com ele. Mas isso também significa que eu sei que ele faz um software de qualidade;)


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

verpatch é bom, mas não suporta caracteres unicode …
tente ResourceLib

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

Um arquivo de header que define algumas constantes do que podemos reutilizar em nosso arquivo de resources e até mesmo no código do programa. Nós só precisamos manter um arquivo. Graças à equipe do Qt que me mostrou como fazer isso em um projeto do Qt, agora ele também funciona no meu aplicativo Win32.

—- [versão.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  #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 

Resource Tuner Console da Heaventools Software.

O Resource Tuner Console é uma ferramenta de linha de comando que permite que os desenvolvedores automatizem a edição de diferentes tipos de resources em um grande número de arquivos executáveis ​​do Windows de 32 e 64 bits.

Veja especificamente a página Alterando Variáveis ​​de Versão e Atualizando a Informação de Versão para maiores detalhes.

Um pouco atrasado para a festa, mas desde que eu estava procurando (e talvez eu precise encontrá-lo novamente em algum momento), aqui está o que eu fiz para include a versão, o nome da empresa, etc em minha DLL C ++ sob VS2013 Express:

  1. Criado e editado um arquivo dllproj.rc, conforme indicado anteriormente.
  2. Adicionado a linha “rc.exe dllproj.rc” como uma etapa de pré-compilation no projeto DLL.
  3. Adicionado dllproj.res à pasta de resources para o projeto.

Espero que isto ajude!

Esta é a melhor ferramenta que já vi para o trabalho, permite o controle total sobre todos os resources de arquivos, inclusive o VersionInfo.

Veja: ResourceEditor por Anders Melander .