EXE属性中未显示VERSIONINFO资源

7

我正在使用安装有Windows 10的计算机上的Delphi 10.0 Seattle。

我们有一个包含多个可执行文件的系统。我们通过.rc文件使用版本信息:

1 VERSIONINFO
  FILEVERSION 18,2,0,1660
  PRODUCTVERSION 18,2,0,0
  FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
  FILEFLAGS (VS_FF_SPECIALBUILD|VS_FF_PRERELEASE)
  FILEOS VOS__WINDOWS32
  FILETYPE VFT_APP
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "041604E4"
        BEGIN
            VALUE "CompanyName", "BLA BLA BLA\0"
            VALUE "FileDescription", "BLA BLABLA - DESCRICAO\0"
            VALUE "FileVersion", "18.2.0.1660\0"
            VALUE "InternalName", "nomexecutavel.exe\0"
            VALUE "LegalCopyright", "Copyright 2018\0"
            VALUE "LegalTrademarks", "BLA BLA BLA é marca registrada\0"
            VALUE "OriginalFilename", "nomeexecutavel.exe\0"
            VALUE "ProductName", "nomedoproduto\0"
            VALUE "ProductVersion", "18.2.0\0"
            VALUE "SpecialBuild", "Para Homologação\0"
            VALUE "GitRevision", "790d79ee92af023d6beac953072c45b0385df17f\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0416, 1252
    END
END

这个 .rc 文件是通过 brcc32.exe 编译的。

在项目文件中,brcc32 生成的 .RES 文件信息被加载。

{$R VersionInfoFactor.res}

在葡萄牙语的Windows机器上进行构建和安装后,我可以通过右键单击可执行文件,选择属性,然后选择详细信息来查看版本信息。

到目前为止,这并不是什么新鲜事,它显示了在.rc文件中提供的数据。

Version Ok

现在,如果我将同样的可执行文件安装在另一种语言的 Windows 机器上,我就无法查看这些信息了。

有人知道原因吗?

Not Ok has an error of versioninfo


请对rc文本进行格式化以提高可读性。 - dummzeuch
1个回答

8
你的资源脚本只提供了葡萄牙语的版本信息,没有其他语言。因此,非葡萄牙语的计算机将不会显示任何有意义的内容。
你需要提供多个StringFileInfo块,每种语言一个块。并且你应该有一个美式英语块,当特定语言的块未提供时,它将作为后备。
你应该按照Hierarchical Organization of Resources for Localization的顺序组织这些块:
- 美式英语 - 中性文化 - 特定文化
另外,你不需要手动调用brcc32.exe。如果在{$R}指令中包含.rc文件名,则Delphi编译器可以为您执行此操作。
{$R VersionInfoFactor.res VersionInfoFactor.rc}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接