如何在WiX中创建无声安装程序,该安装程序不向用户显示任何UI对话框,并使用默认设置进行安装,升级和卸载?如何使用WiX和MSI进行无提示安装和卸载?
回答
只是不包括任何UI/UIRef元素,然后没有UI将包含:)
Windows Installer(MSI)使用以下命令行参数保持沉默:
静默安装或无声的重大升级:
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
很好的答案。轻微的问题是,如果您必须通过UAC对话框授权安装,则不会使用/ qn提供任何安装。但是,如果您使用/ qb,则可以选择授权。 – Steztric 2015-06-22 13:11:35
这是设计的功能。静默安装根据定义是非交互式的,并且UAC提示是交互。未能在30秒内点击yes将无法安装。在调用安装之前,您的调用过程应该已经升级。 – 2015-12-24 14:24:39
我也面临同样的问题,当我尝试在完全UI模式下通过双击MSI运行MSI时,它会提示我一个UAC(程序名称,发布者:未知,文件来源),我需要选择yes才能继续安装但我的需要是在非交互模式下使用cmd msiexec命令安装MSI(基本上它应该在UAC中自动采用yes),但在任何情况下都不会发生(/ q/a/qn)。我正在使用一种工具在100多台服务器上部署MSI,并在内部创建一个导致失败的命令(msiexec/i
所有MSI安装是否通过维克斯创建或不能够通过命令来控制线参数。因此,您可以使用UI创建安装程序并仍然安装它,不需要从安装程序中删除UI,只需在命令行中将其禁用即可。记住,一定要添加的升级元素在你第一次安装,以便后续的将匹配WiX的创建可以在命令行中,而不需要用户输入运行
WiX升级元素设置UpgradeCode属性并在升级表中包含一行。从技术上讲,第一台MSI不需要升级。它只需要具有UpgradeCode属性。如果您忘记这么做,有一些技巧会在后续MSI中涉及“假”升级表条目,并使用将操作属性设置为第一个MSI的ProductCode的自定义操作。尽量避免这一点。 :-) – 2014-02-24 16:05:35
安装程序.EXE的使用这些命令行参数之一:
- /quiet - 不显示任何UI
- /passive - 显示一个UI,但不需要用户输入。基本上只是显示一个安装进度条
此答案基于WiX 3.9。
- 1. 安装和卸载MSI作为WiX/Burn中的依赖关系
- 2. Wix/MSI:无法卸载
- 3. 提高Wix msi安装/卸载的性能
- 4. 无法卸载命令行(WiX的MSI)
- 5. 在WiX msi安装过程中卸载Installshield msi
- 6. msi安装程序卸载
- 7. 在使用WiX进行安装期间卸载其他产品
- 8. MSI安装程序安装和卸载问题
- 9. 在Installshield中运行无提示安装和无任何参数卸载
- 10. WIX 3.8无提示安装
- 11. MSI卸载UAC提示
- 12. 如何在使用WiX Toolset(MSI Installer)进行卸载时停止服务?
- 13. 使用install4j进行无提示安装
- 14. 使用WIX进行MSI安装的最大压缩量
- 15. 如何在Wix包中指定.msi包的不同安装/卸载顺序?
- 16. 如何识别我是安装还是卸载WiX msi软件包?
- 17. 如何使用WIX删除卸载msi上的注册表项
- 18. 如何使用WiX MBA卸载MSI而不是Bundle本身?
- 19. 卸载Bundle会导致msi安装
- 20. 安装时卸载另一个MSI
- 21. MSI在新安装之前卸载
- 22. WiX如何使EventSource安装,但使卸载部分可选
- 23. 防止Windows安装程序(MSI)使用WiX和UpgradeCode降级
- 24. Wix:从另一个MSI安装和配置MSI软件包
- 25. 如何使用WiX安装程序以提升的权限进行安装?
- 26. MSI程序包的无提示安装
- 27. 如何在安装过程中卸载应用程序(MSI)
- 28. 如何使用InnoSetup进行无提示安装?
- 29. WiX在安装时卸载文件和注册表项
- 30. 使用Azure ARM模板进行装载和卸载
这是非常有限的价值。让用户双击MSI并在没有任何结果的确认或状态的情况下进行安装是一种非常不理想的用户体验IMO。如果你的MSI中的一部分被另一个处理用户界面的程序(Think Visual Studio,SQL Server ..)共同改变,那么这很好,但如果它是一个独立的MSI,我认为它只是一个工作的一半。 – 2012-05-31 19:34:50
我同意这绝对是有限的价值,但它确实回答OP。如下所述,更好的(或“正确的”)解决方案是使用msiexec参数。 – saschabeaumont 2012-06-04 23:34:02
将msiexec.exe与命令行参数一起使用,指定使用no-ui的安静模式即可。 – nil 2013-02-11 18:30:44