今インストールされているプログラムのうち
wingetで扱えるものはどれ?
リポジトリの概要がわかれば、次に知りたくなるのは、今使っているアプリのうち、wingetでインストールできるものは何だ、ということだろう。使っているアプリがwingetで扱えるなら、バッチファイルなどを作れば、新規マシンへの必要アプリケーションのインストールが一発でできるようになる。中には、必要なアプリをインストールするwingetコマンドを記述しておけばよい。
まずは、インストールされているデスクトップアプリだが、以前の記事で扱った(「WindowsでのWin32アプリケーションのインストール状態を調べる方法」)。
簡単に言えば、powershellからレジストリを調べることで、MSI経由でインストールされているデスクトップアプリケーションを列挙することが可能だ。具体的には、以下のリストのようなコマンドを使う。これでMSI経由でインストールしたアプリケーションのリストが得られるので、Wingetのsearch機能で該当のアプリを検索してみる。まずは、以下のコマンドを使ってインストールされているアプリのリストを得て変数$listに入れておく。
$list=(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});
この$listを使ってwingetで検索する。
$list | Where-Object { $_.displayname -ne $null } | foreach { $x=(winget.exe search $_.displayname); if($x.count -gt 2){ Write-Host $_.displayname }}
wingetの検索はダウンロードしたリポジトリデータをローカルでしているため、そんなに遅くはないが、それでもインストールしてあるアプリ1つ1つがあるかどうかを調べるので少し時間がかかる(もちろんインストールしてあるアプリケーションの数に依存)。
ただし、これはwingetでの単純な検索なので、プログラム名が部分一致している可能性もある。逆にレジストリへの登録状況などによっては、winget searchがうまくいかない可能性もある。たとえば、VS codeは、レジストリへの設定が「Microsoft Visual Studio Code (User)」となっているため、このままではwinget searchで検索ができない。
ZIPファイルなどから直接ファイルをコピーしたようなアプリの場合、フォルダー名などから検索を行わせることもできる。筆者は、こうしたインストーラーを使わないプログラムは、1つのフォルダーの下にまとめている。こうしたフォルダーが"C:\app"だとしたら
Get-ChildItem -Path "C:\app" | foreach { $x=((winget.exe search $_.name )| select-object -skip 3); if($x.count -gt 0){ Write-Host "$_"; foreach($i in $x) { Write-Host "`t$i" }}}
とすれば、フォルダー名などから、wingetリポジトリの検索ができる。実際に試してみたところ、いくつかWingetで扱えるアプリを見つけることができた。これで、自分が今使っているアプリのうち、wingetで利用可能なものが探せ、その結果を利用して、全部をインストールするバッチファイルなどを作れば、新しいPCの環境整備が簡単にできるようになる。
Wingetの今後はどうなる?
Wingetの今後については、一応のロードマップが出ており、改良予定の部分などがわかる。現時点での完成目標は、2021年の5月。ただし、あくまでも予定である。なので、一般ユーザーはしばらくは無理に使う必要はなく、今年後半から来年ぐらいまでは様子見でいいだろう。
今回、インストールされたアプリケーションは、powershell側で調べたが、将来的には、wingetのコマンドとしてインストールされているアプリのリストや、アプリのアップデートの有無を調べることができるようになるようだ。
また、現在配布中のv0.1.42241 Previewでは、検索やリポジトリのダウンロード時に表示されるテキストアニメーションの色指定などが行える。設定は、例によってJSONファイルで、
winget settings
で可能で、JSONエディターがインストールされていれば、settings.jsonファイルが開く。
設定の詳細は、以下のページにある。
●winget-cli/Settings.md
https://github.com/microsoft/winget-cli/blob/master/doc/Settings.md
wingetは、v0.1でまだ、道半ばというよりは、ようやく動き出した段階、とはいえ、Windowsのデスクトップアプリケーションで“公式”のリポジトリが使えるようになった点は大きい。Windows用のパッケージマネージャーはこれまでに存在しなかったわけではないのだが、リポジトリの管理に関しては難があった。情報を正確に維持するには、どうしてもコストが発生し、そうそう簡単にはできないからだ。今後に期待したい。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ













