Windows 的命令式套件管理工具:WinGet


微軟在 MSBuild 2020 發表了新個 Windows 的軟體安裝管理工具、Windows Package Manager 的預覽版本,他的官方公告是《Windows Package Manager Preview》。

這個新的工具基本上是給管理人用用的,主要是採用 CLI(命令提示字元)的形式來操作,指令是 winget,目前已經將預覽版本放到 GitHub 了:

由於目前還是預覽版,所以還不能直接使用。

而實際上,這個新個工具是包含在「應用程式安裝程式」(App Installer、Windows Store)中,如果想要使用 WinGet 的話,目前要使用這個工具的 Insider 版本才有。

如果需要使用的話,就要先去填寫自己的 Microsoft Account 來登記(登記連結);之後再從 Windows Store 更新到 Insider 版本就可以了。

如果想要手動安裝的話,也可以連線到 GitHub 上的 Release 頁面(連結),下載 .appxbundle 的檔案,手動進行更新。

在更新好了之後,只要開個 PowerShell,就可以執行 winget 的指令了~

下面就是現在有支援的指令:

WinGet 命令行公用程式可以從命令行安裝應用程式。

usage: winget [] []

以下是所有可用的命令:
  install   安裝指定的應用程式
  show      顯示應用程式相關資訊
  source    管理應用程式的來源
  search    尋找並顯示應用程式的基本資訊
  hash      雜湊安裝程式檔案的協助程式
  validate  驗證資訊清單檔案

如需特定命令的更多詳細資料,請向其傳遞說明引數。 [-?]

以下是可用的選項:
  -v,--version  顯示該工具的版本
  --info        顯示該工具的一般資訊

若要取得更多協助,請參閱: https://aka.ms/winget-command-help

基本上,這邊可以透過「winget show」來列出有支援的軟體套件,透過「winget search <名稱>」則可以用來搜尋自己想要的套件。

目前看來,這邊提供的套件應該是以應用程式為主(CPU-Z、7-Zip、GIMP、Chrome),雖然也有開發用的軟體(Visual Studio),但是基本上不包含撰寫程式用的函式庫的。

比如說執行「winget search node.js」的話,他就會顯示兩個符合的套件:

PS C:\Users\Heresy> winget search node.js
Name    Id            Version Matched
------------------------------------------
Nodist  Nodist.Nodist 0.9.1   Tag: node.js
Node.js OpenJS.Nodejs 14.3.0

如果要安裝的話,則可以使用「winget install <套件名稱 / ID>」這個命令;他也有支援一些額外的安裝參數可以使用,這部分可以參考官方文件

而如果希望可以全自動完成安裝的話,則需要使用有管理者權限的 PowerShell、來執行安裝指令;並可透過「-h」這個參數、來以無圖形介面模式進行安裝。

比如說要安裝 CPU-Z 的話,則會是:

PS C:\Users\Heresy> winget install cpu-z -h
Found CPU-Z [CPUID.CPU-Z]
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading http://download.cpuid.com/cpu-z/cpu-z_1.92-en.exe
  ██████████████████████████████  1.82 MB / 1.82 MB
Successfully verified installer hash
Installing ...
Successfully installed!

這樣的形式。

透過這樣的形式來安裝軟體的話,基本上應該是和 Windows Store 的機制無關,而是接近傳統的軟體安裝方式;實際上,在安裝完後,他也會出現在「設定」的「應用程式」列表中,可以簡單地移除。


而這樣做的好處是什麼呢?個人覺得,主要就是會很像 Ubuntu 上的 Apt,可以透過統一的介面、撰寫自己的腳本,來一次性地完成大量的程式安裝了!

如果這樣的功能以後直接內建的話,那像之前 Heresy 要弄 Docker 的開發環境,應該就會更簡單了~

不過,以現在來看,winget 的功能還是相當地不足。

他基本上比較像是單純地去自動下載安裝包來安裝,並沒有建立自身的安裝紀錄,所以也沒有辦法看到透過他裝了什麼、更不用說像 apt upgrade 一樣、一個指令完成所有套件的更新了。

另外,要安裝多個套件似乎也得一個套件一個指令,沒辦法一次安裝多個套件,也是略為麻煩的地方。

這些,大概就只能看之後改版會不會改善了。


最後,實際上這類的 Windows 套件管理工具其實已經不少了,比較有名的似乎有 Chocolatey(官網)、AppGet(官網)、Npackd(官網)等等。

而實際上,這次微軟的 WinGet 也被爆出來有抄襲 AppGet 的嫌疑、作者甚至宣布放棄開發 AppGet 了(參考《The Day AppGet Died.》、《微軟 Windows Package Manger 爆抄襲對手》),

這件事之後會變怎麼呢?就看著辦吧。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.