2016-07-05 95 views
2

我實際上試圖啓動我的C#單聲道可執行文件在OSX與Chrome原生消息。Chrome原生消息與單聲道

到目前爲止,我從來沒有能夠推出與OSX的可執行文件(它的工作原理以及在Windows上)

這裏的本地消息主機的清單:

{ 
    "allowed_origins" : 
    [ 
     "chrome-extension://njbimgehbcecolchhhfpamfobkedoein/" 
    ], 
    "description" : "test native messaging host", 
    "name" : "com.myapp.native.host", 
    "path" : "/Applications/myapp/launch.sh", 
    "type" : "stdio" 
} 

這裏的推出。 SH文件:

#!/bin/bash 
/usr/local/bin/mono --runtime=v4.0.30319 my_executable.exe "[email protected]" 

我不斷收到以下錯誤:

「本機主機已退出。」

我嘗試啓動SH文件,它似乎運作良好(它在標準輸入讀取條目)

1 /這方法可能奏效,而我失去了一些東西? 2 /是否有另一種使用Mono啓動可執行文件的方法? (我試圖直接在清單上放置可執行文件路徑,但它也不起作用 3 /我應該使用Mono(python/C++)以外的其他東西,我將不得不重做我的可執行文件,並且這可能會花費很多。

回答

1

1 /這方法可能奏效,而我失去了一些東西

是它應該工作。我已經看到了JAVA運行時非常類似的設置,我看不出有任何理由爲什麼不應該與MONO運行時間一起工作。

2 /有沒有另一種方法來勞nch使用Mono的可執行文件?

我絕對推薦使用無處不在的絕對路徑,您可以:

/absolute_path_to/mono /absolute_path_to/my_executable.exe

3 /我應該用比單聲道(蟒蛇/ C++)

號原住民別的東西消息傳遞可與任何可執行文件協同工作,而不管用於創建它的編程語言


BTW:單可能會失敗,當您的可執行拋出一個不是由你的代碼,但你launch.sh腳本將「吞噬」錯誤信息處理的異常啓動。你或許應該重定向STDERR日誌文件是這樣的:

#!/bin/bash 
/absolute_path_to/mono --runtime=v4.0.30319 /absolute_path_to/my_executable.exe "[email protected]" 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 "[email protected]" > /absolute_path_to/my_executable.log 2>&1 

無論如何,如果您還沒有這樣做,您應該爲您的應用程序添加日誌記錄功能。

+0

非常感謝您的快速和詳盡的答案。順便說一句,我目前正在使用你的美妙的DLL PKCS11Interop,所以非常感謝所有偉大的工作! – Thordax

+0

@ Thordax:太好了。我很高興你喜歡它。 – jariq