製品 A と B がそれぞれ複数の MSI をインストールし、一部の MSI が同じ場合、A または B のいずれかをアンインストールすると、もう一方に影響しますか? 設置場所は重要ですか?
また、一般的な MSI C のバージョンが製品 B で高く、B がインストール時に C をアップグレードするとどうなりますか? ここで、B をアンインストールすると、製品 A を破壊する一般的な MSI C が削除されます。Permanent フラグを使用せずに、これをどのように適切に処理しますか?
製品 A と B がそれぞれ複数の MSI をインストールし、一部の MSI が同じ場合、A または B のいずれかをアンインストールすると、もう一方に影響しますか? 設置場所は重要ですか?
また、一般的な MSI C のバージョンが製品 B で高く、B がインストール時に C をアップグレードするとどうなりますか? ここで、B をアンインストールすると、製品 A を破壊する一般的な MSI C が削除されます。Permanent フラグを使用せずに、これをどのように適切に処理しますか?
この質問で最初に頭に浮かぶのは、問題の製品が本来あるべき方法で分解されているかどうかです。
原則として、すべての MSI ファイルは自分がインストールしたものを所有していると見なし、参照カウント (コンポーネントを使用している製品の数) がゼロの場合、アンインストール時に MSI 内のコンポーネント GUID に関連付けられているすべてのものをアンインストールします。
この規則にはいくつかの条件があります。
MSI パッケージ間で共有コンポーネントを作成するためのメカニズムは、一般的に次のとおりです。
更新とファイルの置換:
この時点で、これらの回答を徹底的に読みます。
Wix を使用している場合、または Wix を使用する意思がある場合、重複する製品に対処する最善の方法は、インストーラーを必要に応じてメインのインストーラーに含めるWix セグメント ソース ファイルに分解することだと思います。これにより、1 つの製品をアンインストールしても、他のアプリケーションで使用されているコンポーネントをそのまま残すことができます。
そうは言っても、この記事(上記にもリストされています)にリストされている理由により、インストーラーであまりにも多くの重複する依存関係を引き起こすのは好きではありません:複数のアプリケーションをインストールする Wix。
安定性のためには、共有コンポーネントがコンパイルまたはマージされるすべてのセットアップの再コンパイルが一般的なルールとして必要になるため、バグ修正としてあまりにも多くのセットアップで使用される前に、共有コンポーネントが安定していることが非常に重要です。簡単に言うと、一緒に変更されるファイルをまとめてバンドルします。
この大規模な再コンパイルの必要性に対抗するために、いくつかの共有コンポーネントで構成されるスタンドアロンのサポート セットアップを提供することを選択できます。Wix が含まれる可能性が高い「共有コンポーネント設定」の 1 つまたは 2 つには、同様の遅いリリース スケジュールで一緒に変更が含まれ、各製品の個別の設定は、バランスを維持しながら展開のニーズに対応できる必要があります。保守性と柔軟性の間。
製品のセットアップは頻繁に再コンパイルする必要があり、共有モジュールのセットアップは再コンパイルが最小限になるように設計する必要があります。次に、要件の変更を待ちます:-)。
私にとっては、結束と結合がすべてであり、販売、マーケティング、および技術的ニーズのバランスを取ることの難しさです。