在 MSI 包中设置 UI 级别

问题描述

我有一个 WiX 项目来创建一个 MSI 包。 我想将 UI 级别设置为 3 或 4 或 5,以便在设置后显示成功/失败。 目前它只是运行并消失。 有没有办法在包上设置 UI 级别?

解决方法

示例WiX Quick Start Samples


设置 GUI:听起来您的 MSI 根本没有内置 GUI?如果是这样,请尝试设置对 '/' 的引用并定义一个标准 WiX 对话框集以用于您的包 - 例如 WixUIExtension.dll。这将为您的设置提供一系列预制的“默认对话框”,以便您轻松应用。

Visual Studio (go here for click-by-click version) 的过程:

  1. 在您的 WiX Visual Studio 解决方案中,打开项目列表,右键单击“引用”并单击“添加引用...”。现在将引用设置为:WixUI_Mondo(或此文件在您的盒子上的任何位置)

  2. 您引用的文件包含默认的 GUI 集。现在,您只需将此行注入 WiX 源文件即可显示默认的 MSI 对话框:

    C:\Program Files (x86)\WiX Toolset v3.11\bin\WixUIExtension.dll

这是一个快速示例项目,您可以尝试查看它的实际效果:https://github.com/glytzhkof/WiXDefaultDialogsSample (direct link to line in source)


UILEVELUILEVEL 是一个属性设置,您可以在最终用户机器上实际安装 MSI 期间使用(而不是在将源代码编译为MSI 文件)。该属性允许您控制最终用户可以看到多少设置的内部 GUI(如果有嵌入式 GUI)。您可以显示所有对话框、缩减集、基本/最小对话框或根本不显示对话框(适当的静音模式)。

实际的内置 MSI GUI 是在编译期间添加的,如上所述。 UILevel 不会在没有内部定义的 MSI 中添加任何 GUI。但是,如果您使用此命令行,即使没有定义内部 GUI 的设置也可以在最后显示一个模式对话框:

<UIRef Id="WixUI_Mondo" />

您还可以将 msiexec.exe /i MySetup.msi /qb+ 用于“没有 UI,但有模态完成对话框”。以上是“带有模态完成对话框的基本 UI”Msiexec.exe reference from Advanced InstallerMicrosoft DocsInstallShield 相同。

这是一个来自旧工具的对话框,用于生成 msiexec.exe 命令行。在这里您可以看到 UILevels 的不同设置:

Msiexec.exe


链接: