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に参加しているならもうインストールされている可能性もある。

この連載の記事
-
第398回
PC
Windows Subsystem for Androidの進化を確認 エクスプローラーからのファイルのドラッグ&ドロップが可に -
第397回
PC
Windowsにおけるディスク、ドライブ、パーティションの扱いの違い -
第396回
PC
Windows 11における新規作成コンテキストメニュー -
第395回
PC
Windowsの「近距離共有」は微妙だが、Windows版も登場した「ニアバイシェア」は使える -
第394回
PC
コマンドの出力が長いとき、PowerShellではとりあえずselect-objectでなんとかする -
第393回
PC
Windows 11のWinUI3対応で、MicrosoftはWin32アプリ、さらにWindows自体を改良しようとしている -
第392回
PC
あらためてWindowsにおける2進数、10進数、16進数について -
第391回
PC
WindowsのNTFS/ReFSに搭載されている「再解析ポイント」とは何か? -
第390回
PC
この秋登場予定のWindows 11 Ver.23H2はどうなるか? -
第389回
PC
Windowsにおけるファイルリンクについてあらためて説明する -
第388回
PC
アプリ評価環境「Windows SandBox」のWindows 11での状況 - この連載の一覧へ