问题描述
我有一个 WiX 项目来创建一个 MSI 包。 我想将 UI 级别设置为 3 或 4 或 5,以便在设置后显示成功/失败。 目前它只是运行并消失。 有没有办法在包上设置 UI 级别?
解决方法
设置 GUI:听起来您的 MSI 根本没有内置 GUI?如果是这样,请尝试设置对 '/'
的引用并定义一个标准 WiX 对话框集以用于您的包 - 例如 WixUIExtension.dll
。这将为您的设置提供一系列预制的“默认对话框”,以便您轻松应用。
Visual Studio (go here for click-by-click version) 的过程:
-
在您的 WiX Visual Studio 解决方案中,打开项目列表,右键单击“引用”并单击“添加引用...”。现在将引用设置为:
WixUI_Mondo
(或此文件在您的盒子上的任何位置) -
您引用的文件包含默认的 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)
UILEVEL:UILEVEL 是一个属性设置,您可以在最终用户机器上实际安装 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 Installer 与 Microsoft Docs 和 InstallShield 相同。
这是一个来自旧工具的对话框,用于生成 msiexec.exe 命令行。在这里您可以看到 UILevels 的不同设置:
链接:
- Flexera:Tip: User Interface Levels for MSI Installations
- Uninstall from Control Panel is different from Remove from .msi(关于 UILevel 以及静默安装和交互式安装之间的区别)
- Knowing the Mode of Installation