wpf 如何在Windows应用程序打包项目中处理URI激活?

nhaq1z21  于 12个月前  发布在  Windows
关注(0)|答案(2)|浏览(113)

我有一个WPF应用程序,我正在使用桌面桥制作一个UWP应用程序。基本上,我创建了一个新的Windows应用程序打包项目,并添加了我的WPF项目作为参考。我在app manifest中添加了一个带有自定义URI的Protocol声明,但是我不能实现/覆盖OnActivated()方法,因为我没有类来做这件事,甚至不可能向这种类型的项目添加类。那么,有什么想法可以在这个环境中处理我的自定义URI调用吗?
我已经创建了另一个UWP项目,它只是处理这些请求,我还将这个项目作为引用添加到主打包项目中。基本上它是工作的,但是如果我创建应用程序包并安装它(appxbundle),那么URI处理程序根本不会被调用。

snz8szmq

snz8szmq1#

有两种方法可以做到这一点:
1)协议激活参数将传递给应用的main()函数。但是,由于您正在使用WPF,因此您需要首先了解如何访问main()函数。本答复对此作了解释:
No Main() in WPF?
2)当前的Windows SDK(1809及更高版本)提供了一种更好的方法:您可以调用此新方法来获取打包的WPF应用程序(或任何打包的Win32应用程序)的激活参数:
https://learn.microsoft.com/en-us/uwp/api/windows.applicationmodel.appinstance.getactivatedeventargs#Windows_ApplicationModel_AppInstance_GetActivatedEventArgs

bxjv4tth

bxjv4tth2#

我来到这里寻找如何处理.NET7 WPF项目的URI激活。这里接受的答案是我找到的最好的建议,但不适用于我的用例。
我不得不这么做

安装协议

  • 为我的WPF应用程序创建Windows应用程序项目,包括协议详细信息
  • 构建并安装以安装协议
  • 使用Windows运行对话框中的协议启动以确认安装

启动协议/ Uri激活

似乎没有一种方法可以使用已安装的协议来定位调试应用程序(至少像UWP那样优雅)。在没有找到任何文档之后,我发现(通过实验)通过协议启动应用程序会将参数中的URI传递给App.OnStartup
要调试协议启动,您需要将命令行参数添加到启动配置文件中。这是通过解决方案资源管理器中Debug | General下的启动项目的属性完成的(见图)。
现在,您可以在Visual Studio中点击F5并调试URI激活。

相关问题