私は、ローカルにインストールされたプログラムと通信してデータを交換するためのFirefoxアドオンを書きたいと思います。これは、js-ctypesまたは低レベルのsystem/child_process APIを使用して実行できます(後者はrecommended solutionです)。Firefoxのアドオン内でsystem/child_process APIで使用するファイルを見つけるにはどうすればよいですか?
child_process APIは、Cインターフェイスレベルで直接パイプでデータを抽象的に送受信するため、魅力的です。しかし、それはあなたのコード内で実行可能ファイルへのフルパスを供給するためにあなたの必要性(それはそう)を使用する:私の場合は
var child_process = require("sdk/system/child_process");
var ls = child_process.spawn('/bin/ls', ['-lh', '/usr']);
を、実行可能ファイルは別のアプリケーションによってインストールされていると我々はそれが正確な場所だか分かりません - OS、ユーザーのドライブ、および場合によってはユーザーの好みによって異なります。この問題は、OSに組み込まれていないほとんどの実行可能ファイルに共通すると思います。だから私の質問です:私は使用する実行可能ファイルの完全なパスを見つける必要がありますか?私は複数のOSをサポートする必要がありますが、必要に応じてそれぞれ異なるソリューションを用意している可能性があります。
ありがとうございます!
予想される場所を繰り返す必要があります。一般的なloctionsの多くは 'OS.Constants.Path'にリストされています。デスクトップなどです。あなたはいつでも、ユーザにその場所を提供させることができます。環境情報を入手できます - https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/system_environment – Noitidart
https://developer.mozilla.org/en-US/Add-ons/ SDK/Low-Level_APIs/io_file - ディレクトリにファイルをリストする方法を示します。 child_processはjs-ctypes自体で書かれています。それを書き直さないでください – Noitidart
他のアプリケーションはどのように正確な場所を見つけるのですか? 'PATH'やその他の環境変数の中にありますか?ユーザーのホームディレクトリに設定ファイルがありますか? – the8472