Ich möchte ein Firefox Add-on schreiben, das mit einem lokal installierten Programm kommuniziert, um Daten auszutauschen. Es sieht so aus, als könnte dies unter Verwendung von js-ctypes oder der Low-Level-API system/child_process erfolgen, wobei letztere die recommended solution ist.Wie kann ich eine Datei finden, die mit der system/child_process-API in einem Firefox-Add-On verwendet werden soll?
Das child_process-API appelliert, weil es Daten abstrakt über eine Pipe und nicht direkt auf der C-Schnittstellenebene sendet und empfängt. Es ist jedoch zu verwenden Sie müssen (wie es scheint) den vollständigen Pfad zu der ausführbaren Datei im Code zu liefern:
var child_process = require("sdk/system/child_process");
var ls = child_process.spawn('/bin/ls', ['-lh', '/usr']);
In meinem Fall die ausführbare Datei von einer anderen Anwendung installiert ist, und wir wissen nicht, es die genaue Standort ist - Es unterscheidet sich je nach Betriebssystem, den Laufwerken des Benutzers und möglicherweise den Vorlieben des Benutzers. Ich kann mir vorstellen, dass dieses Problem bei den meisten ausführbaren Dateien auftritt, die nicht in das Betriebssystem integriert sind. Also meine Frage ist: was bedeutet, muss ich den vollständigen Pfad der ausführbaren Datei suchen, die ich verwenden möchte? Ich muss mehrere Betriebssysteme unterstützen, kann aber bei Bedarf unterschiedliche Lösungen für jeden verwenden.
Danke!
Sie müssen erwartete Standorte iterieren. Viele gängige Adressen sind in "OS.Constants.Path" aufgeführt, wie Desktop usw. Sie können den Benutzer immer den Standort angeben lassen. Sie können Umweltinformationen erhalten - 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 - zeigt Ihnen, wie Sie Dateien in einem Verzeichnis auflisten. child_process wird in js-ctypes selbst geschrieben. Nicht umschreiben es haha – Noitidart
Nun, wie finden andere Anwendungen den genauen Standort? Liegt es in der 'PATH' oder einer anderen Umgebungsvariablen? Gibt es eine Konfigurationsdatei im Home-Verzeichnis des Benutzers? – the8472