1

コマンドラインでバージョン情報を取得するようにリソースビルドを構成しようとしています

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 値を使用する
4

1 に答える 1

2

私も破損を見ましたが、IDE を使用していて、あなたが見たものを説明していないので、それがあなたのケースと一致するかどうかはわかりません。次回スクリーンショットを投稿します。数値は ASCII ではなくバイナリで埋め込まれ、プロパティ シートで表示すると 1 文字 (中央に白い円がある黒い四角形) が生成されます。文字コード 8。

文字列を 2 組の二重引用符で囲んで修正し、内側のペアが cmd.exe を通過しても存続するようにしました。

/DVERDOT=""8.0.0.0""
于 2012-07-11T03:20:18.457 に答える