Windows属性值中的“文件版本”是FILEVERSION而不是“FileVersion”

时间:2012-06-11 09:53:18

标签: visual-studio-2010 visual-c++

所以产品管理部门已经下令我们的软件应该有3组数字的版本号而不是通常的4(例如1.2.3而不是1.2.3.4)

这可以在“关于”对话框和UI中的其他位置轻松完成,但我遇到了Windows属性的问题。

当我将VERSIONINFO块中的值更改为:

FILEVERSION 1,2,3
PRODUCTVERSION 1,2,3

VALUE "FileVersion", "1.2.3"
VALUE "ProductVersion", "1.2.3"

我在Windows 7的属性>中结束了以下操作: exe的详细信息选项卡:

文件版本:1.2.3.0 产品版本:1.2.3

将值更改为all表示“File version”取自FILEVERSION,因此始终格式化为4位组值,但“Product version”取自“ProductVersion”。

有没有办法指定应该从“FileVersion”字符串值中取出“文件版本”?如果我删除了FILEVERSION块,我最终会得到一个0.0.0.0的“文件版本”。

我通过创建一个空的Win32控制台应用程序,然后添加默认版本资源,在VS2010中重现了这种行为:

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,1
 PRODUCTVERSION 1,0,2
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "080904b0"
        BEGIN
            VALUE "CompanyName", "TODO: <Company name>"
            VALUE "FileDescription", "TODO: <File description>"
            VALUE "FileVersion", "1.0.3"
            VALUE "InternalName", "VersionT.exe"
            VALUE "LegalCopyright", "Copyright (C) 2012"
            VALUE "OriginalFilename", "VersionT.exe"
            VALUE "ProductName", "TODO: <Product name>"
            VALUE "ProductVersion", "1.0.4"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x809, 1200
    END
END

导致同样的问题: properties http://media.use.com/images/s_1/4ba4e5b1b235179b1c9a.jpg

这张图片可能很小,所以我只是确认一下 文件版本1.0.1.0 产品版本1.0.4

在我告诉产品管理这是我们能做的最好之前,有没有办法让Windows显示“FileVersion”字符串值?我已经阅读了MSDN上的VERSIONINFO文档,并且看不到我可以设置的任何标志。

1 个答案:

答案 0 :(得分:1)

在构建和安装this shell extension I found at CodeProject之后,似乎这是因为Windows 7只显示了versioninfo属性的一个子集,而且我无法改变它。 FileVersion字符串存在于exe中,它不会显示在默认属性对话框中。