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++)以外的其他东西,我将不得不重新设计我的可执行文件,这可能会花费很多。

Chrome 原生消息与单声道

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

无论如何,如果尚未向应用程序添加日志记录功能,则应这样做。