我使用 RC(资源)文件来获取链接到 EXE 文件的版本信息,最近我从Borland Resource Compiler切换到Windows SDK Resource Compiler,以便能够在我的应用程序中使用多种尺寸的图标。
该图标有效,但现在当我编译我的应用程序时,资源信息似乎没有附加到 EXE 文件中。我怀疑适用于 BRCC32.EXE 的同一个 RC 文件不适用于 Windows SDK 资源编译器。
这是我的verinfo.rc
内容:
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", "Company Soft\0"
VALUE "CompanyName", "Company2\0"
VALUE "FileDescription", "Company Soft\0"
VALUE "FileVersion", "x.x.x.x\0"
VALUE "InternalName", "Company Soft\0"
VALUE "LegalCopyright", "Company2\0"
VALUE "OriginalFilename", "abrev.exe\0"
VALUE "ProductName", "Company Soft\0"
VALUE "ProductVersion", "x.x.x.x\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409,1200
END
END
最后,我没有忘记verinfo.rc
在我的 Delphi 项目文件中使用该文件:
program myprogram;
{$R 'verinfo.res' 'verinfo.rc'}
更新#1
如果我将资源编译器从Windows SDK 编译器更改回Borland 资源编译器,则版本信息将包含在 EXE 文件中(但我不能再使用多个大小的图标了):
更新#2
使用资源编辑器Resource Hacker我可以看到EXE文件中确实有版本信息资源。但我在 Windows 资源管理器中看不到这一点,也无法使用 WinAPI 函数(如GetFileVersionInfo )检索它:
更新#3
这是我发现使用相同的 RC 文件但使用不同的资源编译器时会发生的情况: