使用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功能。