Chrome 原生消息与单声道
本文关键字:声道 单声道 原生 消息 Chrome | 更新日期: 2023-09-27 17:55:17
我实际上是在尝试使用Chrome Native Messaging在OSX中启动我的C#单声道可执行文件。
到目前为止,我从未能够用OSX启动可执行文件(它在Windows上运行良好)
以下是本机消息传递主机的清单:
{
"allowed_origins" :
[
"chrome-extension://njbimgehbcecolchhhfpamfobkedoein/"
],
"description" : "test native messaging host",
"name" : "com.myapp.native.host",
"path" : "/Applications/myapp/launch.sh",
"type" : "stdio"
}
这是 launch.sh 文件:
#!/bin/bash
/usr/local/bin/mono --runtime=v4.0.30319 my_executable.exe "$@"
我经常收到以下错误:
"本机主机已退出。"
我尝试启动 sh 文件,它似乎运行良好(它读取标准中的条目)
1/这种方法可能有效吗,我错过了一些东西?2/有没有另一种方法可以使用 Mono 启动可执行文件?(我尝试直接将可执行路径放在清单上,但它也不起作用3/如果我使用Mono(python/C++)以外的其他东西,我将不得不重新设计我的可执行文件,这可能会花费很多。
1/这种方法是否可能有效,我错过了一些东西
是的,它应该有效。我已经看到 JAVA 运行时的设置非常相似,我看不出它不应该与 MONO 运行时一起使用的任何理由。
2/有没有另一种方法可以使用 Mono 启动可执行文件?
我绝对建议在任何地方使用绝对路径:
/absolute_path_to/mono /absolute_path_to/my_executable.exe
3/我应该使用Mono以外的其他东西吗(python/C++)
不。本机消息传递适用于任何可执行文件,无论用于创建它的编程语言如何。
顺便说一句:当您的可执行文件抛出异常时,Mono 可能无法启动,该异常不是由您的代码处理的,但您的launch.sh
脚本将"吞下"错误消息。您可能应该像这样将STDERR
重定向到日志文件:
#!/bin/bash
/absolute_path_to/mono --runtime=v4.0.30319 /absolute_path_to/my_executable.exe "$@" 2> /absolute_path_to/my_executable.log
如果STDERR
没有提供有用的信息,您也可以尝试重定向STDOUT
(我知道本机消息传递需要它,但您正在调试问题,对吗?
#!/bin/bash
/absolute_path_to/mono --runtime=v4.0.30319 /absolute_path_to/my_executable.exe "$@" > /absolute_path_to/my_executable.log 2>&1
无论如何,如果尚未向应用程序添加日志记录功能,则应这样做。