使用 WiX 3.6,我有一个自定义的 .NET BootstrapperApplication,其中我在链中包含了 .Net 4.0 Web 安装程序:
<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 的机器上运行安装程序时,它会提示用户按预期下载并正确安装 .net 4.0,然后再显示我的自定义 UI。到目前为止,一切都很好。
在我的 UI 中,我想在我们安装任何其他软件包之前为用户提供取消/退出安装的选项。例如,如果用户不同意我们的 EULA。
我看到的是这样的:如果 .net 4.0 安装运行并完成,那么在我的 BootstrapperApplication 中,我在执行任何计划/应用操作之前退出,该包仍然显示在 Windows 添加/删除程序菜单中。我试过打电话Engine.Quit((int) ActionResult.NotExecuted)
and
Engine.Quit((int) ActionResult.UserExit)
,但似乎都没有把它排除在 ARP 列表之外。
注意:如预期的那样,.net 4 安装也显示在 APR 列表中。
我的问题是: 向 WiX 引擎发出捆绑安装已停止并且捆绑本身不应显示在“添加/删除程序”列表中的正确方法是什么?