VERSIONINFO资源未显示在EXE属性中

时间:2018-02-14 14:13:47

标签: delphi delphi-10-seattle versioninfo

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

我们有一个包含多个可执行文件的系统。我们通过let appModule = new AppModule(); beforeEach(done => { TestBed.configureTestingModule({ imports: appModule.imports, declarations: appModule.declarations, providers: [...appModule.providers, { provide: Http, useClass: HttpMock, }, { provide: Router, useClass: RouterMock, } ] }); 文件使用版本信息:

.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

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

到目前为止,这并不是什么新鲜事,它显示了{$R VersionInfoFactor.res} 文件中的数据。

Version Ok

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

有人知道原因吗?

Not Ok has an error of versioninfo

1 个答案:

答案 0 :(得分:6)

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

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

您应按此顺序按Hierarchical Organization of Resources for Localization

整理块
  • 美国英语
  • 中性文化
  • 特定文化

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

{$R VersionInfoFactor.res VersionInfoFactor.rc}