1

Google Chrome アプリケーションを開発していて、Java アプリケーションを起動する必要があります。(実際には、choosefile ポップアップなしでファイルを読み取って保存する必要があります)。

NPAPI ライブラリが非推奨になったため、代替手段を探し、「ネイティブ メッセージング ホスト」を使用して外部アプリケーションを起動することにしました。

最初の例を作成するために、シェル スクリプトを起動しようとしました。その方が簡単だと思うからです。ただし、スクリプトを起動できませんでした。私はLinuxで開発しています

マニフェスト ファイルはこのパスにあります

"/etc/opt/chrome/native-messaing-hosts/com.centeropenmiddleware.l3p1.xmleditor.json":

含まれるものは次のとおりです。

{
  "name": "com.centeropenmiddleware.l3p1.xmleditor",
  "description": "Saving a file",
  "path": "/home/paco2/pp.sh",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://plfnjepfbddljeogeacemcpceiofapnm/"
  ]
}

アプリケーション ID は plfnjepfbddljeogeacemcpceiofapnm です。

スクリプトはファイルを作成します。

#!/bin/bash
echo hola mundo >> aaa

アプリケーション コードは次の行で失敗します。

try {
    var port = chrome.runtime.connectNative ('com.centeropenmiddleware.l3p1.xmleditor')
} catch (e) {
    console.log(e);
    return;
}

キャッチされたエラーは

{
    message : "Error connecting to native app: com.centeropenmiddleware.l3p1.xmleditor",
    stack : "Error: Error connecting to native app: com.centeropenmiddleware.l3p1.xmleditor
             at Object.<anonymous> (extensions::runtime:189:11)
             at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
             at Object.handleRequest (extensions::binding:55:27)
             at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
             at Object.<anonymous> (extensions::binding:318:32)
             at saveas (chrome-extension://plfnjepfbddljeogeacemcpceiofapnm/js/editorRoutines.js:104:35)
             at HTMLButtonElement.sendFileContentFromEditor (chrome-extension://plfnjepfbddljeogeacemcpceiofapnm/js/editorRoutines.js:89:27)"
}

アプリケーションを起動するには、これらのコマンドを使用しました

google-chrome --load-and-launch-app=/home/paco2/Projects/UPM/XMLEditor/XMLEditor/ --native-messaging-hosts="com.centeropenmiddleware.l3p1.xmleditor.json=/etc/opt/chrome/native-messaing-hosts/com.centeropenmiddleware.l3p1.xmleditor.json"
google-chrome --load-and-launch-app=/home/paco2/Projects/UPM/XMLEditor/XMLEditor/ 

安定したGoogle Chromeバージョン(34.0.1847.132)を使用しています

間違いはありませんか?

4

1 に答える 1

1

Chromiums Native Messaging API を処理するには、Bash を選択するのは適切ではありません。

効率的な方法でバイナリ情報を処理することはできません。この質問を参照してください

ただし、なんとかbashスクリプトを起動できました。そのために、sendNativeMessage を使用しました。一度だけ送信する

 chrome.runtime.sendNativeMessage('com.centeropenmiddleware.l3p1.xmleditor',
        {text: "send"},
        function(response) {console.log("Received " + 
                            chrome.runtime.lastError.message);
        });

/home/paco2/pp.sh を起動しますが、send.

つまり、これには bash を使用しないでください。C++ または Python を試してからsubprocess.

于 2014-07-17T10:20:26.600 に答える