1. 程式人生 > >【PE】Windows平臺下為可執行檔案或動態庫dll新增版本資訊

【PE】Windows平臺下為可執行檔案或動態庫dll新增版本資訊

###Date: 2017/9/22
###Author : SoaringLee



  平常我們可以看到在Windows可執行檔案中,右鍵屬性中含有檔案版本,檔名稱和版本等資訊,本文講述怎麼新增這些資訊。


方法一:VS工程中建立資原始檔,編譯即可

     這種方法比較簡單,是藉助VS工程,檔案版本的資訊其實是通過資原始檔編譯進去的。

方法二:MinGW或者Cygwin環境下為dll或exe新增版本資訊


1、開啟cmd,輸入:

call "%VS120COMNTOOLS%../../VC/vcvarsall.bat" 
call "E:\ProfessionalSoftware\MinGW\msys\1.0\msys.bat" 
啟動VS2010編譯環境和MinGW環境,這裡是為了使用命令windres和rc命令。

2、建立一個test.c檔案:

#include "stdio.h"
int add(int a, int b)
{
	return a + b;
}

int main(int argc, char** argv)
{
	printf("********************");
}

3、建立資原始檔Res.rc檔案:
1 VERSIONINFO
FILEVERSION    0,1,22,33
PRODUCTVERSION 1,0,0,0
FILEFLAGS 0x1L
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x1L
BEGIN
   BLOCK "StringFileInfo"
   BEGIN 
     BLOCK "080904E4"
     BEGIN
	VALUE "CompanyName", "My Company Name"
	VALUE "FileDescription", "My excellent application"
	VALUE "FileVersion", "6000"
	VALUE "InternalName", "my_app"
	VALUE "LegalCopyright", "My Name"
	VALUE "OriginalFilename", "my_app.exe"
	VALUE "ProductName", "My App"
	VALUE "ProductVersion", "6000"
     END
   END
   BLOCK "VarFileInfo"
   BEGIN
      VALUE "Translation", 0x809, 1252
   END

4、編譯連結,將資原始檔rc轉換成res檔案,然後連結到dll或exe中
gcc -c test.c -o test.o
windres Res.rc -O coff -o obj.res
gcc -o test test.o obj.res
或者:
cl -c test.c
windres Res.rc -O coff -o obj.res
link test.obj obj.res
另外一種方法就是採用rc命令將res檔案轉換成rc檔案。
cl -DWIN64 -c obj.c -Foobj
rc -DWIN64 -fo obj.res obj.rc 
link obj.obj obj.res

好的,現在就可以右鍵屬性檢視可執行檔案的版本資訊了。