微軟在今年的Mircosoft Build上發表了一個可以用來安裝應用程式的命令列工具: winget tool
目前還是preview的winget tool可以在Windows Terminal, PowerShell或是命令提示字元(Command Prompt)下執行
以下操作使用的是: Windows 10(版本 2004/19041.264)繁體中文專業版
首先下載Windows Package Manager Preview版來安裝(winget tool包含在其中)
下載Assets底下的: Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.appxbundle
點兩下就可以安裝:
出現第二個視窗就裝好了, 直接關掉即可
winget tool有開放原始碼, 工具簡介與使用說明 原始碼:
打開PowerShell來測試:
看別人使用好像很簡單, 我就來試試用winget安裝PowerShell 7的穩定版:
winget install powershell 咦, 不行
加個參數看看: winget install -e Powershell 搞定
2020/05/26: 今天發現winget search powershell多了Powershell Core 7.0.0版, 7.0.1版的PowerShell, S變成大寫字母
所以要這樣才能安裝7.0.1版: winget install -e "PowerShell" --id "Microsoft.PowerShell"
接下來換用PowerShell 7操作, 用winget安裝個新版的Microsoft Edge看看:
winget search "Microsoft Edge"
winget install "Microsoft Edge" 果然不行
加參數: winget install -e "Microsoft Edge" 還是不行
加更多參數: winget install -e "Microsoft Edge" --id "Microsoft.Edge" 終於可以了
大亂鬥, 比一下用Invoke-WebRequest下載PowerShell 7後安裝跟用winget tool安裝哪個快: (PowerShell-7.0.1-win-x64.msi 檔案大小約 86.9 MB)
1 2 3 4 5 6 7 | $ProgressPreference = 'SilentlyContinue' Measure-Command -Expression { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest -UseBasicParsing -Uri https://github.com/PowerShell/PowerShell/releases/download/v7.0.1/PowerShell-7.0.1-win-x64.msi -OutFile "$env:TEMP\PowerShell-7.0.1-win-x64.msi" Start-Process "msiexec.exe" -ArgumentList "/package $env:TEMP\PowerShell-7.0.1-win-x64.msi /quiet" -Wait } |
1 2 3 | Measure-Command -Expression { winget install -e "PowerShell" --id "Microsoft.PowerShell" -h } |
結果用winget tool慢一點 (36.83秒 vs. 39.54秒)
2020/11/01: 調整一些有關winget的設定, 首先用winget settings打開設定檔
(設定檔格式與參數說明: 在此)
改成這樣後存檔:
{ // For documentation on these settings, see: https://aka.ms/winget-settings // "source": { // "autoUpdateIntervalInMinutes": 5 // }, "$schema": "https://aka.ms/winget-settings.schema.json", "visual": { "progressBar": "rainbow" }, "experimentalFeatures": { "experimentalCmd": true, "experimentalArg": true, "experimentalMSStore": true } }
- Source/autoUpdateIntervalInMinutes: winget更新來源(source)資料的間隔時間 (我用預設值就不改了)
- $schema: default schema
- Visual/progressBar: 安裝軟體時進度條的樣式, 改成彩虹樣式是像這樣:
打開實驗功能 Experimental Features:
- experimentalCmd
- experimentalArg
- experimentalMSStore: 開啟安裝Microsoft Store App的功能
測試一下打開實驗功能後的效果:
- winget features : 查看實驗功能運行的狀態
- winget source list : 列出目前的來源
- winget source update : 更新目前的來源
- winget search "Windows Terminal" : 搜尋"Windows Terminal" (所有來源)
- winget search "Windows Terminal" -s msstore : 搜尋"Windows Terminal" (只限Microsoft Store)
- winget install "Windows Terminal" -s msstore : 從Microsoft Store安裝"Windows Terminal" (目前需要先登入Microsoft Store才可以下載安裝)
- winget install "Windows Terminal" -s winget : 改從winget-pkgs安裝"Windows Terminal"
- 如果有登入Microsoft Store, winget install "Windows Terminal" -s msstore :