powershell - 是否可以被动安装 .EXE 但仍使用 Powershell 显示 GUI?

标签 powershell windows-installer exe

正如标题所说,是否可以使用 Powershell 被动/静默安装 .EXE,但仍然显示安装程序 GUI?我希望下一个自动“单击”,但仍然希望 GUI 显示为进度指示器。

最佳答案

UPDATE: There is a Powershell module for Windows Installer. It can help to run msiexec.exe equivalent commands in easier fashion than to deal with Powershell's quirks.


MSI?:如果这是 EXE 包装器内的 MSI,则以下内容通常可以工作。如果它只是一个普通的 EXE 文件,您应该重新打包为 Painter 答案 - 或者使用正确的开关静默运行它 - 如果可能的话。


Suggestion: I would suggest this command line based on what you wrote (basic UI with modal box displayed at completion & hide the cancel button during installation):

msiexec.exe /I "setup.msi" /qb+!

带有隐藏取消按钮的示例进度对话框:

progress dialog with hidden cancel button


击键:听起来您希望整个 GUI 向导显示出来,并“自动神奇地”单击所有按钮?那很难。像 AutoIt 这样的疯狂工具(将击键推送到应用程序窗口的工具)可以做到这一点,但这与普通的纸牌屋一样可靠。这种管道胶带方法总是存在错误源。

沉默!:我假设您知道可以使用 msiexec.exe 的标准命令行开关来抑制 MSI 的整个 GUI。 ?您可以选择完全静音的 GUI 或完全像您所描述的进度条以及许多其他组合。您甚至可以隐藏取消按钮。漂亮。

UILevel :MSI支持各种"UILevels" - 安装可以是不同程度的交互性,从完全静音到完全交互。有 4 个基本级别和各种“修饰符”(显示或不显示完成对话框)。以下是实践中不同 UILevel 的答案:Uninstall from Control Panel is different from Remove from .msi

示例:以下是一些进一步的示例命令行:

  • 完全安静,根本没有 GUI:

    msiexec.exe /i "setup.msi" /qn
    
  • 基本 GUI,没有模式对话框和隐藏的取消按钮:

    msiexec.exe /i "setup.msi" /qb-!
    
  • 除了最后显示的模式对话框之外没有 GUI:

    msiexec.exe /i "setup.msi" /qn+
    

注意:还有几种进一步的组合,具体取决于您如何使用 4 different levels of GUI 配置事物。 ,模态对话框是否结束,最后隐藏或显示取消按钮。


高级:除了正常使用 msiexec.exe 之外,您还可以通过 MSI Win32 API 以编程方式抑制 MSI 的整个 GUI,而是自己处理进度消息。

WiX bundle :这是 WiX toolkit 的方法用于为 bundle 提供自己的现代 GUI。 Advanced InstallerInstallshield其他人也有类似的概念。与 Windows Installer 的集成全部基于这些 API 调用。


链接:

重新包装:

关于powershell - 是否可以被动安装 .EXE 但仍使用 Powershell 显示 GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59795440/

相关文章:

c# - 在 C#/Powershell 中 - 是否可以更改 IIS 应用程序池的空闲超时?

.net - 在延迟的自定义操作之间传递数据

python - 是否可以在 Vista 上构建 exe 并使用 py2exe 在 XP 上部署

azure - 通过 Powershell 创建 Azure Monitor 日志搜索警报规则

linux - 使用 ls 从 SFTP 服务器获取文件的时间戳

windows - 卸载软件

python - PyInstaller 无法更改快捷方式图标

c#,从可执行文件外部的参数打开特定的 Windows 窗体

c# - 编写C#PowerShell cmdlet-如何将调试日志记录输出到TeamCity调用者

c# - 使用 installshield 安装 Windows 服务