デスクトップブリッジで「UWPアプリ化」する
ユーザーが「タイムライン」のカードをクリックすると、Windowsがプロトコルアクティベーションを使ってアプリを呼び出します。ということは、その情報をWindowsに登録しておかないといけないわけです。URIスキームに対応するアプリをレジストリに登録するのですが、UWPアプリであればマニフェストに宣言しておくだけで後はUWPが登録/削除をやってくれます。自前で行おうとすると、レジストリの登録/削除を行うインストーラ/アンインストーラを作ることになります(Visual Studio 2017 Installer Projectsやサードパーティ製のインストーラ開発製品などを使います)。ここは、はるかに簡単にできる「UWPアプリ化」をしてしまいましょう。
デスクトップブリッジのプロジェクトを追加する
ソリューションに新しいプロジェクトを追加します。[新しいプロジェクトの追加]ダイアログでは、[Windows アプリケーション パッケージ プロジェクト](Windows Application Packaging Project、以降は「WAPプロジェクト」と略します)を選んでください(次の画像)。この機能は、Visual Studio 2017 Version 15.5で導入されたものです。
追加するとき、フレームワークのバージョンは何でも構いません。上の画像のダイアログで[OK]ボタンをクリックすると、UWPのバージョンを指定するダイアログが出てきます(次の画像)。「タイムライン」のAPIが使えるのはbuild 16299以降ですから、[最小バージョン]ドロップダウンは16299以上を選択します(新しいAPIを使わないとしても、デスクトップブリッジが導入された14393以上)。
WAPプロジェクトが作成されると、次の画像のようなウェルカムページが表示されます。デスクトップブリッジに関する情報へのリンクが並んでいます。
上のリンクの中で、「要件の確認」ページは確認しておいてください。「UWPアプリ化」できるアプリの条件が書かれています。日本語版のページは誤りが多いので、読むのは大変かもしれませんが英語版のページをお勧めします。
「要件の確認」ページの最初に書かれていることですが、デスクトップブリッジがサポートされたのはWindows 10 version 1607(build 14393)からです。1607に含まれている.NET Frameworkのバージョンは4.6.2なので、「UWPアプリ化」するアプリも.NET Framework 4.6.2であれば安心できます(本稿執筆時点の日本語版は「4.6.1」と誤記しています)。
WPFアプリへの参照を追加する
ソリューションエクスプローラーでWAPプロジェクトを見ると、[アプリケーション]という項目があります。それを右クリックして出てくるコンテキストメニューで、[参照の追加]を選んでください。出てきた[参照マネージャー]ダイアログで、WPFアプリのプロジェクトにチェックを入れてOKします。すると、次の画像のように、WAPプロジェクトからWPFアプリのプロジェクトを参照している形になります。
これでWPFアプリが「UWPアプリ化」されました。WAPプロジェクトの方をビルドして実行してみてください。WPFアプリが起動しますが、次のような違いがあります。
- タスクマネージャーに表示されるアプリ名は、WAPプロジェクトの名前になる(上の画像の例だと「DesktopBridge」)
- スタートメニューにもWAPプロジェクトの名前(「DesktopBridge」)で登録される
アプリ名は、パッケージマニフェスト(WAPプロジェクトの「Package.appxmanifest」ファイル)で変更できます。パッケージマニフェストをダブルクリックして開き、次の3か所の名前を設定します。[アプリケーション]タブの[表示名]/[ビジュアル資産]タブの[短い名前](スタートメニューのタイルに表示される名前)/[パッケージ化]タブの[パッケージ表示名](「Store」に申請するときは、ここはWebから申請した名前に変更されます)。