これを行うには、2回以上の別個のインストールが必要です。それらの間の基本的な違いは、アップグレードテーブル(既にインストールされている製品のメジャーアップグレードを実行し、プログラム&の機能に置き換える)を持ち、もう1つはアップグレードテーブルを持たないということです。製品がサイドバイサイドシナリオでインストールされています。どちらの場合も、インストールされているすべての製品とは異なるProductCodeがあります。
私はあなたがこれを他の方法で行うことはできないと考えているので、ブートストラップが必要です。ブートストラッパーは、ユーザーに何をすべきかを尋ね、インストールの選択肢を起動します。 2つのMSIファイルは必要ありません。アップグレードテーブルのエントリを削除(または追加)するトランスフォーム(.mstファイル)を持つ単一のMSIを持つことができます。 MSIのOrcaをUpgradeテーブルのエントリとともに使用し、エントリを削除してトランスフォームを作成することができます。アップグレードの場合は、MSIファイルを通常どおり起動してください。 TRANSFORMS = [アップグレードテーブルを削除するmstファイル]を含むコマンドラインでMSIをサイドバイサイドで起動します。
もちろん、2つの別々のMSIファイルでこれを行うことはできますが、すでに複数のバージョンのMSIファイルを使用しているように見えます。
もっと簡単な方法があります。古い製品のアンインストールを実行するのはRemoveExistingProductsアクションです。ユーザーが横並びのインストールを望むことを(たとえばプロパティ値を介して)検出する方法がある場合、プロパティでRemoveExistingProductsアクションを条件付きにすることができます。