今インストールされているプログラムのうち
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用のパッケージマネージャーはこれまでに存在しなかったわけではないのだが、リポジトリの管理に関しては難があった。情報を正確に維持するには、どうしてもコストが発生し、そうそう簡単にはできないからだ。今後に期待したい。

この連載の記事
-
第472回
PC
WindowsのエラーをMicrosoftに送信するテレメトリ機能を理解する -
第471回
PC
Windowsのコマンドラインでエイリアスを使う -
第470回
PC
Windows用のパッケージマネージャー「Winget」 プレビュー版で機能が充実してきた -
第469回
PC
Windows Updateの27年 悪役だった頃から改良が進んで、徐々に目立たない存在に -
第468回
PC
2025年のWindowsどうなる!? Windows Insider Programの状況をあらためて見る -
第467回
PC
Copilot+ PCのNPUでカメラを処理する「Windows Studio Effects」 その内容や効果は? -
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う - この連載の一覧へ