正如标题所说,是否可以使用 Powershell 被动/静默安装 .EXE,但仍然显示安装程序 GUI?我希望下一个自动“单击”,但仍然希望 GUI 显示为进度指示器。
UPDATE: 有一个用于 Windows Installer 的 Powershell 模块。它可以帮助以比处理更简单的方式运行 msiexec.exe 等效命令Powershell 的怪癖.
MSI?:如果这是 EXE 包装器内的 MSI,则以下内容通常可以工作。如果它只是一个普通的 EXE 文件,您应该重新打包为 Painter 答案 - 或者使用正确的开关静默运行它 - 如果可能的话。
建议:我建议根据您编写的内容使用此命令行(完成时显示模式框的基本 UI 并在安装过程中隐藏取消按钮):
msiexec.exe /I "setup.msi" /qb+!
带有隐藏取消按钮的示例进度对话框:
击键:听起来您希望整个 GUI 向导显示出来,并“自动神奇地”单击所有按钮?那很难。像 AutoIt 这样的疯狂工具(将击键推送到应用程序窗口的工具)可以做到这一点,但这与普通的纸牌屋一样可靠。这种管道胶带方法总是存在错误源。
Silence!:我假设您知道您可以使用标准命令行开关来抑制 MSI 的整个 GUImsiexec.exe
?您可以选择完全静音的 GUI 或完全像您所描述的进度条以及许多其他组合。您甚至可以隐藏取消按钮。漂亮。
UILevel:MSI支持各种“UI 级别”- 安装可以是不同程度的交互性,从完全静音到完全交互。有 4 个基本级别和各种“修饰符”(显示或不显示完成对话框)。以下是实践中不同 UILevel 的答案:从控制面板卸载与从 .msi 删除不同
Examples:以下是一些进一步的示例命令行:
-
完全安静,根本没有 GUI:
msiexec.exe /i "setup.msi" /qn
-
基本 GUI,没有模式对话框和隐藏的取消按钮:
msiexec.exe /i "setup.msi" /qb-!
-
除了最后显示的模式对话框外没有 GUI:
msiexec.exe /i "setup.msi" /qn+
Note:还有几种进一步的组合,具体取决于您如何使用4 个不同级别的 GUI,模态对话框是否结束,最后隐藏或显示取消按钮。
Advanced:除了正常使用 msiexec.exe 之外,您还可以通过 MSI Win32 API 以编程方式抑制 MSI 的整个 GUI,并自行处理进度消息。
-
使用 MsiSetExternalUI 处理进度消息(C++ 示例代码,也在 github.com 上)
- 外部 MSI GUI 上的服务器故障答案
WiX 捆绑包: 这是这个方法WiX工具包用于为捆绑包提供自己的现代 GUI。高级安装程序 and 安装盾其他人也有类似的概念。与 Windows Installer 的集成全部基于这些 API 调用。
Links:
- 提示:MSI 安装的用户界面级别
- 从控制面板卸载与从 .msi 删除不同
- 从 PowerShell 运行 MsiExec 并获取返回代码
重新包装:
-
从提取的安装文件创建 MSI (and 同一篇文章中的另一个答案)
- 捕获 Windows 上应用程序安装期间的所有更改
- http://blog.deploymentengineering.com/2004/12/chriss-rant-about-repackaging.html
- http://www.installsite.org/pages/en/msi/admins.htm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)