使用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执行自动化安装。

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

注意:msiexec要以管理员权限运行,否则会弹出UAC对话框。要么就关闭UAC功能。

posted @ 2019-09-20 17:42  zhaotianff  阅读(12627)  评论(0编辑  收藏  举报