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に参加しているならもうインストールされている可能性もある。
この連載の記事
-
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる - この連載の一覧へ