1

我用 WiX 创建了一个引导程序。它包含一个带有两个 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. 在这些事件中,您将看到 args 字段,该State字段将告诉您默认情况下 Burn 会对该包执行什么操作。您可以将该State字段设置为任何RequestState您想要的。

例如,如果包裹不存在,而您则将Plan()是。您的自定义 BA 代码可以将其更改为您想要的任何内容。因此,您的 UI 可能会说:“我知道您认为您应该安装该软件包,但该用户未选中安装 FooWidget 的框,因此请制作该软件包。”LaunchAction.InstallStateRequestState.PresentRequestStateRequestState.Absent

日志文件将向您显示计划的结果,并且在调试时非常有用。

于 2013-03-17T21:38:59.063 回答