コマンドラインでバージョン情報を取得するようにリソースビルドを構成しようとしています
rc.exe /DVERCSV=8,0,0,0 /DVERDOT="8.0.0.0"
最初はうまくいっていると思っていたのですが、何か不具合があるようです。
エクスプローラーで表示すると破損しているようです - ProductVersion 文字列にゴミが表示されますが、exe または res ファイルを開くと文字列値が正しく表示されます
ただし、値をrcに直接保存するか、visualstudioリソースエディターで「同じ」値に編集する場合(.resへのコンパイル後)、エクスプローラーは目的の値を表示できます(保存するためのマイナーチェンジ)。
VS_VERSION_INFO VERSIONINFO
FILEVERSION VERCSV
PRODUCTVERSION VERCSV
FILEFLAGSMASK 0x17L
FILEFLAGS 0x0L
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", "XXX Application"
VALUE "FileVersion", VERDOT
VALUE "InternalName", "XXX"
VALUE "LegalCopyright", "Copyright (C) 2010"
VALUE "OriginalFilename", "XXX.exe"
VALUE "ProductName", "XXX Application"
VALUE "ProductVersion", VERDOT
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
解決するために他にもさまざまなことを試しました
- 末尾の null がありませんか?
- VALUE "製品バージョン"、VERDOT "\0"
- \DVERDOT="8.0.0.0\0"
- 注文
- 他の翻訳
- コード ページの変更
- #pragma code_page(1200)
- セカンダリ #define ファイル
- #VERDOT を使用して文字列を引用符で囲む
- 代わりに CSV 値を使用する