【问题标题】:WiX Bootstrapper - Install MSI from CustomActionWiX Bootstrapper - 从 CustomAction 安装 MSI
【发布时间】:2013-03-17 17:23:11
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的帮助。还有一种方法可以将变量从引导程序传递到 MSI 包吗?
    • 是的,请参阅 MsiProperty 元素的子元素 MsiPackage 元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多