5

そのため、製品管理部門は、ソフトウェアのバージョン番号を通常の 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 ドキュメントを読みましたが、これを行うために設定できるフラグが見つかりません。

4

1 に答える 1

1

CodeProject で見つけたこのシェル拡張機能をビルドしてインストールした後、これは Windows 7 が versioninfo プロパティのサブセットのみを表示することが原因のようで、それを変更するために私にできることは何もありません。FileVersion 文字列は exe に存在しますが、デフォルトのプロパティ ダイアログには表示されません。

于 2012-06-13T12:36:54.753 に答える