129

ビルド プロセスの一環として、コンパイル済みのすべてのバイナリのバージョン情報を設定する必要があります。一部のバイナリには既にバージョン情報があり (コンパイル時に追加されます)、一部はありません。

次の情報を適用できるようにしたい:

  • 会社名
  • 著作権表示
  • 商品名
  • 製品説明
  • ファイルのバージョン
  • 製品バージョン

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

これどうやってするの?

4

15 に答える 15

73

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

.EXE または .DLL で File->Open->File を使用するだけです。これは、ビルド後にバージョン情報を修正したり、最初からこれらのリソースを持たないファイルに追加したりするのに便利です。

于 2014-07-15T19:38:37.597 に答える
40

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

まず、次の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
    }
}

次に、GoRC.resを使用して、以下を使用してファイルにコンパイルします。

GoRC /fo Resources.res Resources.rc

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

次に、CLI モードでResource Hackerを使用して、既存の に追加します.exe

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

それでおしまい!

于 2013-09-17T00:37:43.107 に答える
23

または、Win32 exe/dllファイル用のフリーウェアStampVerを確認することもできます。
すでにバージョンリソースがある場合でも、ファイルと製品のバージョンのみが変更されます。バージョンリソースが存在しない場合、バージョンリソースを追加することはできません。

于 2009-04-30T18:12:27.983 に答える
21

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

$ rcedit "path-to-exe-or-dll" --set-version-string "Comments" "This is an exe"
$ rcedit "path-to-exe-or-dll" --set-file-version "10.7"
$ rcedit "path-to-exe-or-dll" --set-product-version "10.7"

JavaScript からラップするNPM モジュールと、Gruntを使用している場合のGrunt タスクもあります。

于 2016-02-03T22:26:01.590 に答える
14

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

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

ここから完全なソースを入手できます。

于 2010-01-21T18:12:56.867 に答える
11

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

リソース ファイルやプログラム コードで再利用できるいくつかの定数を定義する 1 つのヘッダー ファイル。維持する必要があるのは 1 つのファイルだけです。Qt プロジェクトでそれを行う方法を教えてくれた Qt チームのおかげで、私の Win32 アプリでも動作するようになりました。

----[バージョン.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      "Copyright 2016 ipanera@gmail.com"
#define VER_LEGALTRADEMARKS1_STR    "All Rights Reserved"
#define VER_LEGALTRADEMARKS2_STR    VER_LEGALTRADEMARKS1_STR
#define VER_ORIGINALFILENAME_STR    "MyProject.exe"
#define VER_PRODUCTNAME_STR         "My project"

#define VER_COMPANYDOMAIN_STR       "www.myurl.com"

#endif // VERSION_H

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

#include <windows.h>
#include "version.h"

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_PRODUCTVERSION
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",        VER_COMPANYNAME_STR
            VALUE "FileDescription",    VER_FILEDESCRIPTION_STR
            VALUE "FileVersion",        VER_FILEVERSION_STR
            VALUE "InternalName",       VER_INTERNALNAME_STR
            VALUE "LegalCopyright",     VER_LEGALCOPYRIGHT_STR
            VALUE "LegalTrademarks1",   VER_LEGALTRADEMARKS1_STR
            VALUE "LegalTrademarks2",   VER_LEGALTRADEMARKS2_STR
            VALUE "OriginalFilename",   VER_ORIGINALFILENAME_STR
            VALUE "ProductName",        VER_PRODUCTNAME_STR
            VALUE "ProductVersion",     VER_PRODUCTVERSION_STR
        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END
于 2016-02-16T10:06:00.233 に答える
11

このツールがありますChangeVersion [1]

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

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

完全開示: 私はこのツールを書いた人を知っています。私は彼と一緒に仕事をしていました。しかし、これは彼が高品質のソフトウェアを作っていることを私が知っているということでもあります ;)


[1]リンクが切れています。download.cnet.comにミラー版があるようです。

于 2008-11-12T15:47:12.447 に答える
9

verpatch は良いですが、Unicode 文字を処理しません... ResourceLib
を 試してください

于 2011-01-19T12:44:46.837 に答える
4

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

  1. 前に示したように、dllproj.rc ファイルを作成および編集しました。
  2. DLL プロジェクトのビルド前の手順として「rc.exe dllproj.rc」行を追加しました。
  3. プロジェクトのリソース フォルダーに dllproj.res を追加しました。

お役に立てれば!

于 2015-09-17T18:03:52.433 に答える
1

これは、この仕事で私が見た中で最高のツールであり、VersionInfo を含むすべてのファイル リソースを完全に制御できます。

参照: Anders MelanderによるResourceEditor

于 2014-05-21T15:19:48.077 に答える
1

よりコンパクトなバージョンをまとめたい

  • ステップ 1: リソースを作成する
  • ステップ 2: ResourceHacker をダウンロードする
  • ステップ 3: res を rc ファイルにコンパイルする
  • ステップ 4: スクリプトの実行: exe の変更

ステップ 1: 作成するresource

リソース ファイルを準備します。resource.rc

VS_VERSION_INFO VERSIONINFO
    FILEVERSION    0,0,0,0
    PRODUCTVERSION 0,0,0,0
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904b0"
        {
            VALUE "CompanyName",        "\0"
            VALUE "FileDescription",    "\0"
            VALUE "FileVersion",        "0.0.0.0\0"
            VALUE "LegalCopyright",     "© 2020 Carson. All rights reserved.\0"
            VALUE "OriginalFilename",   ".exe\0"
            VALUE "ProductName",        "\0"
            VALUE "ProductVersion",     "0.0.0.0\0"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x0409, 1200
    }
}

ステップ 2: ResourceHacker をダウンロードする

取得できる方法は2つあります。

  1. Chocolateyからダウンロード:
  2. ResourceHacker ウェブサイト

ステップ 3:ファイルにコンパイルresするrc

ResourceHacker.exe -open resources.rc -save resources.res ^
 -action compile -log CONSOLE

ステップ 4: スクリプトの実行: exe の変更

SET INPUT_EXE=app.exe
SET OUTPUT_EXE=app.exe
ResourceHacker.exe -open %OUTPUT_EXE% -save %OUTPUT_EXE% ^
 -resource resources.res ^
 -action addoverwrite ^
 -mask VersionInf ^
 -log CONSOLE

要約スクリプト

SET INPUT_EXE=app.exe
SET OUTPUT_EXE=app.exe

ResourceHacker.exe -open resources.rc -save resources.res ^
 -action compile -log CONSOLE

ResourceHacker.exe -open %OUTPUT_EXE% -save %OUTPUT_EXE% ^
 -resource resources.res ^
 -action addoverwrite ^
 -mask VersionInf ^
 -log CONSOLE

参照

于 2021-03-19T03:58:24.757 に答える