【问题标题】:Chrome Native Messaging with Mono使用 Mono 的 Chrome 原生消息传递
【发布时间】:2016-07-05 21:27:05
【问题描述】:

我实际上是在尝试使用 Chrome Native Messaging 在 OSX 中启动我的 C# mono 可执行文件。

到目前为止,我一直无法使用 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++) 以外的其他东西,我将不得不重新编写我的可执行文件,这可能会花费很多。

【问题讨论】:

    标签: c# mono chrome-native-messaging


    【解决方案1】:

    1/ 这种方法是否可行,我错过了什么

    是的,它应该可以工作。我已经看到与 JAVA 运行时非常相似的设置,但我看不出它不能与 MONO 运行时一起使用的任何原因。

    2/ 还有其他方法可以使用 Mono 启动可执行文件吗?

    我绝对建议在任何地方都使用绝对路径:

    /absolute_path_to/mono /absolute_path_to/my_executable.exe

    3/ 我应该使用 Mono (python / C++) 以外的其他东西

    没有。无论用于创建它的编程语言如何,本机消息传递都适用于任何可执行文件。


    顺便说一句:当您的可执行文件抛出您的代码未处理的异常但您的 launch.sh 脚本将“吞下”错误消息时,Mono 可能无法启动。您可能应该将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
    

    无论如何,如果您还没有为您的应用程序添加日志记录功能。

    【讨论】:

    • 非常感谢您快速而详尽的回答。顺便说一句,我目前正在使用您出色的 Dll PKCS11Interop,非常感谢所有出色的工作!
    • @Thordax:太好了。我很高兴你喜欢它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多