Universal Windows Platform(UWP)とは?
UWP とは、Microsoft が提供するアプリケーション開発のための統合プラットフォームであり、UWP は PC、スマートフォン、タブレット、Xbox など、さまざまなデバイスで動作するアプリケーションを単一のコードベースで開発できるように設計されています。
UWP で開発されたアプリを UWP アプリとよび、従来の Win32 系アプリに比べて、セキュリティ、パフォーマンス、アクセシビリティの向上しているとされています。
さまざまなデバイスで動作するとはいえ、UWP アプリは、PC で使用されるのがほとんどだと思います。この投稿も PC で動作している UWP アプリについての話です。
UWP アプリの種類
UWPアプリは、Microsoft ストアからダウンロード&インストールできるものと Windows OS の一部として動作しているものがあります。
従来は、C:\Windows\System32
配下にあったメモ帳、電卓、ペイントは、 UWP アプリへ置き換えが進み、電卓は Windows 10 で、メモ帳、ペイントは Windows 11 で Microsoft ストアから配信される UWP アプリになりました。これらのアプリは、Microsoft ストアからアプリの更新プログラムが配信されたり、アプリをアンインストールできるようになりました。なお、アンインストールしても Microsoft ストアを通じて再インストール可能です。
一方、Windows OS の一部として動作している UWP アプリは、アンインストールができません。スタートメニューや設定アプリは、Windows OS の一部として動作している UWP アプリの例になります。
UWP アプリの管理
UWP アプリは、ユーザーごとに管理されており、ユーザーの初回ログイン時にあらかじめ登録されている UWP アプリが自動でインストールされる仕組みになっています。Windows OS の一部として動作している UWP アプリは、自動でインストールされるのは、当然だと思いますが、Microsoft ストアから配信されるアプリもインストールされます。
メモ帳、電卓、ペイントは、初回ログイン時インストールされるリストにデフォルトで含まれているため、自動的にインストールされます。なお、初回ログイン時にインストールされる UWP リストは、カスタマイズできるので UWP 版の電卓をインストールしないようにすることも可能です。
PowerShell コマンド集
UWP のインストール状況を確認
インストールされている UWP アプリを確認できるコマンドは Get-AppxPackage になります。
ログインしているユーザー自身にインストールされている UWP アプリを確認する場合は、PowerShell を管理者ではなく、ユーザー権限で起動し、実行してください。
# PowerShell(ユーザー権限)
Get-AppxPackage | ConvertTo-json | Out-File -FilePath getAppxPackage_$env:USERNAME.json
PC にログインしたすべてのユーザーのインストール状況を確認したい場合には、PowerShell を管理者として起動して -allusers
オプションを付与してコマンドを実行してください。
# PowerShell(管理者権限)
Get-AppxPackage -allusers | ConvertTo-json | Out-File -FilePath getAppxPackage_allusers.json
ユーザーごとにインストールされている UWP アプリは異なる場合があります。
ConvertTo-json は、Json ファイルで出力するために入れていますが、普通のテキストファイル(.txt)で出力する場合はなくても OK です。
インストールされているアプリをすべて更新
Microsoft Store でアップデート可能なバージョンが配信されている UWP アプリをすべて更新したい場合は、アップデートを実行したいユーザーの権限で PowerShell を起動し、以下の2つのコマンドを実行してください。
# コマンド1
[Windows.ApplicationModel.Store.Preview.InstallControl.AppInstallManager,InstallService.dll,ContentType=WindowsRuntime]
# コマンド2
(new-object Windows.ApplicationModel.Store.Preview.InstallControl.AppInstallManager).SearchForAllUpdatesAsync()
AppInstallManager Class (Windows.ApplicationModel.Store.Preview.InstallControl)
https://learn.microsoft.com/en-us/uwp/api/windows.applicationmodel.store.preview.installcontrol.appinstallmanager
アップデートは、非同期で実行されるのでしばらく待っていれば、徐々にアプリが更新されていきます。アプリが更新されたかは、System のイベントログに ID 19 が記録されていることで確認はできます。
UWP アプリをアンインストール
インストールされている UWP アプリをアンインストールするコマンドは Remove-AppxPackage になります。
アプリをアンインストールするには、アンインストールしたいユーザーの権限で PowerShell を起動し、Remove-AppxPackage
を実行してください。コマンドの実行方法としては、以下の2種類が考えられます。
# 1. Get-AppxPackage でアプリを指定&パイプしてアンインストール
Get-AppxPackage "Microsoft.WindowsCamera" | Remove-AppxPackage
# 2. PackageFullName を指定してアンインストール
Remove-AppxPackage -Package "Microsoft.WindowsCamera_2024.2408.1.0_x64__8wekyb3d8bbwe"
アプリ名:Microsoft.WindowsCamera や PackageFullName は、Get-AppxPackage の実行結果から確認ができます。
Get-AppxPackage と同様に管理者権限で起動した PowerShell で Remove-AppxPackage を -allusers
オプションを付けて実行すれば、その端末にログインしたすべてのユーザーからアプリをアンインストールできます。
再インストール
インストールされているアプリが正常に動作していないように思えたら、Add-AppxPackage コマンドで UWP アプリの再登録(再インストール)を実施することで改善する場合があります。
特にWindows OS の一部として動作している UWP アプリは、Remove-AppxPacakge の実行時にエラーが発生するので、この方法で再インストールする必要があります。
UWP アプリのインストール パスにある AppXManifest.xml を指定して、Add-AppxPackageを実行すると指定したアプリを再インストールできます。InstallLocation は、Get-AppxPackage の実行結果から確認ができます。
Add-AppxPackage -DisableDevelopmentMode -Register "<InstallLocation>\AppXManifest.xml" -ForceApplicationShutdown
# CBS
Add-AppxPackage -DisableDevelopmentMode -Register "C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\AppXManifest.xml" -ForceApplicationShutdown
# StartMenuExperienceHost
Add-AppxPackage -DisableDevelopmentMode -Register "C:\Windows\SystemApps\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\AppXManifest.xml" -ForceApplicationShutdown
# ShellExperienceHost
Add-AppxPackage -DisableDevelopmentMode -Register "C:\Windows\SystemApps\ShellExperienceHost_cw5n1h2txyewy\AppXManifest.xml" -ForceApplicationShutdown
# 設定アプリ
Add-AppxPackage -DisableDevelopmentMode -Register "C:\Windows\ImmersiveControlPanel\AppXManifest.xml" -ForceApplicationShutdown
初回ログイン時にインストールされる UWP アプリのリストを管理
初回ログイン時にインストールされる UWP アプリを管理する主なコマンドは、以下の3つになります。これらのコマンドは、PowerShell を管理者として起動し、実行する必要があります。
Get-AppxProvisionedPackage
https://learn.microsoft.com/en-us/powershell/module/dism/get-appxprovisionedpackage
Remove-AppxProvisionedPackage
https://learn.microsoft.com/en-us/powershell/module/dism/remove-appxprovisionedpackage
Add-AppxProvisionedPackage
https://learn.microsoft.com/en-us/powershell/module/dism/add-appxprovisionedpackage
マスターを作成し、Windows PC や VDI を大規模展開する企業以外にあまり、一般のユーザーが使用することはないと思いますので、初回ログイン時にインストールされる UWP アプリを出力するコマンドのみを記載しておきます。
Get-AppxProvisionedPackage -Online | ConvertTo-json | Out-File -FilePath getAppxProvisionedPackage.json
さいごに
どのアプリが、UWP アプリであることを意識する場面はあまりありませんが、UWP アプリが正常に動作しないとか、アプリがインストールされていないとかを調べるときには、活用できるかなと思います。