我正在尝试使用打包项目将exe注册到自定义协议。我在包装项目的appxmanifest中添加了以下代码。
<Extensions>
<uap:Extension Category="windows.protocol" Executable="Assets\app.exe">
<uap:Protocol Name="app.custom.protocol" />
</uap:Extension>
</Extensions>
但是我无法使用launchUriAsync方法从uwp应用程序启动exe。它只是显示对话框,要求一个应用程序打开协议。
答案 0 :(得分:1)
要在您的程序包中注册EXE的自定义协议,需要在您的appxmanifest中声明它。请注意,您的包中可以包含多个元素。因此,例如,如果您的主应用程序是UWP,并且您还具有要注册为自定义协议处理程序的Win32可执行文件(WPF),则必须像下面这样编写包清单。请注意,设置AppListEntry = None将阻止Win32 EXE在开始菜单中显示。
<Applications>
<Application Id="UWP" Executable="Uwp.exe" EntryPoint="Uwp.App">
<uap:VisualElements … />
</Application>
<Application Id="WPF" Executable="WpfApp2\WpfApp2.exe" EntryPoint="Windows.FullTrustApplication">
<uap:VisualElements AppListEntry="none" … />
<Extensions>
<uap3:Extension Category="windows.protocol">
<uap3:Protocol Name="app.custom.protocol" />
</uap3:Extension>
</Extensions>
</Application>
</Applications>
但是,如果您要从UWP启动Win32 EXE,则最好使用FullTrustProcessLauncher API,而不要执行协议启动:
https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher