ResHacker 用命令行方式修改 windows PE文件版本号

由于工作需要在詹金斯(genkins)集成环境打包,打包避免不了需要修改版本号,写入版本号最简单的方式通过修改windows rc文件 这就意味着,每次构建新版本前需要修改一次源文件 这个在用詹金斯集成环境打包是不太友好的 因为版本号是由詹金斯自动生成拼接传入的,而打包环境意味着代码已经封闭了不在修改了如果去改的话 就会存在一定的风险。这就需要在编译完成后通过其它工具用命令行方式修改版本号,经网上查找资料发现 ResHacker可以修改版本号,但是资料更多的是关于GUI方式,很少有命令行方式的资料。下面将介绍笔者经过实践得出的一种可行的用ResHacker 命令行方式修改 windows PE文件版本号。
1、官网下载://www.angusj.com/resourcehacker/#download
2、傻瓜式安装后启动程序打开GUI,选择某个PE文件查看版本信息

3、修改版本号发布者等信息, 并将修改后的信息拷贝 保存到临时文件temp.rc
4、执行命令行编译生成res文件
ResourceHacker.exe -open temp.rc -save temp.res -action compile -log console
-open 表示 输入文件
-save 表示输出文件
-action表示执行的动作
-log 输出日志方式
这些在官网上都有介绍的
5、执行addoverwrite覆盖写入命令写入版本号
ResourceHacker.exe -open old.exe -res temp.res -action addoverwrite -mask VERSIONINFO -log console -save new.exe
附件 修改版本号脚本 .bat
set RC_FILE_PATH=D:\temp.rc
set RES_FILE_PATH=D:\temp.res

DEL /q /F %RC_FILE_PATH%
DEL /q /F %RES_FILE_PATH%

set MAJOR_VERSION=2
set MINOR_VERSION=8
set MICRO_VERSION=0
set BUILD_VERSION=1
set BUILD_FULL_VERSION=%MAJOR_VERSION%,%MINOR_VERSION%,%MICRO_VERSION%,%BUILD_VERSION%
set BUILD_FULL_VERSION_STR=%MAJOR_VERSION%.%MINOR_VERSION%.%MICRO_VERSION%.%BUILD_VERSION%
echo.>>%RC_FILE_PATH%
echo 1 VERSIONINFO>>%RC_FILE_PATH%
echo FILEVERSION %BUILD_FULL_VERSION% >>%RC_FILE_PATH%
echo PRODUCTVERSION %BUILD_FULL_VERSION% >>%RC_FILE_PATH%
echo FILEOS 0x4>>%RC_FILE_PATH%
echo FILETYPE 0x2>>%RC_FILE_PATH%
echo {>>%RC_FILE_PATH%
echo BLOCK “StringFileInfo”>>%RC_FILE_PATH%
echo {>>%RC_FILE_PATH%
echo BLOCK “080404B0”>>%RC_FILE_PATH%
echo {>>%RC_FILE_PATH%
echo VALUE “FileDescription”, “xxxx”>>%RC_FILE_PATH%
echo VALUE “LegalCopyright”, “Copyright (C) xxxxxk co,ltd 2018-2020”>>%RC_FILE_PATH%
echo VALUE “OriginalFilename”, “xxxx.exe”>>%RC_FILE_PATH%
echo VALUE “ProductName”, “LimiTeacher”>>%RC_FILE_PATH%
echo VALUE “ProductVersion”, “%BUILD_FULL_VERSION_STR%”>>%RC_FILE_PATH%
echo }>>%RC_FILE_PATH%
echo }>>%RC_FILE_PATH%
echo.>>%RC_FILE_PATH%
echo BLOCK “VarFileInfo” >>%RC_FILE_PATH%
echo { >>%RC_FILE_PATH%
echo VALUE “Translation”, 0x0804 0x04B0 >>%RC_FILE_PATH%
echo }>>%RC_FILE_PATH%
echo } >>%RC_FILE_PATH%
set PATH=C:\Program Files (x86)\Resource Hacker;%PATH%
cd C:\Program Files (x86)\Resource Hacker
ResourceHacker.exe -open %RC_FILE_PATH% -save %RES_FILE_PATH% -action compile -log console
ResourceHacker.exe -open old.exe -res %RES_FILE_PATH% -action addoverwrite -mask VERSIONINFO -log console -save new.exe
参考博客连接 //bbs.wuyou.net/forum.php?mod=viewthread&tid=409669

Tags: