WiX 3.6を使用して、カスタム.NET BootstrapperApplicationがあり、チェーンに.Net4.0Webインストーラーが含まれています。
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="$(var.BundleProductName)"
Version="$(var.BundleVersion)"
...
Compressed="yes" DisableRepair="yes" >
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
<PayloadGroupRef Id="MyInstallerUILibs" />
</BootstrapperApplicationRef>
<Chain>
<!-- Install .Net 4 Full -->
<PackageGroupRef Id="NetFx40Web" />
<!-- Install my packages -->
<PackageGroupRef Id="MyPackages" />
</Chain>
</Bundle>
</Wix>
.net 4がインストールされていないマシンでインストーラーを実行すると、ユーザーに期待どおりにダウンロードするように求められ、カスタムUIを表示する前に.net4.0を正しくインストールします。ここまでは順調ですね。
私のUIでは、追加のパッケージをインストールする前に、インストールをキャンセル/終了するオプションをユーザーに提供したいと思います。たとえば、ユーザーがEULAに同意しない場合です。
私が見ているのはこれです: .net 4.0のインストールが実行されて完了した場合、BootstrapperApplication内で、計画/適用アクションを実行する前に終了しますが、バンドルは引き続きWindowsの[プログラムの追加と削除]メニューに表示されます。とを呼び出してみましEngine.Quit((int) ActionResult.NotExecuted)
た
Engine.Quit((int) ActionResult.UserExit)
が、どちらもARPリストから外れているようです。
注:予想どおり、.net4のインストールもAPRリストに表示されます。
そして私の質問はこれです: バンドルのインストールが停止され、バンドル自体が[プログラムの追加と削除]リストに表示されるべきではないことをWiXエンジンに通知する正しい方法は何ですか?