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: