
ストアアプリのPackageIDを取得するPowerShellスクリプト
先日、wingetを使ってストアアプリ版のPower Automate for desktop(PAD)のインストーラーをダウンロードする方法について記事を書きました。
ただ、ダウンロードする際にはアプリのPackageIDが必要となります。
上記記事を書いた際に取得したPADのPackageIDを元にレジストリを検索したところ、以下のキーがヒットしました。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State\CategoryCache

ストアアプリのPackageIDを取得するPowerShellスクリプトとPackageIDリスト
各エントリの値はJSON形式になっていて、その中に「ProductId」としてPackageIDが記録されているようです。
PowerShellであれば簡単に一括取得できそうだったので、さっそくスクリプトを書いてみました。
上記の表がスクリプトで取得した値をリスト化したものですが、レジストリの値として一緒に記録されているPackageFamilyNameだけだと何のアプリなのかが分かりづらいため、Microsoft Storeの各ページ(例えば「Microsoft Copilot」の場合は https://apps.microsoft.com/detail/9nht9rb2f4hd?hl=ja-JP&gl=JP )からアプリ名を取得してApp列として追加しました。
実際にインストールされているアプリ名と一致していないものもありますが、大まかには分かるかと思います。
wingetによるパッケージのダウンロード
取得したPackageIDを使って試しに電卓アプリをダウンロードしてみましたが、問題なくダウンロードできました。
winget download "9WZDNCRFHVN5" --skip-license


これでうっかりプログラムの追加と削除やRemove-AppxPackageでストアアプリを消してしまったときも、wingetでパッケージをダウンロードしてすぐに再インストールできそうです。
イベントログからPackageIDを取得する方法
取得したPackageIDを元にWeb検索したところ、下記の記事がヒットしました。
どうやらイベントログからストアアプリのPackageIDを取得されているようです。
なるほど!こんな手があったか!!
大変勉強になりました。