ResHacker 用命令列方式修改 windows PE檔案版本號

一塊老臘肉發表於2020-11-30

由於工作需要在詹金斯(genkins)整合環境打包,打包避免不了需要修改版本號,寫入版本號最簡單的方式通過修改windows rc檔案 這就意味著,每次構建新版本前需要修改一次原始檔 這個在用詹金斯整合環境打包是不太友好的 因為版本號是由詹金斯自動生成拼接傳入的,而打包環境意味著程式碼已經封閉了不在修改瞭如果去改的話 就會存在一定的風險。這就需要在編譯完成後通過其它工具用命令列方式修改版本號,經網上查詢資料發現 ResHacker可以修改版本號,但是資料更多的是關於GUI方式,很少有命令列方式的資料。下面將介紹筆者經過實踐得出的一種可行的用ResHacker 命令列方式修改 windows PE檔案版本號。
1、官網下載:http://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
參考部落格連線 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409669

相關文章