同時インストール

同時インストール (別名: 入れ子インストール) は、Windows インストーラーの非推奨の機能です。 同時インストールでインストールされたアプリケーションは、顧客が正しく保守することが難しいため、最終的に問題となる可能性があります。 一般リリースする予定の製品をインストールする場合、同時インストールは使用しないでください。 同時インストールを、一般リリースする予定がないアプリケーションのインストールに使用する場合、管理された企業環境では、その適用性が制限される可能性があります。 一般配布用ではないアプリケーションで同時インストールを使用したいパッケージ作成者向けに、同時インストールに関するドキュメントが提供されています。

同時インストール アクションでは、実行されるインストール中に別の Windows インストーラー パッケージがインストールされます。 CustomAction テーブルに同時インストール アクションを作成し、そのカスタム アクションをシーケンス テーブルにスケジュールすることで、同時インストールがパッケージに追加されます。 CustomAction テーブルの Target フィールドには、同時インストールで使用されるパブリック プロパティ設定の文字列が含まれます。 CustomAction テーブルの Source フィールドにより、同時パッケージが識別されます。 同時インストール アクションでは、現在のアプリケーションのインストール パッケージによってインストールされたアプリケーションのみを再インストールまたは削除できます。

同時インストール アクションの種類は、CustomAction テーブルの Type フィールドで指定します。 同時アプリケーションのパッケージは、カスタム アクションの種類に応じて、メイン パッケージのサブストレージに配置すること、プロパティで指定した場所にファイルとして配置すること、またはユーザーのマシンにアドバタイズされたアプリケーションとして配置することができます。 次の種類のカスタム アクションは、同時インストールを実行します。

カスタム アクションの種類 説明
カスタム アクションの種類 7 インストール パッケージに存在する製品の同時インストール。
カスタム アクションの種類 23 現在のソース ツリー内のインストーラー パッケージの同時インストール。
カスタム アクションの種類 39 アドバタイズされたインストーラー パッケージの同時インストール。

 

同時インストールでは、メイン インストールと同じユーザー インターフェイスとログ設定が共有されます。

同時インストール アクションは、メイン インストールのアクション シーケンスの InstallInitialize アクションInstallFinalize アクションの間に配置する必要があります。 メイン インストールのロールバック時に、インストーラーは同時インストールもロールバックします。 インストーラーは、同時インストールとメイン インストールのロールバック情報を組み合わせるため、同時インストール アクションで遅延実行を使用する必要はありません。 ロールバック インストールでは、すべての変更が元に戻されます。

同時インストール アクションの戻り値は、他のカスタム アクションと同じです。 「カスタム アクションの戻り値」を参照してください。

システムの自動再起動を指定する、またはユーザーに再起動を要求する標準アクションまたはカスタム アクションでは、同時インストール内からも再起動または要求を実行できます。

インストーラーは、同時インストールを開始すると、同時インストールが完了するまで、およびメイン インストールを続行する前に、他のすべてのインストールをロックアウトします。 インストーラーは、同期カスタム アクションとしてのみ同時インストールを実行できます。 「同期/非同期カスタム アクション」を参照してください。 「カスタム アクションの戻り処理オプション」で説明されているオプション フラグは、なし (+0) または msidbCustomActionTypeContinue (+64) に設定する必要があります。

同時インストール アクションでは、通常インストールで MsiInstallProduct を使用するのと同じ方法で、ローカルで実行するアプリケーション、ソースから実行するアプリケーション、再インストールするアプリケーション、または削除するアプリケーションをインストールできます。 インストールの種類を指定するには、同時インストール アクションに ADDLOCALADDSOURCEREINSTALL、または REMOVE プロパティを渡します。

同時インストール アクションは、アクションのペアで作成できます。一方のアクションはインストールに使用され、もう一方のアクションは同時インストールの削除に使用されます。 インストールには、カスタム アクションの種類 7 またはカスタム アクションの種類 23 が通常は使用されます。 親製品のアンインストール時に同時インストールを削除するために、カスタム アクションの種類 39 が通常は使用されます。 CustomAction テーブルの削除カスタム アクションのレコードで、Source フィールドに製品コードの GUID を含めることができ、Target フィールドに "REMOVE=ALL" を含めることができます。 2 つのカスタム アクションは、相互に排他的な条件を使用してアクション シーケンス テーブルで作成する必要があります。 たとえば、製品をインストールするカスタム アクションの Condition フィールドには "NOT Installed" を設定でき、同時インストールを削除するカスタム アクションの Condition フィールドには REMOVE="ALL" を設定できます。

パッケージのコストをクエリする方法はありません。 これにより、同時インストールのコスト計算が難しくなります。 同時インストールに関連するコンポーネントのフォルダーと最悪の場合のコストを示すために、行を ReserveCost テーブルに追加する必要があります。

同時インストール アクションで使用できるカスタム アクションの戻り処理オプションは、なし (+0) または msidbCustomActionTypeContinue (+64) のみです。

親インストールでは、同時インストール アクションとして独自のパッケージを呼び出すことができないので注意してください。

マシンごとのインストールでユーザーごとの同時インストールを実行しようとすると、インストーラーは既定で親インストールをユーザーごとに登録します。 これが原因で、インストーラーがアプリケーションを誤って削除することがあります。これは、アプリケーションが実際にはユーザーごとに登録されているにもかかわらず、インストーラーがマシンごとにアプリケーションをアンインストールしようとするためです。 同時インストールの状態をその親インストールの状態と同期させるには、CustomAction テーブルの Target 列に ALLUSERS="[ALLUSERS]" と入力します。 この場合、親インストールがマシンごとの場合は同時インストールもマシンごととなり、親インストールがユーザーごとの場合は同時インストールもユーザーごととなります。

開発者は、同時インストールを作成するときに、次の警告に注意する必要があります。

  • 同時インストールでは、コンポーネントを共有できません。
  • 管理インストールに同時インストールを含めることはできません。
  • パッチ適用とアップグレード処理は、同時インストールでは機能しない場合があります。
  • インストーラーが、同時インストールのコストを適切に計算しない場合があります。
  • 統合 ProgressBars は、同時インストールでは使用できません。
  • アドバタイズされるリソースは、同時インストールではインストールできません。
  • 親製品がアンインストールされるとき、アプリケーションの同時インストールを実行するパッケージで、同時アプリケーションのアンインストールも実行する必要があります。

パッケージが同時インストールとしてインストールされないようにするには、LaunchCondition テーブルに次のいずれかの条件付きステートメントを追加します。 これにより、別のインストールによって実行される同時インストール アクションで、パッケージがインストールされなくなります。 このようにしても、RemoveExistingProducts アクションでパッケージを削除できます。 ParentOriginalDatabase プロパティと ParentProductCode プロパティも参照してください。

"Not ParentProductCode"
"Not ParentOriginalDatabase"