【问题标题】:Select MSI Features in WiX Bootstrapper在 WiX Bootstrapper 中选择 MSI 功能
【发布时间】:2020-11-27 16:02:42
【问题描述】:

我已经有一个通过 WiX 创建的 MSI 包(具有多个功能)。现在,如果需要,我还想安装 .NET 框架作为先决条件。因此,我创建了一个基于 WiX 的 Bootstrapper 应用程序。为了提供一个漂亮的用户界面,我使用 WPF 为 Bootstrapper 创建了一个自定义 UI。无论如何,现在我想在我的自定义引导程序中创建一个页面,允许用户在开始安装之前从 MSI 中选择功能。以下是我遇到的问题:

  1. 有没有办法从 MSI 获取可用功能,这些功能将安装在自定义 Bootstrapper 应用程序中,以便我可以用相应的“复选框”填充我的用户界面?

  2. 如果我可以列出安装的可用功能(请参阅问题 #1),我如何将 Boostrapper 用户界面中的用户选择应用到我的 MSI 包

任何帮助将不胜感激。

【问题讨论】:

    标签: wpf wix bootstrapper burn wix3.6


    【解决方案1】:

    在您的引导程序代码中,您可以使用 Product Query Functions 打开 MSI 并确定可用功能,然后为每个功能显示复选框。

    要回答您的第二个问题,您只需在启动 MSI 进行安装时在命令行中传递功能名称。逗号分隔您的功能并将它们传递给 ADDLOCAL 属性。

    【讨论】:

    • 这听起来是个好主意,但我不认为 wix 提供对 MsiOpenProduct 之类的功能的访问。还是我在这里错过了什么?
    • 对不起,还有一条评论。我还是有点失落。我现在用我的安装程序玩了几个小时,但我不确定如何使用你提到的功能。例如,我尝试了“Installer.OpenProduct("XXXX");"在 OnPlanComplete 功能中,但我总是得到 - 错误的参数异常。我认为我使用了错误的功能或在错误的上下文中。任何帮助都会非常棒......
    • 说实话,我不知道 WiX 是否在他们的引导程序中原生提供了这个。也许更熟悉它的人可能会回应。我的建议是需要使用 C++、C# 或 VBScript 来与您生成的 MSI 交互。这些年来我做了很多。你可以找到很多这样的示例代码。
    【解决方案2】:

    另一种方法是将 MSI 包沿功能线拆分为多个 MSI 微包。然后根据引导程序中的 UI 选择有条件地安装 MSI 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多