何故か開けない!?
こんな事で困ったことはありませんか?
無いなら無いに越したことはありません。
というか私は今までなかったので初めて知りました。
最近色々物騒なのでMicrosoftStoreにある場合はストアのアプリを入れるようにしています。
その為に起きた不幸とも言えます。
何故開けないのか?
Windowsのメニューからは起動できるのですが、コマンドラインやファイル名を指定して実行からは起動できないのです。
MicrosoftStoreからインストールしたものは、いじっていない場合は以下のパスにインストールされます
C:\Program Files\WindowsApps\xxx
で、何が問題かというと原因はWindowsAppsフォルダが特殊なフォルダでユーザーではアクセスできないことが原因のようです。
では、どうすればよいのか?
結論から言えば、ストアアプリ起動用(UWPアプリ起動用)のコマンドを実行すれば良いようです。
- コマンドラインからの起動
start shell:Appsfolder\パッケージファミリー名!アプリID
- ファイル名を指定して実行(windowsメニュー右クリックのあれ)
shell:Appsfolder\パッケージファミリー名!アプリID
つまり「パッケージファミリー名」 + ! + 「アプリID」でアプリを識別するので
パッケージファミリー名とアプリIDが分かれば起動できます。
で、パッケージファミリー名とアプリIDはどうやって知るんだよ?ってなりますよね。
これらを知るには、色々コマンドを打ったりしないといけなくて面倒なので準備しました。
はい、どーん。
# パラメータの取得
param([string]$AppName)
# インストールされているパッケージの一覧を取得
foreach($app in get-AppxPackage) {
# 指定のパッケージと一致するものを探す
if ($app.Name -notlike "*$AppName*") {
continue
}
# パッケージ情報からパッケージIDを取得
foreach ($id in (Get-AppxPackageManifest $app).package.applications.application.id) {
# 起動可能なコマンドを作成
$command = "shell:Appsfolder\" + $app.packagefamilyname + "!" + $id
echo $command
}
}
使い方
.\find_uwp.ps1 app_name
※もしかしたら、アプリIDをアプリと無関係の名前を付けているアプリがあると見つからないかもしれません。
私は、blenderを起動したかったので以下のコマンドになります。
current/path> .\find_uwp.ps1 blender
shell:Appsfolder\BlenderFoundation.Blender_ppwjx1n5r4v9t!BLENDER
起動するコマンドが分かったので、外部プロセスにこれを指定して無事起動できるようになりました。