1

WiXでブートストラッパーを作成しました。2つのMSIパッケージを持つチェーンが含まれています。実行中は、ビューを表示している.NET-CustomActionを呼び出しています(このサンプルのように:http://bryanpjohnston.com/2012/09/28/custom-wix-managed-bootstrapper-application)。ユーザーはいくつかの設定を選択できます。

ここで、ユーザーがこのビューで特別な設定を選択している場合は、最初のmsiのみをインストールする必要があります。私は今これを行う方法を探しています。最も簡単な方法は、.NETクラス(ViewModel)からMSIインストールを実行できることです。しかし、MSI-Bootstrapperに含まれているMSI-Packageにアクセスして実行するにはどうすればよいですか?

4

1 に答える 1

3

BurnがMSIパッケージを計画するとき、オーバーライドできる各パッケージの「要求された状態」でコールバックします。これを確認するには、PlanPackageBeginイベントに添付してください。そのイベントが提供されPlanPackageBeginEventArgsます。これらのイベント引数では、StateBurnがデフォルトでそのパッケージに対して何をするかを示すフィールドが表示されます。そのStateフィールドは任意に設定できRequestStateます。

たとえば、パッケージが存在せず、あなたがそうPlan()するLaunchAction.Install場合、StateはになりますRequestState.Present。カスタムBAコードは、それを好きなように変更できRequestStateます。したがって、UIは、「そのパッケージをインストールする必要があると思いますが、このユーザーはFooWidgetをインストールするというチェックボックスをオフにして、そのパッケージを作成しますRequestState.Absent」と言うことができます。

ログファイルには計画の結果が表示され、デバッグ時に非常に役立ちます。

于 2013-03-17T21:38:59.063 に答える