最近需要制作軟件安裝包,需要附帶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功能。