1

我正在尝试配置我们的资源构建以在命令行上获取版本信息

rc.exe /DVERCSV=8,0,0,0 /DVERDOT="8.0.0.0"

我以为它开始工作,但似乎有一些小故障。

在资源管理器中查看时,我似乎遇到了损坏 - 在 ProductVersion 字符串中显示垃圾,但是打开 exe 或 res 文件会正确显示字符串值

但是,如果将值直接存储在 rc 中,或者在 visualstudio 资源编辑器中将其编辑为“相同”值(进行细微更改以保存)(编译为 .res 之后),则资源管理器能够显示所需的值

VS_VERSION_INFO VERSIONINFO
 FILEVERSION VERCSV
 PRODUCTVERSION VERCSV
 FILEFLAGSMASK 0x17L
 FILEFLAGS 0x0L
 FILEOS     VOS_NT_WINDOWS32
 FILETYPE   VFT_APP
 FILESUBTYPE    VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "XXX Application"
            VALUE "FileVersion", VERDOT
            VALUE "InternalName", "XXX"
            VALUE "LegalCopyright", "Copyright (C) 2010"
            VALUE "OriginalFilename", "XXX.exe"
            VALUE "ProductName", "XXX Application"
            VALUE "ProductVersion", VERDOT
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

我已经尝试了很多其他的事情来解决

  • 缺少尾随空?
    • 值“ProductVersion”,VERDOT“\0”
    • \DVERDOT="8.0.0.0\0"
  • 命令
  • 其他翻译
  • 代码页的更改
  • #pragma code_page(1200)
  • 文件中的二级#define
  • 使用 #VERDOT 在字符串周围添加引号
  • 改为使用 CSV 值
4

1 回答 1

2

我也看到了腐败,不太确定它是否符合您的情况,因为我使用了 IDE 而您没有描述您所看到的内容。下次发个截图。该数字嵌入在二进制而不是 ASCII 中,在属性表中查看时会生成一个字符,即一个带有白色中心圆的黑色矩形。字符代码 8。

我通过在字符串周围放置两对双引号来修复它,以便内部对在通过 cmd.exe 的行程中幸存下来:

/DVERDOT=""8.0.0.0""
于 2012-07-11T03:20:18.457 回答