Wingetのサブコマンド
Wingetには、以下の表のようなサブコマンドがある。
簡単に言えば、実際に可能なのは「パッケージの検索」「情報表示」「インストール」「リポジトリ指定」などである。このうちユーザーが直接利用するのは、「search」「show」「install」の3つ。「source」はリポジトリを指定するものだが、今のところリポジトリは1つしかない。「hash」と「validate」は、パッケージの検証などに使うものだが、通常はこれを使う必要はなさそうだ。
まずは、パッケージの情報表示だ。たとえば、「winget show vim」とすれば、vimパッケージの情報を表示できる。
パッケージが存在しているなら「winget install vim」などとすれば、パッケージのインストールができる。パッケージマネージャーを使うには、パッケージ名を把握している必要がある。逆に言えば、パッケージ名さえわかっていれば、パッケージマネージャーで簡単に作業ができる。
ではどうやってパッケージ名を知るのかというと「winget search 検索文字列」を使ってパッケージを検索するわけだ。searchサブコマンドの後ろに何も指定しなければ、リポジトリに登録されているすべてのパッケージが表示される。このリストから探してもいいが、原稿執筆時点では428個のパッケージが登録されていた。
winget searchでは、たいした検索機能はなく、名前や「あだ名(Moniker)」(吉川晃司とはなんの関係もない)、リポジトリ内のパッケージIDや分類用Tag(ただしすべてのパッケージに付けられているわけではない)などが指定できる程度。基本はアプリケーション名で検索することになる。なお、アプリケーション名は、どこかで調べてくる必要がある。
まあ、インターネットサーフィン(古いね)とかしていると、「エディターは●●がいい」みたいな記事があるので、そのアプリ名で検索することになると思うが、いまの段階では、かなり著名なパッケージのみリポジトリに登録されているという感じだ。
wingetはコマンドラインだが、wingetでインストールされるアプリケーションはコンソールアプリケーションに限定されるわけではなく、Win32アプリケーションならなんでもかまわない(もっとも、インストールする前にリポジトリに登録されている必要はあるが……)。たとえば、Visual Studio CodeやGIMP、Acrobat ReaderといったGUIアプリケーションもリポジトリには登録されている。
具体的には、キーワードをつけて「winget search vim」などのようにしてvimというパッケージを探すことになる。searchでは、結果として複数のパッケージが引っかかることがある。たとえば、「winget search code」とすると、複数のパッケージが表示される。
このとき、matchedの列がキーワード(この場合はcode)と一致した理由を示す。リポジトリには、同名アプリケーションのバージョン違いなど、一部が異なる同じアプリケーションが登録されていることがある。前述のshowサブコマンドは、1つのパッケージしか対象にできないため、searchサブコマンドで複数の結果が表示されたとき、その中から単一のパッケージを指定するオプションを指定しなければならない。ざっと使ったかんじ、ここがwinget最大の難所だ。
同じ名前を持つ複数のパッケージから単一のパッケージを指定してshowで情報を表示させることができるなら、installサブコマンドでインストールすることもできるからだ。同名の複数パッケージが存在している場合、単一のパッケージを指定できないと、showやinstallサブコマンドが利用できない。
たとえば、GIMPは、バージョンが違う2つのパッケージがリポジトリに登録されている。
リポジトリでは、このような状態になることは普通である。必ずしも最新版が良いとは限らないし、使い方によっては過去バージョンをあえて利用することもあるからだ。この点で言えば、アプリを勝手に最新版に更新しちゃうMicrosoftストアはあまりよい方策ではない。
さて、同名のアプリケーションでも、IDやバージョン番号には違いがある。これを利用して2つのGIMPのパッケージを区別する。wingetのshowサブコマンドのヘルプを見ると、バージョン(-v)でも区別ができそうだが、実際にはできない。しかし、--idによる区別は可能だ。
searchサブコマンドの結果を見ると、GIMPのIdには「gimp.gimp」と「GIMP.GIMP」の大文字小文字の違いがある。こうした場合、「winget show --exact --id GIMP.GIMP」として--exactオプションを付けて指定を行うことで、単一のパッケージを指定できる。
なんとなく「winget show --exact --name GIMP --version 2.10.18」でもうまくいくように思えるのだが、--versionの指定はうまくいかない。たぶんバグではないかと思えるが、まだプレビュー版でもあるし、細かいことは言わないようにしておく。なお、showで見るとわかるが、GIMPの2つのパッケージは、Moniker(桜田淳子とはなんの関係もない)にも大文字小文字の違いがあり、「winget show --exact --moniker GIMP」も有効だ。
Installサブコマンド
このように単一パッケージを指定できれば、installサブコマンドが実行可能だ。GIMPの最新版をインストールするには、「winget install --exact --id GIMP.GIMP」とする(管理者権限が必要)。
なお、wingetでは、アプリインストールの上書きや下位バージョンのインストールについては何も警告がなくそのままインストールされる。また、インストール前に確認を行うようなオプションもない。
installサブコマンドには、「-i,--interactive」というオプションがあり「インタラクティブインストールを要求」することはできるのだが、実際にどうなるかはアプリ次第で、このGIMPの場合には、何も変わらず、問答無用で指定したアプリケーションのインストールが進む。このため、インストールには注意が必要だ。
前述のようにwinget自体にはインストールされているアプリケーションを確認する機能はないため、間違ったバージョンを上書きインストールしてしまわないように注意されたい。現在開発中のアプリであるため、こうした問題があるのは当たり前だし、過去のバージョンを使うという点からは、下位バージョンでも上書きインストールが可能なこと自体は取りたてて問題にすることでもないことには留意されたい。
wingetは先行するLinuxのパッケージマネージャーなどと比べるとかなり荒削りだし、まだプレビュー版であるが、完成すれば、コマンドラインでwin32アプリのインストールが可能になり、新規マシンのインストールもかなり楽になる。スクリプトを作ってOneDriveなどに保存しておけば、新しいマシンを立ち上げて、スクリプト一発で自分好みの環境にすることが可能だ。Linuxでは当たり前だったやり方が、Windowsでも可能になる。
あとはリポジトリの充実という問題があるが、こちらも時間が解決してくれるだろう。また、荒削りな部分も、おそらくはなんとかなると思われる。というのは、Linuxというパッケージマネージャーの先駆的存在があり、そこに成熟したパッケージマネージャーの見本があるからだ。あとは、マイクロソフトが道を間違えないようにするだけ。そのことを祈りつつ、wingetの報告はここまでとしたい。
この連載の記事
-
第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つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 -
第447回
PC
この秋登場のWindows 11の新バージョン、Ver.24H2の状況を見る -
第446回
PC
Windows 11のフォトアプリがUWPからWin32アプリになったことで今更わかるUWPの問題点 -
第445回
PC
次期Windows 11ではAndroidのファイルをエクスプローラーからアクセス可能になる - この連載の一覧へ