如何使用本机消息传递主机调试未打包的 Microsoft Edge 扩展?

Posted

技术标签:

【中文标题】如何使用本机消息传递主机调试未打包的 Microsoft Edge 扩展?【英文标题】:How to debug a non-packed Microsoft Edge extension with Native Messaging Host? 【发布时间】:2017-01-24 10:34:13 【问题描述】:

几天前,MS 在 MS Edge 中发布了本机消息支持。 我尝试调试已经在运行的基于 Chrome 的扩展,该扩展在 MS Edge 下使用本机消息传递主机,但失败并出现错误:“非打包扩展不支持本机消息传递”。 没有关于 Native Messaging 清单注册的文档(我的意思是注册表项),清单文件的格式(每个人都知道 Chrome 和 Firefox 的 NMH 清单有点不同)。该文档何时可用? 以及如何在 MS Edge 下使用 NMH 调试解压后的扩展?

【问题讨论】:

【参考方案1】:

The official document 解释错误“Native Messaging not supported for non-packaged extension”。

Edge 扩展平台将本机消息传递主机限制为与扩展打包在同一 AppX 中的 UWP 应用。

NMH for Edge 必须是一个注册 AppService 的通用 Windows 平台 (UWP) 应用。 不支持 NMH for Chrome/Firefox,因为 Edge 原生消息的通信协议完全不同。

【讨论】:

谢谢,这有点帮助,但不是 100%。根据msdn.microsoft.com/en-us/windows/uwp/launch-resume/…,我在其中创建了一个带有 AppService 的 UWP 应用程序。然后将扩展名添加到 AppX 文件夹,修改 appxmanifest 文件,打包并使用临时证书签名。然后将扩展安装到 Edge(只需运行并单击安装)。单击“启动”按钮后 - 看起来 UWP 应用程序作为独立应用程序运行。 尝试使用 chrome.runtime.connectNative() 连接到 UWP 应用程序时出现此错误:“带有 AppService 的应用程序“com.microsoft.inventory”和 PackageFamilyName“MY_PFN”不可用。”

以上是关于如何使用本机消息传递主机调试未打包的 Microsoft Edge 扩展?的主要内容,如果未能解决你的问题,请参考以下文章

为 Chrome 扩展指定本机消息传递主机

与本机消息传递主机通信时出错(chrome 令牌签名)

本机消息传递主机 chrome-token-signing

如何在 ios 设备上未启动本机应用程序时进行调试

如何在 chrome 扩展本机消息传递和 c# 应用程序之间发送/接收消息

调试不适用于 Android Studio 的 C++/本机库模块(使用 Cmake)