如何为已存在的.exe、.dll文件设置版本信息?

138
作为我们构建过程的一部分,我需要为所有已编译的二进制文件设置版本信息。其中一些二进制文件已经具有版本信息(在编译时添加),而另一些则没有。
我希望能够应用以下信息:
- 公司名称 - 版权声明 - 产品名称 - 产品描述 - 文件版本 - 产品版本
所有这些属性都由构建脚本指定,并且必须在编译后应用。这些是使用C++ Builder 2007编译的标准二进制文件(而不是程序集)。
我该怎么做?

ResourceHacker有什么用途?任务如何设置?如果任务是更新现有PE文件的版本,那么在什么问题下使用UpdateResource函数? - RbMm
试试这个:https://alternativeto.net/software/xn-resource-editor/,我认为有反向工程工具可以做到这一点。 - I_Al-thamary
15个回答

5

我想要制作一个更紧凑的版本

  • 步骤1:创建资源
  • 步骤2:下载ResourceHacker
  • 步骤3:将res编译成rc文件
  • 步骤4:运行脚本:修改exe文件

步骤1:创建resource

准备资源文件:resource.rc

VS_VERSION_INFO VERSIONINFO
    FILEVERSION    0,0,0,0
    PRODUCTVERSION 0,0,0,0
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904b0"
        {
            VALUE "CompanyName",        "\0"
            VALUE "FileDescription",    "\0"
            VALUE "FileVersion",        "0.0.0.0\0"
            VALUE "LegalCopyright",     "© 2020 Carson. All rights reserved.\0"
            VALUE "OriginalFilename",   ".exe\0"
            VALUE "ProductName",        "\0"
            VALUE "ProductVersion",     "0.0.0.0\0"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x0409, 1200
    }
}

步骤2:下载ResourceHacker

有两种方法可以获取它。

  1. Chocolatey下载:
    • 安装choco
    • choco install reshack -y
    • 安装后,您可能需要添加环境变量。
  2. ResourceHacker网站

步骤3:将res编译为rc文件

ResourceHacker.exe -open resources.rc -save resources.res ^
 -action compile -log CONSOLE

步骤4:运行脚本:修改exe

SET INPUT_EXE=app.exe
SET OUTPUT_EXE=app.exe
ResourceHacker.exe -open %OUTPUT_EXE% -save %OUTPUT_EXE% ^
 -resource resources.res ^
 -action addoverwrite ^
 -mask VersionInf ^
 -log CONSOLE

摘要脚本

SET INPUT_EXE=app.exe
SET OUTPUT_EXE=app.exe

ResourceHacker.exe -open resources.rc -save resources.res ^
 -action compile -log CONSOLE

ResourceHacker.exe -open %OUTPUT_EXE% -save %OUTPUT_EXE% ^
 -resource resources.res ^
 -action addoverwrite ^
 -mask VersionInf ^
 -log CONSOLE

参考资料


4
有点晚了,但是因为我还在寻找这方面的信息(将来可能需要再次查找),所以我想让您了解一下我在VS2013 Express下如何将版本、公司名称等信息包含进我的C++ DLL中:

  1. 创建并编辑了 dllproj.rc 文件,如之前所述。
  2. 将“rc.exe dllproj.rc”添加为 DLL 项目的预构建步骤。
  3. 将 dllproj.res 添加到该项目的资源文件夹中。

希望这能有所帮助!


3

3
你可以从下载链接下载FVIE并尝试编辑任何.exe文件的信息。
或者,你可以从下载链接下载StampVer - Win32版本资源戳记,它非常适用于Windows .exe文件。
另外,你还可以使用一个名为RCEDIT的命令工具。从Github源链接下载,然后使用Visual Studio 2015构建,并使用特定命令更改.exe文件的版本。请参见文档链接了解各种可用命令。

1
这是我见过的最好的工具,可以完全控制所有文件资源,包括VersionInfo。
参见:ResourceEditor,由Anders Melander开发。

1
资源编辑器的下载链接(0字节)已经损坏。 - Jack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接