외부 실행 파일을 사용하여 메시지 본문을 변형시키는 Thunderbird 확장 프로그램이 있습니다. 현재 내가 해킹-일을 그냥 /tmp/someBinary
이 실행 파일을 배치하고 그래서 같이 호출 :URI를 사용하여 외부 바이너리를 참조하는 방법은 무엇입니까?
var exe = FileUtils.File("/tmp/someBinary");
var proc = Components.classes["@mozilla.org/process/util;1"]
.createInstance(Components.interfaces.nsIProcess);
proc.init(exe);
var args = [msgBody.path];
proc.run(true, args, args.length);
이 분명히 바보, URI를 통해 그것을 호출하고 응용 프로그램 실행 파일을 번들 좋을 것입니다. 슬프게도, 제한된 JS는 다음과 같은 것을 찾았다는 의미입니다.
var URL = ios.newURI("chrome://myExtension/content/someBinary",null,null);
var exe = URL.QueryInterface(Components.interfaces.nsIFileURL).file;
그러나 이것은 적절하지 않습니다. 이 작업을 수행하는 일반적인 방법이 있습니까? chrome://
URL이 반드시 file://
URL로 해결되지 않습니다
var chromeRegistry = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
.getService(Components.interfaces.nsIChromeRegistry);
var URL = ios.newURI("chrome://myExtension/content/someBinary", null, null);
URL = chromeRegistry.convertChromeURL(URL);
var exe = null;
if (URL instanceof Components.interfaces.nsIFileURL)
exe = URL.file;
참고 :
다음과 같이 시도하십시오. var nsIFileS = Components.interfaces.nsIFileURL; 그런 다음 nsIFileS.init (...)을 사용하여 URL을 – ama2