给Delphi程序,exe,dll添加版本信息

答案是利用资源文件,微软早已经为我们做好了准备。

下面是一个具体的例子。

首先建立一个文件后缀为.rc(以ver.rc为例),用记事本打开,拷贝下面内容:

("//"号为注释,会被编译器丢弃,这里只是为了说明才加上的。)

VS_VERSION_INFO

VERSIONINFO //版本信息结构

FILEVERSION 1,0,0,1

//顾名思义文件版本,就是在属性页版本上面显示的|

PRODUCTVERSION 1,0,0,1

//顾名思义产品版本 |这里是主版本信息

FILEFLAGSMASK 0x3fL

//这里设为0x3fL就好了 |

#ifdef _DEBUG

FILEFLAGS

0x1L //VS_FF_DEBUG包括debug信息

#else

FILEFLAGS 0x0L

//无

#endif

FILEOS 0x4L

//对应于delphi中VOS__WINDOWS32,说明程序是win32程序

FILETYPE 0x2L

//文件类型,$2是dll,$1是exe

FILESUBTYPE 0x0L //文件子类型,一般设为0即可

BEGIN

BLOCK

"StringFileInfo" //这里设置文件其他的版本信息(详细信息)

BEGIN

BLOCK "080403A8"

//所用语言080403A8简体中文,040904b0英语(美国)

BEGIN

VALUE "Comments", "My Dll

Application test" //备注

VALUE "CompanyName", "JJony\0"

//公司名

VALUE "FileDescription", "xxx.dll\0" //产品描述

VALUE

"FileVersion", "1. 0. 0. 1\0" //文件版本

VALUE "InternalName",

"" //内部名称

VALUE "LegalCopyright", "Copyright (C)

2006.6\0" //版权信息

VALUE "OriginalFilename", "xxx.dll\0"

//源文件名

VALUE "ProductName", "xxx.dll\0" //产品名

VALUE

"ProductVersion", "1. 0. 0. 1\0" //产品版本

END

END

BLOCK

"VarFileInfo"

BEGIN

VALUE "Translation", 0x804, 0x03A8

//这里是关键哦,决定了是什么语言

END //0x0804,

0x03A8简体中文

END //0x0409,

0x04b0英语(美国)

你看出了什么没有,实际上就是填充了delphi中的VS_VERSIONINFO和VS_FIXEDFILEINFO结构,

只不过这里面的语言格式是VC的罢了:)

把上面存为.rc文件(以ver.rc为例)。

拷贝delphi7\bin\brcc32.exe到你的程序目录,

再建立ver.bat,输入:

brcc32

ver.rc

保存。

双击运行ver.bat,生成ver.res,然后在你的dll工程里添加资源{$R

ver.res}

重新编译dll,你会发现dll也有了自己的版本信息了。