2016-02-10 62 views
0

我正在嘗試使用VERSIONINFO資源的'評論'字段。目標程序是64位Windows EXE文件(使用VS 2015編譯)。「評論」部分VERSIONINFO未顯示

正確顯示版本,版權,說明等所有元素 - 「評論」除外。 我像StringFileInfo塊的其他元素一樣定義它。類似的東西:

VS_VERSION_INFO VERSIONINFO 
FILEVERSION  FILEVER 
PRODUCTVERSION PRODUCTVER 

FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 
#ifdef _DEBUG 
FILEFLAGS VS_FF_DEBUG 
#else 
FILEFLAGS 0x0L 
#endif 

FILEOS   VOS__WINDOWS32 
FILETYPE  VFT_APP 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "000004b0" 
     BEGIN 
     VALUE "FileDescription", PROGRAM_NAME 
     VALUE "LegalCopyright", COPYRIGHT_NOTE 
     VALUE "CompanyName",  "My Company\0" 
     VALUE "FileVersion",  STRFILEVER 
     VALUE "ProductName",  STRPRODUCTNAME 
     VALUE "ProductVersion", STRPRODUCTVER 
     VALUE "InternalName",  "program\0" 
     VALUE "OriginalFilename", "program.exe\0" 
     VALUE "Comments",   "A comment to show\0" 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
    VALUE "Translation", 0x0000, 0x04b0 
    END 
END 

當我顯示PowerShell的版本信息,如:

(dir *.exe).VersionInfo|fl 

空 「註釋」 顯示。

我還從Sysinternals的sigcheck程序:

sigcheck -a .\program.exe 

它顯示:

... 
Comments:  n/a 
... 

「N/A」?這是否意味着我需要設置一些特殊的標誌,或者什麼來獲得評論顯示?

+0

無法重現,我收到「顯示評論」。使用VIsual C++ 2015 32位。 –

+0

也許這是您使用的實用程序有問題?如果在Visual Studio中將EXE作爲資源加載,會怎麼樣?你看到評論嗎?我知道Windows資源管理器不會爲您提供完整的版本信息塊,因此如果其他實用程序只能爲您提供部分信息,這並不令人驚訝。 – PaulMcKenzie

+0

還測試了64位Visual C++ 2015,工作正常。 –

回答

0

爲了使它工作,我不得不添加/ d _UNICODE/d UNICODE資源編譯器命令行:

rc.exe /D _UNICODE /D UNICODE .... 

有了這樣的命令行 - 評論在那裏!看起來很奇怪,它只需要評論,而其他預定義的字段不需要它。無論如何 - 謝謝你們提示 - 我看看VS如何做到這一點。