如何使用WiX和MSI进行静默安装和卸载?

MX4*_*399 30 installer windows-installer wix wix3

如何在WiX中创建静默安装程序,该安装程序不向用户显示任何UI对话框,并使用默认设置进行安装,升级和卸载?

Chr*_*ter 61

Windows Installer(MSI)使用以下命令行参数进行静默:

无提示安装或无提示主要升级:

msiexec.exe /i foo.msi /qn
Run Code Online (Sandbox Code Playgroud)

无声小升级:

msiexec.exe /i foo.msi REINSTALL=ALL REINSTALLMODE=vomus /qn
Run Code Online (Sandbox Code Playgroud)

无提示卸载:

msiexec.exe /x foo.msi /qn
Run Code Online (Sandbox Code Playgroud)

可执行路径:

C:\Windows\system32\msiexec.exe
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案.轻微的问题是,如果您必须通过UAC对话框授权安装,则使用/ qn不会显示任何内容.但是,如果您使用/ qb,则可以选择授权它. (4认同)
  • 这就是设计的功能。静默安装根据定义是非交互式的,而 UAC 提示是一种交互。未能在 30 秒内单击“是”将导致安装失败。在调用安装之前,您的调用过程应该已经被提升。 (4认同)

Kev*_*ski 21

使用WiX创建的安装程序.exe可以从命令行运行,而无需使用以下命令行参数之一进行用户输入:

  • / quiet - 不显示任何UI
  • / passive - 显示UI但不需要用户输入.基本上只显示安装进度条

这个答案基于WiX 3.9.

  • 如何传递安装路径? (3认同)

Cha*_*ent 5

无论是否由 WiX 创建的所有 MSI 安装程序都可以通过命令行参数进行控制。因此,您可以使用 UI 制作安装程序并仍然静默安装,无需从安装程序中删除 UI,只需在命令行中取消它即可。请记住,确保在第一个安装程序中添加升级元素,以便后续安装程序匹配


sas*_*ont -2

只要不包含任何 UI/UIRef 元素,那么就不会包含任何 UI :)

  • 使用已经提到的“msiexec.exe /i foo.msi /qn”。因此,UI 是为个人用户和故障排除管理员维护的,并且可以在部署时隐藏。 (4认同)
  • 那价值非常有限。在我看来,让用户双击 MSI 并在没有任何确认或结果状态的情况下安装它是一种非常次优的用户体验。如果你的一组 MSI 中的一部分被另一个处理 UI 的程序(比如 Visual Studio、SQL Server..)一起更改,那很好,但如果它是一个独立的 MSI,我认为它只完成了一半。 (2认同)