【问题标题】:Batch file / powershell: downloading and silent installing script批处理文件/powershell:下载和静默安装脚本
【发布时间】:2014-08-01 10:51:08
【问题描述】:

我正在尝试编写一个脚本,理想情况下,它会为不同的程序下载 .exe/.msi 文件,然后静默运行它们。这些安装通常需要输入,例如单击下一步或选中单选按钮。如果我知道我想运行哪些安装设置,我怎样才能让这些安装以我想要的方式运行它们,但静默运行?使用批处理编程或使用 Powershell 编码会更简单吗? (我是一个完整的初学者,所以没有偏好。建议将不胜感激)。理想情况下,该脚本将被打包到它自己的 .exe 文件中,以便在任何 Windows 计算机上运行。

【问题讨论】:

  • 静默运行它们可能会有所不同,具体取决于软件开发人员使用的安装程序软件(和版本)。对于 .msi 文件,我建议您首先运行 msiexec.exe /?从命令提示符(或开始菜单 -> 运行)了解可以做什么。
  • 非常感谢您的建议。我刚刚查看了 msiexec.exe /?,从安装方面来看我确实很有用。

标签: batch-file powershell download installation


【解决方案1】:

下载安装程序

这是最简单的部分。在 PowerShell 3 或更新版本中,您可以通过Invoke-WebRequest 下载:

Invoke-WebRequest 'http://example.com/installer.exe' -OutFile 'installer.exe'

在早期版本中,您可以创建 WebClient 对象并使用其 DownloadFile 方法:

$Client = New-Object System.Net.WebClient
$Client.DownloadFile('http://example.com/installer.exe', 'installer.exe')

如果您有一个文本文件列出了您需要下载的所有安装程序,每行一个 URL,您可以像这样下载它们:

Get-Content 'installers.txt' | % { Invoke-WebRequest $_ -OutFile ($_ -replace '^.*?([^/]+$)', '$1') }

运行安装程序

这是最难的部分。自动化 UI 通常很麻烦,PowerShell 并没有竭尽全力支持它。可以使用 .NET Framework 完成,但 PowerShell 确实更适合直接操作数据。

但是,如果您必须进行 UI 自动化,我建议您使用类似 AutoIt 的替代方法。 AutoIt 是 VBScript、PowerShell 和其他一些语言的一种混搭,可以轻松执行单击按钮和自动在文本框中输入文本等操作。它通常用于自动化 GUI 安装。

或者,考虑在部署之前将 EXE 安装程序重新打包为 MSI。 MSI 用于静默安装。它们的属性值可以是独立的(或存储在 MST 文件中),因此用户不必在运行时键入它们,因此无需自动化其 UI。 Smart Package Community Edition(以前称为 WinInstall LE)是免费软件,可以扫描安装程序创建的文件和注册表项,并将它们打包成 MSI 文件。

希望这会有所帮助!

【讨论】:

  • 感谢您提供如此全面的答案,我一定会调查并尝试让它发挥作用!
  • 这个解决方案效果很好,非常感谢您的帮助!最好的问候
【解决方案2】:

另一种选择是使用 Chocolatey,但这取决于是否已打包所需的应用程序(您也可以打包自己的应用程序,前提是没有许可或再分发限制)。

【讨论】:

    猜你喜欢
    • 2017-08-04
    • 2021-10-12
    • 2019-02-19
    • 2013-03-25
    • 2023-03-30
    • 2023-01-31
    • 1970-01-01
    • 2018-11-15
    • 2014-10-14
    相关资源
    最近更新 更多