VERSIONINFO资源未显示在EXE属性中

Ric*_*rdo 4 delphi versioninfo delphi-10-seattle

我在装有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
Run Code Online (Sandbox Code Playgroud)

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

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

{$R VersionInfoFactor.res}
Run Code Online (Sandbox Code Playgroud)

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

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

版本好

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

有谁知道原因?

Not Ok有版本信息错误

Rem*_*eau 7

您的资源脚本仅提供葡萄牙语版本信息,而不提供其他语言.所以,当然,非葡萄牙机器不会显示任何有意义的东西.

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

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

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

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

{$R VersionInfoFactor.res VersionInfoFactor.rc}
Run Code Online (Sandbox Code Playgroud)