Windows 设置“";“文件/产品版本”;视窗的';二进制到任意字符串
全部。目前,我想将Windows应用程序(exe)、动态链接库(dll)或静态链接库(lib)的版本设置为使用标准版本格式(例如:Windows 设置“";“文件/产品版本”;视窗的';二进制到任意字符串,windows,resources,version,exe,semantic-versioning,Windows,Resources,Version,Exe,Semantic Versioning,全部。目前,我想将Windows应用程序(exe)、动态链接库(dll)或静态链接库(lib)的版本设置为使用标准版本格式(例如:3.2.0.73)而非标准版本格式(例如:3.2.0-RC3+73)的版本。查看版本信息资源()的规范,FILEVERSION和PRODUCTVERSION字段包括: 两个32位整数,由四个16位整数定义 因此,两个版本字段都应指定为具有4个版本段/部分/编号,其中每个版本段/部分/编号的宽度均为16位(无符号短整数): 对应字段的字符串变体的情况有所不同。扫描底部附
3.2.0.73
)而非标准版本格式(例如:3.2.0-RC3+73
)的版本。查看版本信息资源()的规范,FILEVERSION
和PRODUCTVERSION
字段包括:
两个32位整数,由四个16位整数定义
因此,两个版本字段都应指定为具有4个版本段/部分/编号,其中每个版本段/部分/编号的宽度均为16位(无符号短整数):
对应字段的字符串变体的情况有所不同。扫描底部附近的同一规格,尤其是该部分:
备注->字符串名称
显而易见的是,4段16位文件和产品版本的字符串表示形式可以包含任何字符:
FileVersion |文件的版本号。例如,“3.10”或“5.00.RC2”。此字符串是必需的
ProductVersion |分发文件的产品版本。例如,“3.10”或“5.00.RC2”。此字符串是必需的
因此,第一个问题(Q1):是否正式指定字符串表示的内容可以包含任意内容Q2:下一步,即使我已将这两个字段设置为具有相同的语义版本控制2.0格式的版本字符串。这很奇怪,因为两个字段都有相同的规范,它们应该包含一个字符串,但实际上只有一个字段是交替的。此外,这两个字段都没有明确说明可以为值“FileVersion”
字段分配任何字符串值,但给出了一个明确的示例,说明此类值包含不同于0-9
和
的字符:
5.00.RC2
因此,与产品版本字段相比,对文件版本字段的限制也是自相矛盾的。第三个问题(Q3):
VERSIONINFO
资源是否有更详细的规范和参考,它提供了一整套可能的参数和参数值?目前,我没有看到任何关于FILEFLAGS
属性的可能值的描述和详细信息:(veru PRIVATEBUILD | veru PRERELEASE | veru DEBUG)
。这里一个值得关注的值是VER_PRERELEASE
一个与语义版本控制2.0规范中PRERELEASE
版本部分的含义相匹配的值。PE文件中的版本信息以固定块()开头,后跟任意数量的自由格式字符串
字符串和标志组合在任何地方都没有得到真正的验证,甚至文档也无法决定需要哪些字符串:
VS_FF_PRIVATEBUILD文件不是使用标准发布过程生成的。如果给定此值,则StringFileInfo块包含PrivateBuild字符串
VS
VS_FF_PRIVATEBUILD文件不是使用标准发布过程生成的。如果设置了此标志,StringFileInfo结构将包含PrivateBuild条目
Q1:
。szKey成员可以是以下一个或多个值。这些值仅为指南
Q2:
有些应用程序/字段显示固定块中的数字,有些使用“标准”字符串
Q3:
包含指定文件布尔属性的位掩码
PE文件中的版本信息以固定块()开头,后跟任意数量的自由格式字符串 字符串和标志组合在任何地方都没有得到真正的验证,甚至文档也无法决定需要哪些字符串: VS_FF_PRIVATEBUILD文件不是使用标准发布过程生成的。如果给定此值,则StringFileInfo块包含PrivateBuild字符串 VS VS_FF_PRIVATEBUILD文件不是使用标准发布过程生成的。如果设置了此标志,StringFileInfo结构将包含PrivateBuild条目 Q1: 。szKey成员可以是以下一个或多个值。这些值仅为指南 Q2: 有些应用程序/字段显示固定块中的数字,有些使用“标准”字符串 Q3: 包含指定文件布尔属性的位掩码
#define VER_FILEVERSION 3,10,349,0
#define VER_FILEVERSION_STR "3.10.349.0\0"
#define VER_PRODUCTVERSION 3,10,0,0
#define VER_PRODUCTVERSION_STR "3.10\0"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS (VER_PRIVATEBUILD|VER_PRERELEASE|VER_DEBUG)
// ...
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "CompanyName", VER_COMPANYNAME_STR
VALUE "FileDescription", VER_FILEDESCRIPTION_STR
VALUE "FileVersion", VER_FILEVERSION_STR
// ...
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
END
END
// ...
END