【问题标题】:Is it possible to passively install an .EXE but still show the GUI using Powershell?是否可以被动安装 .EXE 但仍使用 Powershell 显示 GUI?
【发布时间】:2020-05-04 19:39:12
【问题描述】:

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

【问题讨论】:

  • 嗯,有办法使用 PInvoke 与安装程序窗口进行交互,但我对此不太熟悉。相反,我建议使用静默开关(/s 但可能因每个安装程序而异)调用安装过程,并在安装时使用 Powershell 进度条作为软件安装正在进行的提示。在安装较新版本的软件时,这也会更加强大,因为静音开关不应该改变。至于 GUI,它可能会从一个版本更改为另一个版本,并且可能会破坏现有的自动化。
  • 我发现了一个类似的问题,对我的评论有类似的答案:stackoverflow.com/a/52007652/934946 您可以查看 Chocolatey 以了解他们在安装程序时使用的行为。 Chocolatey 将进行静默安装,并在屏幕上显示一些进度。我会在那里启发自己,而不是尝试显示 GUI 并自动点击。

标签: powershell windows-installer exe


【解决方案1】:

更新There is a Powershell module for Windows Installer。与处理 Powershell's quirks 相比,它可以帮助以更简单的方式运行 msiexec.exe 等效命令。


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


建议:我会根据您编写的内容建议此命令行(完成时显示模式框的基本 UI 并在安装过程中隐藏取消按钮):

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

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


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

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

UILevel: MSI 支持各种"UILevels" - 安装可以是不同程度的交互性,从完全无声到完全交互。有 4 个基本级别和各种“修饰符”(是否显示完成对话框)。以下是实践中不同 UILevels 的答案: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 Bundles:这是WiX toolkit 用来为bundle 提供自己的现代GUI 的方法。 Advanced InstallerInstallshield 等也有类似的概念。与 Windows Installer 的集成都是基于这些 API 调用。


链接

重新包装:

【讨论】:

    【解决方案2】:

    您所描述的是完全静默(无 ui)和非交互式(有 UI 但用户不需要与之交互)之间的区别。如果这是遵循 MSI 的最佳实践,那么 @SteinAsmul 描述的就是你的票。

    如果它是一个写得不好的基于 EXE 的安装程序,没有考虑这个用例并且不支持它,那么你将不得不将安装程序“重新打包”(逆向工程/重写)安装程序到 MSI 中,以便它是支持

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多