今インストールされているプログラムのうち
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用のパッケージマネージャーはこれまでに存在しなかったわけではないのだが、リポジトリの管理に関しては難があった。情報を正確に維持するには、どうしてもコストが発生し、そうそう簡単にはできないからだ。今後に期待したい。
![](/img/blank.gif)
この連載の記事
-
第440回
PC
そもそも「Copilot+ PC」とは何なのか? -
第439回
PC
今更more.comを使うのか!? Windowsでのページングを考える -
第438回
PC
Windowsはなぜ再起動が必要になるのか? -
第437回
PC
Windowsが今更(?)開発者に優しくなろうとしている!? 「Dev Home」は開発者にとって使い物になる? -
第436回
PC
Copilot+PCとともにWindowsのデバイス間連携に大きな変化!? Project ROMEの逆襲? -
第435回
PC
Windows Terminal Preview v1.21では、前回終了時のタブとその表示内容を復元できるように -
第434回
PC
AIの急速な導入がWindowsの予定を変えた!? Windows 12がすぐには出ない可能性 -
第433回
PC
Windows 11の2つのウィジェットを調べる -
第432回
PC
ウェブブラウザが切り開いたWindowsでのタブアプリケーション -
第431回
PC
Windows上でユニコードを「見る」方法 -
第430回
PC
WindowsからWordPadが廃止! RTF(Rich Text Format)はどうなる? - この連載の一覧へ