【发布时间】:2014-11-20 15:04:50
【问题描述】:
我正在尝试制作一个与本机消息传递主机(即 EXE 文件)通信的页面操作扩展。
我已经安装了我的扩展程序,我看到它的 UI 按预期工作,但 EXE 没有启动。 除此之外,我是否需要自己做一些事情来启动它? :
port = chrome.runtime.connectNative(hostName);
我已经在注册表中安装了主机,如下所示:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.google.chrome.example.echo] @="C:\Users\me\Desktop\nativeMessaging\host\com.google.chrome.example.echo-win.json"
(我也手动添加了这个,因为 x86 和 x64 位版本的配置单元似乎很乱......)
主机清单文件:
{
"name": "com.google.chrome.example.echo",
"description": "Chrome Native Messaging API Example Host",
"path": "native-messaging-example-host.bat",
"type": "stdio",
"allowed_origins": [
"chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/",
"*"
]
}
在native-messaging-example-host.bat 里面我有:
MyExeName.exe
如您所见,我在allowed_origins 中添加了一个"*",以防其他选项不适用于页面操作。
我也尝试将 EXE 名称直接放在清单文件中,但再次失败。
我仍然得到一个:
Specified native messaging host not found.
我还检查了 ProccessExplorer 以查看 Chrome 加载了哪些应用程序,以防它被加载,但我也看不到它。
奇怪的是,我已经开始修改来自 Google 的本机消息传递主机示例,并且我认为它可以作为一个应用程序运行。当我把它变成一个页面操作扩展时它停止工作了。
有人知道这里出了什么问题吗?
【问题讨论】:
-
allowed_origins中不能有通配符。 “未找到指定的本机消息传递主机。”是一般错误。如果您查看 Chrome 的 stderr,您会看到什么?参见例如chromium.org/for-testers/enable-logging -
谢谢!在尝试
enable-logging并查看其日志后,我发现了两个错误(JSON 中有一个额外的逗号和您提到的不支持的通配符)。现在它似乎工作了! -
现在我得到一个:
Error when communicating with the native messaging host.,这似乎更容易修复 - 我认为。 -
Windows 批处理脚本并不完全适合用于本地消息传递的(脚本)语言...尝试 C、C++、C#、Python 或任何其他语言,但不是 Windows 批处理。
-
是的,BAT 仅用于测试目的。我现在有一个 C++ 应用程序,我正在尝试从主机获得正确的响应,遵循以下主题:stackoverflow.com/questions/24775096/…。也感谢您在那里的有用回答。 :)
标签: google-chrome-extension chrome-native-messaging