使用打包项目将 exe 注册到自定义协议处理程序
Register an exe to custom protocol handler using packaging project
我正在尝试使用打包项目将 exe 注册到自定义协议。我在打包项目的appxmanifest中添加了如下代码
<Extensions>
<uap:Extension Category="windows.protocol" Executable="Assets\app.exe">
<uap:Protocol Name="app.custom.protocol" />
</uap:Extension>
</Extensions>
但我无法使用 launchUriAsync 方法从 uwp 应用启动 exe。它只显示要求应用程序打开协议的对话框。
要在您的程序包中为 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
我正在尝试使用打包项目将 exe 注册到自定义协议。我在打包项目的appxmanifest中添加了如下代码
<Extensions>
<uap:Extension Category="windows.protocol" Executable="Assets\app.exe">
<uap:Protocol Name="app.custom.protocol" />
</uap:Extension>
</Extensions>
但我无法使用 launchUriAsync 方法从 uwp 应用启动 exe。它只显示要求应用程序打开协议的对话框。
要在您的程序包中为 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