我们在用Delphi编译完程序,准备发布产品时,总希望随产品发布个性信息以标示产品的来源以及开发者等信息,就像windows的程序一样,使我们一看属性就知道他是微软的产品,这些在Delphi中是如何实现的呢?下面我就来给大家演示和说明给exe,dll文件添加版本信息的方法。
第一,给exe文件添加版本信息。
第一,给exe文件添加版本信息。
这个我想大家都会添加的,Delphi已经给我们提供了相关选项了. 具体做法:打开你的工程,选择菜单Project-->Options...--->Version info 选中"Include version infomation in project",然后你就可以添加具体版本信息了,编译你的工程,看生成的exe文件属性,发现已经有了你自己的版本信息了。
第二,给dll文件添加版本信息。
第二,给dll文件添加版本信息。
如何给自己的dll文件添加版本信息呢?如果按照上面的方法的话你会发现,在"Include version infomation in project"你是不能选择的,难道我们真的没办法吗?答案是利用资源文件,微软早已经为我们做好了准备.下面是一个具体的例子。
首先建立一个文件后缀为.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 " // 公司名
VALUE " FileDescription " , " xxx.dll " // 产品描述
VALUE " FileVersion " , " 1. 0. 0. 1 " // 文件版本
VALUE " InternalName " , "" // 内部名称
VALUE " LegalCopyright " , " Copyright (C) 2006.6 " // 版权信息
VALUE " OriginalFilename " , " xxx.dll " // 源文件名
VALUE " ProductName " , " xxx.dll " // 产品名
VALUE " ProductVersion " , " 1. 0. 0. 1 " // 产品版本
END
END
BLOCK " VarFileInfo "
BEGIN
VALUE " Translation " , 0x804, 0x03A8 // 这里是关键哦,决定了是什么语言
END // 0x0804, 0x03A8简体中文
END // 0x0409, 0x04b0英语(美国)
你看出了什么没有,实际上就是填充了delphi中的VS_VERSIONINFO和VS_FIXEDFILEINFO结构,只不过这里面的语言格式是VC的罢了:)
把上面存为.rc文件(以ver.rc为例)。拷贝delphi7binbrcc32.exe到你的程序目录,再建立ver.bat,输入:brcc32 ver.rc 保存。双击运行ver.bat,生成ver.res,然后在你的dll工程里添加资源{$R ver.res} 重新编译dll,你会发现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 " // 公司名
VALUE " FileDescription " , " xxx.dll " // 产品描述
VALUE " FileVersion " , " 1. 0. 0. 1 " // 文件版本
VALUE " InternalName " , "" // 内部名称
VALUE " LegalCopyright " , " Copyright (C) 2006.6 " // 版权信息
VALUE " OriginalFilename " , " xxx.dll " // 源文件名
VALUE " ProductName " , " xxx.dll " // 产品名
VALUE " ProductVersion " , " 1. 0. 0. 1 " // 产品版本
END
END
BLOCK " VarFileInfo "
BEGIN
VALUE " Translation " , 0x804, 0x03A8 // 这里是关键哦,决定了是什么语言
END // 0x0804, 0x03A8简体中文
END // 0x0409, 0x04b0英语(美国)
你看出了什么没有,实际上就是填充了delphi中的VS_VERSIONINFO和VS_FIXEDFILEINFO结构,只不过这里面的语言格式是VC的罢了:)
把上面存为.rc文件(以ver.rc为例)。拷贝delphi7binbrcc32.exe到你的程序目录,再建立ver.bat,输入:brcc32 ver.rc 保存。双击运行ver.bat,生成ver.res,然后在你的dll工程里添加资源{$R ver.res} 重新编译dll,你会发现dll也有了自己的版本信息了。