次のように、アドオン SDK を使用して Firefox 拡張機能を作成しています。これは、bash スクリプトを起動し、現在のディレクトリに作成されたファイルからその出力を読み取る必要があります。
echo "bash script output" >file.txt
main.js で次のように bash スクリプトを起動しています。
function runBashScript(scriptFile) {
var localFile = Cc["@mozilla.org/file/local;1"]
.createInstance(Ci.nsILocalFile)
localFile.initWithPath('/bin/bash');
var process = Cc["@mozilla.org/process/util;1"]
.createInstance(Ci.nsIProcess);
process.init(localFile);
var args = [ scriptFile ];
var rc = process.runAsync(args, args.length,
function(subject, topic, data) {
console.log('subject=' + subject + ', topic=' + topic + ', data=' + data);
console.log('bash script finished executing, returned ' + process.exitValue);
});
return rc;
}
私の質問は、スクリプトがそれにエコーするときに file.txt が保存される main.js 内から、プログラムでどのように見つけるのですか? では、起動されたプロセスの現在の作業ディレクトリは何ですか? とにかくそれを取得または変更する方法はありますか?
オンラインのnsIProcessのドキュメントでは、これについて何も言及されていません。
cfx run を使用して拡張機能を実行した場合、および XPI としてインストールした後に Firefox で実行した場合に、file.txt が終了する場所を (FS を検索して) 確認しました。しかし、起動時にこの情報を特定し、最終的にどこに保存されるかを制御したいと考えています。