カスタム ソフトウェアの 2 つのバージョンがあります。Modern/Metro アプリ (AppM) と従来のデスクトップ アプリケーション (AppD)。よく理解されているマニフェストを使用して、AppM のカスタム プロトコルを作成しました。レジストリを編集して AppD 用のカスタム プロトコル ハンドラーを作成し、[実行] ダイアログ (WIN + R) からプロトコルをアクティブにして AppD を実際に起動できることをテストしました。この場合。AppD から AppM を起動し、AppM から AppD を起動できるようにしたいと考えています。それぞれにハンドラーを追加しました。AppD では Process.Start(uri) を使用し、AppM では Launcher.LaunchUriAsync(uri) を使用しています。AppD から AppM を起動することはできますが、AppM から AppD を起動することはできません。私はグーグルで検索しましたが、これへの参照が見つかりません。想定している」これは不可能であり、パーミッションに大きく関係している可能性があります。この任務はプロジェクトで私に委ねられたので、それが不可能であることを証明するか、解決策を見つける必要があります。
C#/XAml と HTML/JS を使用してこれをテストしましたが、Launcher.LaunchUriAsync(uri).when() 成功関数が呼び出されていることがわかりましたが、成功フラグは false です。エラーはありません (または、少なくとも err 関数はヒットしません)。より良いエラー メッセージを取得したいのですが、現在その方法を掘り下げようとしています。
したがって、実際の問題を解決するか、これをデバッグする方法を支援していただければ幸いです。
更新: 自分のコードを削除するために、関連付けによる起動の例をダウンロードしてインストールし、単純にvar uriToLaunch= " http://bing.com "をvar uriToLaunch= "AppD:"に変更しましたが、毎回失敗します。このプロトコルはレジストリに関連付けられており、これを確認するために使用している方法は、デスクトップから WIN + R を使用して実行することであり、アプリは問題なく起動します。