关于版本信息资源--VERSIONINFO



【注:本文是节选自luqingfei@C++的“Win32汇编--使用资源--版本信息资源”】

版本信息是以VERSIONINFO类型的资源保存在应用程序中的,里面可以定义的信息包括文件的版本号、创建单位和语种等。版本信息的定义是可选的,一个程序可以不定义版本信息资源,如果定义了的话,也不一定要定义全部信息项目。

 

如果一个文件定义有版本信息资源,那么在文件的属性页(在文件图标上按鼠标右键,在弹出的菜单上选择)上就会有一个“版本”页面。

 

1、版本信息资源的定义

//Version.rc

1 VERSIONINFO

FILEVERSION 1,2,3,4

PRODUCTVERSION 2,3,4,5

FILEOS VOS_WINDOWS32

FILETYPE VFT_APP

FILESUBTYPE VFT2_UNKNOWN

BEGIN

        BLOCK "VerFileInfo"

        BEGIN

                VALUE "Translation", 0x804, 0x4b0

        END

        BLOCK "StringFileInfo"

        BEGIN

                BLOCK "080404b0"

                BEGIN

                        VALUE "Comments", "Here is Comments\0"

                        VALUE "CompanyName", "Here is CompanyName\0"

                        VALUE "FileDescription", "Here is FileDescription\0"

                        VALUE "FileVersion", "1,0,0,1\0"

                        VALUE "InternalName", "Here is InternalName\0"

                        VALUE "LegalCopyright", "Here is LegalCopyright\0"

                        VALUE "LegalTrademarks", "Here is LegalTrademarks\0"

                        VALUE "OriginalFilename", "Here is OriginalFilename\0"

                        VALUE "PrivateBuild", "Here is PrivateBuild\0"

                        VALUE "ProductName", "Here is ProductName\0"

                        VALUE "ProductVersion", "1,0,0,1\0"

                        VALUE "SpecialBuild", "Here is SpecialBuild\0"

                END

        END

END

 

这些定义语句的含义。首先,版本信息定义的语句格式是:

版本信息资源ID   VERSIONINFO

固定属性

BEGIN

       块声明定义

       ……

END

 

版本信息资源ID的取值必须为1,如果不为1则属性页上的“版本”信息是无法显示出来的。(怪异!)

 

可以定义的固定属性有:

l         FILEVERSION——定义文件版本号,可以定义4个16位版本号xx.xx.xx.xx。

l         PRODUCTVERSION——定义产品版本号,可以定义4个16位版本号xx.xx.xx.xx。

l         FILELAGSMASK——指定FILELAGS属性中哪些位有效。

l         FILELAGS——文件标志,是一些标志位的组合:VS_FF_PATCHED,VS_FF_DEBUG,VS_FF_PRIVATEBUILD,VS_FF_INFOINFERRED,VS_FF_PRERELEASE和VS_FF_SPECI_ALBUILD。

l         FILEOS——定义适用的操作系统,可以定义为VOS_UNKNOWN,VOS_DOS,VOS_NT,VOS_WINDOWS16,VOS_WINDOWS32,VOS_DOS_WINDOWS16,VOS_DOW_WINDOWS32或VOS_NT_WINDOW32。

l         FILETYPE——定义文件的子类型。当文件类型是VFT_DRV(驱动程序)的时候,这里可以是VFT2_UNKNOWN,VFT2_DRV_COMM,VFT2_DRV_PRINTER,VFT2_DRV_KEYBOARD,VFT2_DRV_LANGUAGE,VFT2_DRV_DISPLAY,VFT2_DRV_MOUSE,VFT2_DRV_NETWORK,VFT2_DRV_SYSTEM,VFT2_DRV_INSTALLABLE或VFT2_DRV_SOUND;当文件类型是VFT_FONT(字体)的时候,这里可以是VFT2_UNKNOWN,VFT2_FONT_RASTER,VFT2_FONT_VECTOR或VFT2_FONT_TRUETYPE。

 

当固定属性定义完成以后,需要定义一些块声明,块声明有两种:变量型的信息块和字符串类型的信息块,变量类型的信息块定义如下:

BLOCK “VerFileInfo”

BEGIN

       VALUE “Translation”, 语言ID,字符集ID

       ……

END

 

语言ID的常用值有0x0404(繁体中文)、0x0409(美国英语)和0x0804(简体中文),字符集ID的常用值有0(7位ASCII)、950(台湾GB5)和1200(Unicode)。一般使用0x804,0x4b0来定义,也就是简体中文和Unicode(0x4b0=1200)。其他还有很多取值,可以查看Rc.exe的帮助文件。

 

变量类型信息块用来表示VERSIONINFO资源中定义有哪些语言和字符集的字符串类型信息块。如上例中有一句VALUE “Translation”, 0x804, 0x4b0表示对应有一个名为“080404b0”的字符串类型的信息块。

 

字符串信息块的定义语句为:

BLOCK “StringFileInfo”

BEGIN

       BLOCK “语言集”

       BEGIN

              VALUE “字符串名称”, “字符串”

              ……

       END

END

 

语言集就是变量类型中定义的,其名称一定要是将语言ID和字符集ID组合成一个8位的16进制的格式,以上例文件来说明,当变量类型的信息块中定义0x804, 0x4b0时,语言集名称就是“080404b0”,在语言集块的定义中,还可以定义多条字符串型的版本信息,这些版本信息的字符串名有12种,如下表所示:

版本信息字符串类型

字符串名称

属性页位置

说明

Comments

备注

有关程序的附加说明信息

CompanyName

公司

开发产品的公司

FileDescription

描述

有关文件的简单描述

FileVersion

文件版本

如1.50、5.0.RC2等字符串型的版本信息

InternalName

内部名称

 

LegalCopyright

版权

文件的所有版权信息

LegalTrademarks

合法商标

文件的所有注册商标信息

OriginalFilename

源文件名

原始文件名,从这里可以得知文件是否被改名

PrivateBuild

个人用内部版本说明

作者私人信息

ProductName

产品名称

文件所属的产品名称

ProductVersion

产品版本

文件所属的产品的版本号

SpecialBuild

特殊内部版本说明

特殊说明

 

定义版本信息字符串的时候要注意,所有的字符串必须是以NULL结尾的串,所以要在字符串尾加上\0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值