azukipochette's weblog

memory dump (mini)

Elgato Stream Deck で UWP アプリを起動する

まくら

Scott Hanselman 先生に影響を受けて Elgato Stream Deck を買いました。

もし、Scott Hanselman 先生の記事にご興味があれば、こちらを見てください。
テレワーク (WFH) でプレゼンをするためのノウハウなどが聞けます。

www.hanselman.com

www.hanselman.com

本題

Elgato Stream Deck を使うと、好きなアプリを登録することでワンボタンで起動できるようになるのですが、UWP アプリ (ストア アプリ) を簡単に登録することができません。
しかし、たいていの UWP アプリには URI スキームと呼ばれる URI を使った起動方法があるので、これを使って登録する方法を今回は紹介します。

たとえば、代表的な UWP アプリである「電卓」を起動したい場合、Win+R キーを押して表示される "ファイル名を指定して実行" ウィンドウの [名前] に calculator: として入力して [OK] をクリックすると電卓が起動します。これが URI スキームを利用したアプリの起動です。

ここで問題になるのが、「使っているアプリの URI スキームが何かがわからない!」ということでしょう。 Microsoft が標準で提供しているアプリの場合、インターネット検索すると出てきたりしますが、"Microsoft ストア" などを通じてインストールしたアプリなどは開発者が明示的に公開していない場合も多いので、まずは自分が使っているアプリの URI スキームの調べ方から説明します。

UWP アプリの URI スキームの一覧を取得する

PowerShell を起動して以下のコマンドを実行すると、"Protocol" のところにアプリが登録している URI スキームが表示されます。

Get-AppxPackage | Select-Object -Property Name, PackageFullName, @{
    Label='Protocol'
    Expression={(Get-AppxPackageManifest $_).package.applications.application.extensions.extension.Protocol.name}
} | Format-List

UWP アプリは標準で複数インストールされているため、大量に結果が表示されると思います。
アプリを絞り込みたい場合は、Get-AppxPackage の部分を Get-AppxPackge *<Keyword>* のようにすることで、検索に一致したアプリだけが表示されるようになります。

たとえば、"Minecraft" を調べたい場合は以下のようにして実行します。 (前後に * を追加することで、部分一致で検索することができます。)

Get-AppxPackage *Minecraft* | Select-Object -Property Name, PackageFullName, @{
    Label='Protocol'
    Expression={(Get-AppxPackageManifest $_).package.applications.application.extensions.extension.Protocol.name}
} | Format-List

出力結果を以下に示します(環境によって結果は異なります)

Name            : Microsoft.MinecraftUWP
PackageFullName : Microsoft.MinecraftUWP_1.15.9.0_x64__8wekyb3d8bbwe
Protocol        : {ms-xbl-multiplayer, minecraft}

なお、アプリによっては 1アプリで複数の URI スキームを登録している場合があります。
出力結果から肝心の URI スキーマ部分が省略されてしまっている場合は、Format-List の部分を Out-GridView などにしてみてください。

URI スキーマで起動してみる

アプリによっては機能毎に URI スキーマを登録しているものもあります。 実際にどの URI スキーマがどの働きをもつのかは実際に試してみる必要があります。

先ほどと同様に Win+R キーを押して "ファイル名を指定して実行" ウィンドウの [名前] に "<プロトコル名>:" と入力します。
このとき、最後の : (コロン) を絶対に忘れないようにしましょう!忘れると起動に失敗するか、異なるアプリを起動してしまいます。*1

コマンドプロンプトから起動したい場合は、以下のよう実行します。

start <プロトコル>:

プロトコル名の前に start を付けることがポイントです。

Elgato Stream Deck に登録する

URI スキーマで起動できることが確認できたら、いよいよ Elagto Stream Deck に登録します。

  1. Stream Deck アプリを立ち上げます
  2. 右ペインから System > Website を選び、ドラッグして配置したい場所にドロップします。
  3. URL に上記で調べた URI スキーマを入力します (コロンを忘れずに!)

ポイントは URI スキーマを利用するので、"Open" ではなく "Website" を選ぶというところです。後は、アイコンなどお好きにカスタマイズしてください。

それでは楽しい Stream Deck 生活を。Enjoy!

*1:: (コロン)がない場合、Windows は実行ファイルを探し、起動しようとします