Windows用パッケージマネージャー「winget.exe」のプレビューが開始された。バイナリーも提供されているので、ちょっと試してみた。なお、wingetはプレビュー版であり、最終版ではないので、場合によっては重大な問題が発生する可能性もある。ご自身のリスクで利用していただきたい。編集部も筆者も一切責任を負わないのでそのつもりで。
そもそもwingetとは一体何?
wingetは、マイクロソフトが開発した「公式」のパッケージマネージャーである。一般にパッケージマネージャーとは、アプリケーションパッケージの検索やインストール、アップデートなどの管理するためのもの。Linux系では、アプリケーションやOS関連ソフトウェアのインストールは、パッケージマネージャーを使うのが標準的で、各ディストリビューションごとに標準のパッケージマネージャーがある。
逆にどのパッケージマネージャーを採用しているかでLinuxディストリビューションを分類することもあるくらいに標準的なものになっている。Linuxのパッケージマネージャーが成功したので、他のOSでも現在ではパッケージマネージャーを搭載するのが広がっている。
そんな中で、標準のパッケージマネージャーがないのはWindowsぐらいだった。強いて言えばMicrosoftストアが似たような存在であるが、管理できるのは、AppxやMsixのようなMicrosoftストア用のパッケージのみで、Win32アプリケーション標準のMSIパッケージ形式には対応していなかった。wingetは、Win32アプリケーション用のパッケージマネージャーであり、Win32アプリケーションの検索、インストール、情報表示などができるようになっている。
一般にパッケージマネージャーは、対象アプリケーションを保存する「リポジトリー」と対になっている。リポジトリーは、ローカルに置くことも不可能ではないが、一般的には、インターネット側サイトとして作られる。このため、パッケージマネージャーは、ここからアプリケーションを検索などで探して、ダウンロードしてインストールできる。
wingetもマイクロソフトが管理するリポジトリーを持つ。マイクロソフトの主張によれば、「信頼できるリポジトリ」を構築することが自身でパッケージマネージャーを開発する理由だったとか。まあ、気持ちはわからないでもないが、Microsoftストアもリポジトリーの一種と考えるなら2つもリポジトリーが必要なのかどうか? と思わないわけでもないのだが、まあそこはマイクロソフトの自由である。とりあえず、wingetは「winget」というリポジトリー1つだけが登録された状態である。
なお、wingetには、インストールしたアプリを列挙したり、インストールされているアプリの情報を表示する機能はまったく含まれていない。これに関しては、以前この連載で解説したWin32アプリケーションのアンインストール情報を保存しているレジストリを見るしかない(WindowsでのWin32アプリケーションのインストール状態を調べる方法)。
毎回長いコマンドを打つのもなんなので、簡易なインストールパッケージ表示コマンドを作った。
function winget-list([string]$appname) {
$temp=(Get-ChildItem -Path (
'HKLM:SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥Uninstall',
'HKLM:SOFTWARE¥WOW6432Node¥Microsoft¥Windows¥CurrentVersion¥Uninstall',
'HKCU:SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥Uninstall'
) | ForEach-Object { Get-ItemProperty $_.PsPath})
if($appname -ne "") {
$temp | Where-Object { $_.DisplayName -like ($appname+"*")} ;
} else {
$temp | Sort-Object DisplayName | Select-Object publisher,displayversion,displayname,InstallLocation ;
}
}
勝手に名前を「winget-list」にしてあるが、名前は自由に決めてかまわない。引数なしで起動すると、インストールされているWin32アプリケーションをすべてテーブル形式で表示する。引数として文字列を与えると、指定された文字列を先頭に含むパッケージ名を探して情報を表示する(いわゆる前方一致での検索)。
なお、途中文字列で検索したい場合には、文字列先頭にワイルドカード文字「*」を付け、たとえば「*code」などと指定する。
winget.exeのインストール方法
まずは、インストールだが、githubにソースコードがある(https://github.com/microsoft/winget-cli)。
このリポジトリをクローンして自分のビルドするのが正統だが、さすがにそれはちょっと面倒。というわけでマイクロソフトもインストール用バイナリを用意してくれている(https://github.com/microsoft/winget-cli/releases)。
ここから、「Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.appxbundle」をダウンロードして実行させれば、インストールしてくれる。なお、完全なコマンドラインツールである。
また、wingetを試すには、「App Installer」がインストールされている必要がある。これを入手する方法は3つ。
1. Windows Package Manager Insider Protamに参加してMicrosoftストアから入手
2. Windows Insider Programに参加してMicrosoftストアから入手
3. githubからソースコードを入手して自分でビルド、インストールする
「1」と「2」は、各プログラムに参加すると、Microsoftストアで「アプリ インストーラー(App Installer)」がインストールできるようになるので自分でインストールする。また、すでにInsider Programに参加しているならもうインストールされている可能性もある。

この連載の記事
-
第479回
PC
Copilot+ PCで利用できる「Windows Copilot Runtime」を試す ローカル推論用モデル「Phi Silica」とは? -
第478回
PC
Copilot+ PCでNPUを使ってローカル推論 「Windows Copilot Runtime」を試す -
第477回
PC
Windowsで2つの文字列を同時に含むテキストファイルを探す方法を考える -
第476回
PC
さらばSkype! Windows&MSのコミュニケーションアプリの30年 -
第475回
PC
Windowsのコマンドラインの補完機能について解説 -
第474回
PC
Windowsでのコマンドラインのヒストリ機能 -
第473回
PC
Windowsは内部的にどうやってインターネットへの接続状態を確認している? -
第472回
PC
WindowsのエラーをMicrosoftに送信するテレメトリ機能を理解する -
第471回
PC
Windowsのコマンドラインでエイリアスを使う -
第470回
PC
Windows用のパッケージマネージャー「Winget」 プレビュー版で機能が充実してきた -
第469回
PC
Windows Updateの27年 悪役だった頃から改良が進んで、徐々に目立たない存在に - この連載の一覧へ