そのため、製品管理部門は、ソフトウェアのバージョン番号を通常の 4 桁ではなく 3 桁にすることを決定しました (たとえば、1.2.3.4 ではなく 1.2.3)。
これは、[バージョン情報] ダイアログや UI の他の場所で簡単に実行できますが、Windows プロパティに問題があります。
VERSIONINFO ブロックの値を次のように変更すると:
FILEVERSION 1,2,3
PRODUCTVERSION 1,2,3
VALUE "FileVersion", "1.2.3"
VALUE "ProductVersion", "1.2.3"
exeのWindows 7の[プロパティ]> [詳細]タブで、次のようになります。
ファイルのバージョン: 1.2.3.0 製品のバージョン: 1.2.3
値をすべて異なるものに変更すると、「ファイル バージョン」は FILEVERSION から取得されるため、常に 4 桁のグループ値としてフォーマットされますが、「製品バージョン」は「ProductVersion」から取得されます。
「ファイルバージョン」を「FileVersion」文字列値から取得するように指定する方法はありますか? FILEVERSION ブロックを削除すると、「ファイル バージョン」が 0.0.0.0 になります。
空の Win32 コンソール アプリケーションを作成し、既定のバージョン リソースを追加することで、VS2010 でこの動作を再現しました。
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,1
PRODUCTVERSION 1,0,2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080904b0"
BEGIN
VALUE "CompanyName", "TODO: <Company name>"
VALUE "FileDescription", "TODO: <File description>"
VALUE "FileVersion", "1.0.3"
VALUE "InternalName", "VersionT.exe"
VALUE "LegalCopyright", "Copyright (C) 2012"
VALUE "OriginalFilename", "VersionT.exe"
VALUE "ProductName", "TODO: <Product name>"
VALUE "ProductVersion", "1.0.4"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x809, 1200
END
END
同じ問題が発生します: プロパティ http://media.use.com/images/s_1/4ba4e5b1b235179b1c9a.jpg
この画像は小さいかもしれないので、ファイル バージョン 1.0.1.0 製品バージョン 1.0.4 であることを確認します。
これが私たちにできる最善の方法であると製品管理に伝える前に、代わりに Windows に "FileVersion" 文字列値を表示させる方法はありますか? MSDN の VERSIONINFO ドキュメントを読みましたが、これを行うために設定できるフラグが見つかりません。