1

私たちは、各ローカル クライアントのインストールにどのファイルを含めるかについて、選択と組み合わせのアプローチを可能にするセットアップ プロジェクトを作成したいと考えていました。

基本的に、一度だけビルドしたいコア setup.exe があり、これにはほとんどの製品が含まれています。ただし、クライアントごとに、ソリューションに適合するカスタム DLL があります。カスタム DLL は実行時にソフトウェアによって動的にロードされ、正常に動作しています。問題はセットアップにあります。

もちろん、1) クライアントごとに個別のカスタム Setup.exe を作成することもできます。2) 単一の setup.exe を保持し、顧客のためにビルドを実行するたびにカスタマイズします。

しかし、これらのアプローチはどちらも問題があります。

あまりにも複雑な理由から、以下のアプローチが最も安全で簡単です。

  1. 単一のセットアップ プロジェクトを維持する
  2. すべてのカスタム DLL をセットアップ プロジェクトに追加しますが、PackageAs=Loose (およびVital=Falseも)に設定します。
  3. 次に、インストール ファイルを顧客にロールアウトするたびに、セットアップ ファイルから顧客自身のカスタム DLL を除くすべてのカスタム DLL を除いたものを送信します。

私たちの問題は、クライアントで setup.exe を実行すると、このアプローチが失敗することです。この顧客のファイル システムから静かに削除したすべての DLL をsetup.exeがまだ認識していることを除けば、すべて問題ありません。そして、インストーラーは、それらを見つけることが期待されるすべてのファイルを見つけられない場合、叫び始めます:

ここに画像の説明を入力

実際には、これは問題ではありません。 [続行]をクリックすると、すべて正常に動作するからです。

ただし、実際に問題です。なぜなら、ペプシに販売している場合 (私たちはそうではありませんが、販売していたと言います)、インストーラーに、インストールの途中です。

PackageAsフィールドにExtremely Looseの設定を追加して、ファイルが見つからなくてもインストーラーが心配する必要がないようにする必要があります。

サードパーティのインストーラーを学ばなくても、既存のアプローチで解決策はありますか?

4

1 に答える 1

0

オプションのコンポーネントをマージモジュールとして作成する必要があるようです。その場合、特定のモジュールのみを含む特定のインストーラーを作成する必要があります。他のクライアントに公開したくないクライアント固有のライブラリがあるようです。もちろん、これはクライアントごとにビルドが必要になることを意味しますが、それは自動化できるものです。

于 2012-10-08T16:35:18.580 に答える