2012-01-15 10 views
1

私はコードを呼び出しているMFCにMsiInstallProduct(installerFullPath, commandLine);Windows MSIは複数のパッケージをインストールできますか?

同時に2つのMSI製品をインストールすることは可能ですか?両方とも独立している限り、 です。

Windows関数を呼び出して、それにすべてのMSIコンポーネントを渡して、それを1つずつインストールしますか?

答えて

4

Windowsインストーラでは、複数のMSIパッケージを同時にインストールすることはできません。インストールをトリガして、最初のインストールが完了するのを待ってから、インストールを開始する必要があります。単一の呼び出しでそれらをインストールする唯一のオプションは、2つのMSIパッケージをチェーンパッケージとして追加する別のMSIパッケージを作成することです。

+0

ここでは、ツールの一覧を示します。どのようにチェーンパッケージを実行しますか?それについての詳しい情報はどこにありますか? – eladyanai

4

Windowsインストーラ4.5以前は、Bogdanの答えは正しいものでした。しかし、Windows Installer 4.5以降では、Multiple-Package Installationを実行することができます。 MsiBeginTransactionMsiInstallProduct,MsiApplyPatchMsiConfigureProductなどのAPIの組み合わせを呼び出し、最後にMsiEndTransactionのように呼び出します。

技術的には、これらはまだ正確には同時にインストールされていません(複数の関数を呼び出す必要があります)が、これらはすべて1つのトランザクションの一部になります。参加しているすべてのパッケージが正しく作成されている場合は、それらはすべてインストール、パッチ適用、または構成(変更または削除)されるか、すべて元の状態にロールバックされます。

1

Michaelが述べた複数パッケージのインストールは、まさに連鎖パッケージのサポートです。また、これには、ターゲットマシンに少なくともWindows Installer 4.5が必要です。

2つをチェーンとして追加するMSIパッケージを作成するには、使用可能な時間に応じて、さまざまなセットアップオーサリングツールを無料で商用することができます。 http://en.wikipedia.org/wiki/List_of_installation_software

+0

は同時に実行されますか? – eladyanai

+0

インストールUIは順番に実行されますが、複数パッケージのインストール基準に基づいて、単一のトランザクションでシステムの変更がコミットされます。したがって、メインパッケージがファイルをインストールしているとき、UIシーケンスが終了していても、すべての連鎖パッケージからファイルをインストールします。 –

関連する問題