2020年5月23日

試玩 winget tool


微軟在今年的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 :



版權宣告

Creative Commons License
本著作由 PROLIANTAHOLIC 製作,以創用CC 姓名標示-非商業性-禁止改作 3.0 台灣 授權條款釋出。
文內所述之產品和公司名稱均為其各自擁有者的商標及(或)服務標記。