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

Installation 如何使用WiX和MSI进行静默安装和卸载?,installation,wix,windows-installer,wix3,Installation,Wix,Windows Installer,Wix3,如何在WiX中创建不向用户显示任何UI对话框并使用默认设置安装、升级和卸载的静默安装程序?(MSI)使用以下命令行参数保持静默: 静默安装或静默主要升级: msiexec.exe /i foo.msi /qn msiexec.exe /i foo.msi REINSTALL=ALL REINSTALLMODE=vomus /qn 静默小升级: msiexec.exe /i foo.msi /qn msiexec.exe /i foo.msi REINSTALL=ALL REINSTALLM

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

(MSI)使用以下命令行参数保持静默:

静默安装或静默主要升级:

msiexec.exe /i foo.msi /qn
msiexec.exe /i foo.msi REINSTALL=ALL REINSTALLMODE=vomus /qn
静默小升级:

msiexec.exe /i foo.msi /qn
msiexec.exe /i foo.msi REINSTALL=ALL REINSTALLMODE=vomus /qn
静默卸载:

msiexec.exe /x foo.msi /qn
可执行路径:

C:\Windows\system32\msiexec.exe

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

所有MSI安装程序,无论是否由WiX创建,都可以通过命令行参数进行控制。因此,您可以使用UI创建一个安装程序,并且仍然以静默方式安装它,无需从安装程序中删除UI,只需在命令行上抑制它即可。请记住,请确保在第一个安装程序中添加了upgrade元素,以便后续安装程序将匹配使用WiX创建的installer.exe,而无需用户通过使用以下命令行参数之一输入即可从命令行运行:

  • /安静-不显示任何用户界面
  • /被动-显示UI,但不需要用户输入。基本上只是显示一个安装进度条

这个答案是基于WiX 3.9的。

它的价值非常有限。在我看来,让用户双击一个MSI并在没有任何确认或结果状态的情况下安装它是一种非常不理想的用户体验。如果一堆MSI中的您的一部分被另一个处理UI的程序(想想Visual Studio、SQL Server…)一起更改,这很好,但是如果它是一个独立的MSI,我认为这是一个只有一半的工作。我同意它的价值是有限的,但它确实回答了OP。一个更好的(或“正确的”)解决方案是使用MSIEXEC参数,如下面详细说明的。使用MSIXEC.EXE命令行参数指定安静模式,没有UI是走的路。@克里斯托弗画家。在数百台计算机上的企业环境中安装任何应用程序都需要使用组策略等过程。拥有一个用户界面是次优的,也是浪费时间,迫使员工去公司的每台机器上按键,而这只是在需要新应用的地方。使用前面提到的“msiexec.exe/i foo.msi/qn”。因此,UI是为单个用户和疑难解答管理员维护的,并且可以为卷展而隐藏。WiX upgrade元素设置UpgradeCode属性,并在升级表中保留一行。从技术上讲,第一个MSI不必有升级元素。它只需要具有UpgradeCode属性。如果您忘记执行此操作,则有一些技巧涉及到后续MSI中的“假”升级表条目,以及将action属性设置为第一个MSI的ProductCode的自定义操作。但要尽量避免这种情况。:-)回答得很好。轻微的问题是,如果您必须通过UAC对话框授权安装,则使用/qn不会显示任何内容。但是,如果您使用/qb,您可以选择授权它。这是设计的功能。根据定义,静默安装是非交互的,UAC提示是一种交互。如果在30秒内未单击“是”,则安装将失败。在调用安装之前,您的调用过程应该已经提升。我也面临同样的问题,当我试图通过双击MSI以完全UI模式运行MSI时,它会提示我UAC(程序名,发布者:未知,文件来源)我需要选择“是”继续安装,但我需要在非交互模式下使用cmd msiexec命令安装MSI(基本上,在UAC中应该自动选择“是”),但这在任何情况下都不会发生(/q/a/qn)。我正在使用一个工具在100的服务器上部署MSI,它在内部创建了一个命令(msiexec/I/qn),这会导致失败。有人对此有解决方案吗?我如何通过安装路径?