WiX Bootstrapper - 从CustomAction安装MSI

时间:2013-03-17 17:23:12

标签: c# .net wix custom-action bootstrapper

我用WiX创建了一个Bootstrapper。它包含一个带有两个MSI-Packages的链。当它正在运行时,它正在调用一个显示View的.NET-CustomAction(如此示例:http://bryanpjohnston.com/2012/09/28/custom-wix-managed-bootstrapper-application),用户可以在其中选择一些设置。

现在,当用户在此视图中选择特殊设置时,我必须仅安装第一个msi。我现在正在寻找一种方法来做到这一点。最简单的方法是,我可以从我的.NET类(ViewModel)运行MSI-Installation。但是如何访问MSI-Bootstrapper中包含的MSI-Package并运行它呢?

1 个答案:

答案 0 :(得分:3)

当Burn计划你的MSI包时,它会以你所覆盖的每个包的“请求状态”回调。要查看此附加到PlanPackageBegin事件。该事件由PlanPackageBeginEventArgs提供。在那些事件args中,您将看到State字段,该字段将告诉您默认情况下Burn将为该程序包执行的操作。您可以将State字段设置为您想要的任何RequestState

例如,如果包不在,而您Plan() LaunchAction.Install,则State将为RequestState.Present。您的自定义BA代码可以将其更改为您想要的RequestState。因此,您的UI可以说,“我知道您认为应该安装该软件包,但是该用户取消选中安装FooWidget的框,以便创建该软件包RequestState.Absent。”

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

相关问题