使用Powershell实现自动化安装/卸载程序

Posted zhaotianff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Powershell实现自动化安装/卸载程序相关的知识,希望对你有一定的参考价值。

最近需要制作软件安装包,需要附带VC运行时和.Net Framework的安装,但又不想让用户自己点下一步,所以就有了以下操作。

微软提供了一个程序叫msiexec.exe,位于C:\\Windows\\System32

msiexec提供了从命令行安装、修改Windows安装包等功能。常见的如.msi这样的安装包。

打开Powershell/cmd,输入

msiexec /?

可以看到详细的参数

这里主要介绍一下如何自动安装/卸载。如果需要更详细的使用,可以访问 https://docs.microsoft.com/zh-cn/windows/win32/msi/command-line-options?redirectedfrom=MSDN

安装 

msiexec /i "xxxxx.msi" /qr

/q是安静模式,无用户交互,/q后面再带上nbrf,可以设置软件安装界面的显示方式

/q[n|b|r|f]
设置用户界面级别
n - 无用户界面
b - 基本界面
r - 精简界面
f - 完整界面(默认值)

使用Powershell下载并安装MICROSOFT® REPORT VIEWER 2015 RUNTIME

#添加程序集
Add-Type -AssemblyName System.IO
Add-Type -AssemblyName System.IO.Compression
Add-Type -AssemblyName System.IO.Compression.FileSystem

#下载地址
$DownloadUrl = "https://download.microsoft.com/download/A/1/2/A129F694-233C-4C7C-860F-F73139CF2E01/ENU/x86/ReportViewer.msi"
#下载到Temp目录
$TempPath = $env:TEMP
#下载的文件名
$FileName = "ReportViewer.msi"
#存储的完整文件路径
$FullPath = "$TempPath\\$FileName"

#Download
$client = New-Object System.Net.WebClient
"Now is downloading MICROSOFT® REPORT VIEWER 2015 RUNTIME"
$client.DownloadFile($DownloadUrl, $FullPath)
"Download success"

#Install
msiexec.exe /i $FullPath /qr

"Press any key to exit"
Read-Host

运行以后,如下

技术图片

卸载

msiexec /x /package <Product.msi | ProductCode> /qr

可以指定msi安装包,也可以指定ProductCode,可以访问从注册表以下位置查找ProductCode。

计算机\\HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall

使用Powershell卸载MICROSOFT® REPORT VIEWER 2015 RUNTIME

1  msiexec.exe /x "3ECE8FC7-7020-4756-A71C-C345D4725B77" /qr

技术图片

如果是压缩包式的安装包,如 Microsoft Visual C++ 2015 Redistributable,

可以直接使用 vc_redist.x86.exe /?查看自动化安装的参数。

也可以使用Winrar等压缩软件,解压出msi安装包,继续使用msiexec.exe执行自动化安装。

这样就可以自动安装软件运行环境了。

以上是关于使用Powershell实现自动化安装/卸载程序的主要内容,如果未能解决你的问题,请参考以下文章

powershell 获取可以自动卸载的程序列表。

使用 Powershell 的已安装程序的完整列表

Powershell:通过 UpgradeCode 卸载应用程序

使用powershell卸载exe软件

如何在不卸载powershell的情况下,有效禁用/启用powershel

用AutoIt自动安装和卸载程序