5

所以产品管理部门规定我们的软件应该有 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

将值更改为完全不同表示“文件版本”取自 FILEVERSION,因此始终格式化为 4 位组值,但“产品版本”取自“ProductVersion”。

有没有办法指定“文件版本”应该取自“文件版本”字符串值?如果我删除 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

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

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

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

4

1 回答 1

1

在构建和安装我在 CodeProject 找到的这个 shell 扩展之后,这似乎是由于 Windows 7 只显示了 versioninfo 属性的一个子集,我无法改变它。FileVersion 字符串存在于 exe 中,只是未显示在默认属性对话框中。

于 2012-06-13T12:36:54.753 回答