94


38

ビルドプロセスの一環として、コンパイルしたすべてのバイナリのバージョン情報を設定する必要があります。 いくつかのバイナリはすでにバージョン情報を持っていて(コンパイル時に追加されています)、持っていないものもあります。

以下の情報を適用できるようにしたいです。

  • 会社名

  • 著作権表示

  • 商品名

  • 製品説明

  • ファイルバージョン

  • 製品バージョン

これらの属性はすべてビルドスクリプトによって指定され、コンパイル後に適用する必要があります。 これらはC Builder 2007でコンパイルされた標準のバイナリです(アセンブリではありません)。

これどうやってするの?

14 回答


49


バッチ処理ではありませんが、Visual Studioはファイルリソースを追加/編集することもできます。


29


他の多くの答えとは異なり、このソリューションは完全にフリーのソフトウェアを使用しています。

まず、このように `Resources.rc`というファイルを作ります。

VS_VERSION_INFO VERSIONINFO
    FILEVERSION    1,0,0,0
    PRODUCTVERSION 1,0,0,0
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904b0"
        {
            VALUE "CompanyName",        "ACME Inc.\0"
            VALUE "FileDescription",    "MyProg\0"
            VALUE "FileVersion",        "1.0.0.0\0"
            VALUE "LegalCopyright",     "© 2013 ACME Inc. All Rights Reserved\0"
            VALUE "OriginalFilename",   "MyProg.exe\0"
            VALUE "ProductName",        "My Program\0"
            VALUE "ProductVersion",     "1.0.0.0\0"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x409, 1200
    }
}

次に、http://www.godevtool.com/ [GoRC]を使ってそれを `.res`ファイルにコンパイルします。

GoRC /fo Resources.res Resources.rc

^( `GoRC.exe`のミラーについては、以下の私のコメントを参照してください)^

次に、CLIモードでhttp://www.angusj.com/resourcehacker/[Resource Hacker]を使用して、既存の `.exe`に追加します。

ResHacker -add MyProg.exe, MyProg.exe, Resources.res,,,

それでおしまい!


22


あるいは、Win32 exe / dllファイルのためのフリーウェアhttp://blog.dixo.net/downloads/stampver / [StampVer]をチェックすることができます。 ファイルと製品のバージョンが変更されるのは、バージョンリソースがすでにある場合です。 バージョンリソースが存在しない場合は追加できません。


16


  • rcedit *は比較的新しく、コマンドラインからうまく機能します。https://github.com/atom/rcedit

$ rcedit "exeファイルへのパス" --set-version-string "コメント" "これはexeファイルへのパスです" $ rcedit "exeファイルへのパス" --set-file-version " 10.7 "$ rcedit" exeまたはexeファイルへのパス "--set-product-version" 10.7 "

JavaScriptからそれをラップする NPMモジュールと、あなたの場合には Gruntタスクもあります。 Gruntを使っている。


14


このようなものはどうですか?

verpatch / va foodll.dll%VERSION%%FILEDESCR%%COMPINFO%%PRODINFO%%BUILDINFO%


10


このツールはhttp://www.the-software-box.com/changeversion.aspx[ChangeVersion] ^ [1] ^あります。

機能のリスト(Webサイトから):

_ * コマンドラインインターフェース * .EXE、.DLL、および.RESファイルのサポート * バージョンマスクに基づいてFileVersionとProductVersionを更新する * バージョンキー文字列の追加/変更/削除 * ファイルフラグを調整する(debug、special、privateなど) * プロジェクトファイルを更新する(.bdsproj | .bpr | .bpk | .dproj) * メインアプリケーションアイコンの追加/変更 * 設定とともにiniファイルを使用する * Windows Vistaのサポート(昇格が必要) * 継続的なビルド環境に簡単に統合できます _

完全な開示:私はこのツールを書いた男を知っています、私は彼と仕事をしていました。 しかし、これはまた彼が高品質のソフトウェアを作っていることを私が知っていることを意味します。

'' '' '

^ [1] ^リンクが切れています。 http://download.cnet.com/ChangeVersion/3000-2383_4-75765045.html [download.cnet.com]にミラー化されたバージョンがあるようです。


8


verpatchはいいのですが、Unicode文字を扱えません…​ ResourceLibを試してください。


5


私は追加のツールなしでそれをやっています。 私はWin32アプリプロジェクトに次のファイルを追加しました。

私たちのリソースファイルやプログラムコードでさえ再利用できるよりもいくつかの定数を定義する一つのヘッダファイル。 1つのファイルを保守するだけで済みます。 Qtプロジェクトでそれを実行する方法を私に示したQtチームのおかげで、それは今また私のWin32アプリでも動作します。

---- [version.h] ----

#ifndef VERSION_H #define VERSION_H

#define VER_FILEVERSION 0,3,0,0 #define VER_FILEVERSION_STR "0.3.0.0 \ 0"

#define VER_PRODUCTVERSION 0,3,0,0 #define VER_PRODUCTVERSION_STR "0.3.0.0 \ 0"

#define VER_COMPANYNAME_STR "IPanera" の#define VER_FILEDESCRIPTION_STR "Localizaのarchivosのduplicados" の#define VER_INTERNALNAME_STR "MyProjectと" の#define VER_LEGALCOPYRIGHT_STR "著作権2016 [email protected]" の#define VER_LEGALTRADEMARKS1_STR "すべての権利予約" の#define VER_LEGALTRADEMARKS2_STR VER_LEGALTRADEMARKS1_STRの#define VER_ORIGINALFILENAME_STR「MyProjectと。 exeファイル "#define VER_PRODUCTNAME_STR"私のプロジェクト "

#define VER_COMPANYDOMAIN_STR "www.myurl.com"

#endif // VERSION_H

---- [MyProjectVersion.rc] ----

#include #include "version.h"

VS_VERSION_INFO VERSIONINFO FILEVERSION VER_FILEVERSION PRODUCTVERSION VER_PRODUCTVERSIONはLegalTrademarks1、VER_COMPANYNAME_STR値 "変数FileDescription"、VER_FILEDESCRIPTION_STR値 "ファイルバージョン"、VER_FILEVERSION_STR値 "InternalName"、VER_INTERNALNAME_STR値 "LegalCopyright"、VER_LEGALCOPYRIGHT_STR VALUE」ブロック "StringFileInfoは" ブロック "040904E4の" BEGIN VALUE "得意先" をBEGIN BEGIN "、VER_LEGALTRADEMARKS1_STR値" LegalTrademarks2 "、VER_LEGALTRADEMARKS2_STR値" OriginalFilename "、VER_ORIGINALFILENAME_STR値" ProductName "、VER_PRODUCTNAME_STR値" ProductVersion "、VER_PRODUCTVERSION_S

ブロック "VarFileInfo"開始値 "Translation"、0x409、1252 END END


2


Heaventoolsソフトウェアから* http://www.heaventools.com/command-line_resource_editor.htm [Resource Tunerコンソール] *があります。

_ リソースチューナーコンソールは、開発者が多数のWindows 32ビットおよび64ビット実行可能ファイルのさまざまなリソースタイプの編集を自動化できるようにするコマンドラインツールです。 _

詳しくはhttp://www.heaventools.com/rtconsole-sample-script-update-version-info.htm [バージョン変数の変更とバージョン情報の更新]ページを参照してください。


2


パーティーには少し遅れましたが、私はそれを探していたので(そしていつかまたそれを見つける必要があるかもしれません)、ここに私がバージョン、会社名などを含めるためにしたことがあります VS2013 Expressの下で私のC DLLに:

  1. 前述のように、dllproj.rcファイルを作成および編集しました。

  2. DLLプロジェクトのビルド前の手順として「rc.exe dllproj.rc」という行を追加しました。

  3. プロジェクトのリソースフォルダにdllproj.resを追加しました。

お役に立てれば!