3

プロジェクト オプション/バージョンを使用して、バージョン情報 (NNNN 形式) を管理します。

とにかく私のプロジェクト内で私はそれらの情報を複製します。

したがって、プロジェクト オプションで、アプリケーション内でリリース 2.4.3.178 に取り組んでいる場合、4 つの数値を保持する 4 つの整数変数があります。

手動で設定しました

Major := 2;
Minor := 4;
Release := 3;
Build := 178;

理由は簡単です。バージョン番号に基づいてライセンスを取得しています。したがって、ユーザーがリリース「2.4」を購入した場合、バージョン「3.0」にアップグレードすることはできません。

しかし、プロジェクトのバージョン情報に依存している場合、ユーザーは (Resource Hacker ツールを使用して) バージョン情報を変更できるため、製品を「アクティブ化」できます。

ユーザーは同じ方法で 4 つの変数を変更することはできません (少なくともそれほど簡単ではありません)。

これは機能しますが、情報を複製する必要があります。

より良いアプローチを提案できますか?

そうでなければ、これらの 4 つの変数に書き込むデータを使用してバージョン情報を書き込む方法はありますか。ビルド後のイベントのようなものですが、ビルド後のイベントにデータを渡すにはどうすればよいですか?

4

3 に答える 3

3

リンクする前に .res ファイルをビルドする必要があるため、ビルド後のイベントではなくビルド前のイベントが必要です。

バージョン番号の定数宣言を含むインクルード ファイル (.inc) を読み取る単純な Perl スクリプトを使用して、非常によく似た処理を行います。正規表現を使用してそれらを読み取り、brcc32 に渡す .rc ファイルを作成します。すべてビルド前のアクションとして呼び出されます。

于 2011-04-05T08:02:02.833 に答える
2

あなたは Delphi-XE を使用しており、Final Builder を持っているので、それを有効に活用して、それから「最終」ビルドを作成してみませんか? これは、バージョン番号の問題に対して非常に優れた解決策を提供し、さらに多くのことを行うことができます。

これが私がそれを行う方法です。

  • バージョン情報の関連部分を保持する小さな INI ファイルを設定します。
  • 必要に応じて、INI ファイルからバージョン番号を読み取り、それを変更する機会を与える小さな Delphi フォーム アプリケーションを作成します。変更が INI ファイルに保存されると、Delphi アプリケーションは、定数を定義する小さな Delphi PAS ファイルを自動的に生成する必要があります。
  • 以下を実行する FinalBuilder プロジェクトを作成します。
    • Delphi exe を呼び出して、バージョン番号を設定します。変更が必要なものはすべて変更する必要があります。ライセンス方式はバージョン情報に依存するため、これはおそらく適切です。
    • バージョン情報番号を保持するために、いくつかのプロジェクト変数を設定します
    • 「INI ファイルの読み取り」アクションを追加して、ini ファイルからプロジェクト変数にバージョン情報を読み取ります。
    • (オプション) 単体テスト プロジェクトがある場合は、それをビルドします。
    • (省略可能) 単体テスト プロジェクトを呼び出します。
    • 「Delphi プロジェクトのビルド」アクションを追加し、必要なオプションを使用してプロジェクトをビルドするように設定します。小さな「Before」スクリプトを追加して、INI ファイルから読み取ったばかりのプロジェクト変数に含まれているバージョン情報番号を設定します。
    • (オプション) 使用するツールを使用してセットアップ パッケージを作成します。
    • (オプション) これらのセットアップ パッケージを Web サイトにアップロードします。

つまり、この機会に Final Builder を使い始めてください。

于 2011-04-05T08:43:12.930 に答える
0

バージョン番号をコードに移すのも簡単です。

情報を渡す 1 つの方法は、version.rc ファイルをプログラムで生成し (delphi または選択したスクリプト言語を使用して小さなビルド ツールを自分で作成します)、組み込みのバージョンを使用する代わりに、リソースをプログラムにリンクすることです。情報機能。

あなたの質問は、基本的に、ユーザーがバージョン番号を決定したら(簡単に)変更できないようにする問題のようです。

したがって、VersionInfo 構造のバージョンではなく、バージョン番号を暗号化し、暗号化されたバージョンを使用することをお勧めします。

私はこのようなものに DCPCRYPT を使用しました。しかし、ハッカーの侵入を防ぎたいのであれば、これだけは言わせてください。あなたができることは何でも、ハッカーは取り消すことができます。より安全にしたい場合は、アプリケーション全体の改ざん防止も必要になります。商用の改ざん防止ソリューションはありますが、Delphi ですぐに使用できるものはありません。

于 2011-04-05T15:45:38.873 に答える