我有两个版本的自定义软件。Modern/Metro 应用程序 (AppM) 和我的旧版桌面应用程序 (AppD)。我使用易于理解的清单为 AppM 创建了一个自定义协议。我已经编辑了注册表,为 AppD 创建了一个自定义协议处理程序,并测试了我确实可以通过提供协议并在“运行”对话框 (WIN+R) 中使用协议激活来启动 AppD,然后按回车键“AppD://”这个案例。我希望能够从 AppD 启动 AppM 和从 AppM 启动 AppD。我为每个添加了处理程序。在 AppD 中我使用 Process.Start(uri),在 AppM 中我使用 Launcher.LaunchUriAsync(uri)。我可以让 AppM 从 AppD 启动,但我从来没有让 AppD 从 AppM 启动。我用谷歌搜索,找不到任何对此的参考。我假设它 这是不可能的,并且可能与权限有很大关系。由于该项目的任务已落在我身上,我需要证明这是不可能的或找到解决方案。
我已经使用 C#/XAml 以及 HTML/JS 对此进行了测试,有趣的是发现调用了 Launcher.LaunchUriAsync(uri).when() 成功函数,但成功标志为 false。没有错误(或者至少永远不会命中 err 函数)。我想获得更好的错误消息,我目前正在尝试以这种方式进行挖掘。
因此,对于实际问题的帮助或有关如何调试的帮助将不胜感激。
更新:为了消除我自己的代码,我下载并安装了关联启动示例,只需将var uriToLaunch=“ http://bing.com ”更改为var uriToLaunch=“AppD:”,每次都失败。该协议在注册表中关联,我用来验证这一点的方法是使用桌面上的 WIN+R 运行它,并且应用程序可以正常启动。