6

我在装有 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

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

{$R VersionInfoFactor.res}

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

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

版本确定

现在,如果我用另一种语言在 Windows 机器上安装相同的可执行文件,我将无法再查看此信息。

有人知道原因吗?

Not Ok 有 versioninfo 错误

4

1 回答 1

8

您的资源脚本仅提供葡萄牙语版本信息,不提供其他语言版本信息。因此,当然,非葡萄牙语机器不会显示任何有意义的内容。

您需要提供多个StringFileInfo块,一个用于您想要支持的每种语言。你应该有一个美国英语的块,这是当没有提供特定语言的块时的后备。

根据本地化资源的分层组织,您应该按此顺序组织块:

  • 美国英语
  • 中性文化
  • 特定文化

附带说明,您不需要brcc32.exe手动调用。如果您在指令中包含.rc文件名,Delphi 编译器可以为您执行此操作:{$R}

{$R VersionInfoFactor.res VersionInfoFactor.rc}
于 2018-02-14T16:03:24.597 回答