我正在尝试创建一个与本机消息传递主机(即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
正如您所看到的,我在"*"
JUST IN CASE中添加了allowed_origins
,其他选项不适合页面操作。
我还尝试将EXE名称直接放在清单文件中,但又没有运气。
我仍然得到:
Specified native messaging host not found.
我还会检查ProccessExplorer以查看Chrome加载的应用程序,以防它被加载,但我也没有看到它。
奇怪的是,我已经开始修改Google的本机消息传递主机示例,我认为它是作为应用程序运行的。当我把它变成页面动作扩展时它停止了工作。
有没有人知道这里有什么问题?
答案 0 :(得分:2)
除了打开日志记录外,您还可以采用sysinternals中使用procmon的方法。它就像regmon和filemon一样,所以你可以按照chrome查询注册表键,然后读取清单,然后运行可执行文件,你就可以看到它出错了。
之前我遇到过一个问题,exe不会运行,通过上面的操作,我发现钥匙上有一个小错字,我错过了。
要启用日志记录,请查看以下内容:https://www.chromium.org/for-testers/enable-logging例如您可以使用以下命令行参数启动浏览器:--vmodule=extension_updater=2 --enable-logging
答案 1 :(得分:2)
我有类似的问题:chrome
正在创建端口,但没有启动程序。跟踪Sysinternals procmon.exe
我发现该活动在调用C:\Programs\TCCLE\tcc.exe
时停止。我使用Take Command作为cmd.exe
替换,并将环境变量ComSpec
设置为C:\Programs\TCCLE\tcc.exe
;我将ComSpec
更改回C:\WINDOWS\system32\cmd.exe
并启动了该程序。
答案 2 :(得分:1)
我有类似的问题。启用日志记录没有帮助。原来是我的注册表项:
[HKEY_LOCAL_MACHINE \ SOFTWARE \谷歌\铬\ NativeMessagingHosts
我在EXE和路径周围有引号,例如“C:\ Temp \ Chrome \ ChromeNativeApp.exe”与C:\ Temp \ Chrome \ ChromeNativeApp.exe
答案 3 :(得分:1)
我有类似的问题。这里没有任何帮助。使问题消失的原因是将主机名从“ com.me.DbServer”更改为“ com.me.test”。这种变化使一切突然起作用。我想DbServer是保留名称,或者更有可能不允许使用大写字母。我正在使用Chrome 69。