2

使用 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 引擎发出捆绑安装已停止并且捆绑本身不应显示在“添加/删除程序”列表中的正确方法是什么?

4

1 回答 1

1

Burn 在链开始后立即在 ARP 中注册,因此用户可以,例如,重新安装中途失败的链,而不会导致整个链失败。CLR 安装为来自 pre-req BA 的捆绑包链的一部分(因为在安装 CLR 之前您的 BA 无法加载)。

于 2012-09-19T01:23:32.610 回答