【发布时间】:2023-03-26 16:28:01
【问题描述】:
我有一个 Thunderbird 扩展,它使用外部可执行文件来改变消息体。目前我做了一个hack-job,只是把这个可执行文件放在/tmp/someBinary,然后这样称呼它:
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;
但这并不完全正确。有没有正常的方法来完成这项工作?
【问题讨论】:
-
试试这样的 var nsIFileS= Components.interfaces.nsIFileURL;然后使用 nsIFileS.init(...) 用 URL 初始化它
标签: javascript thunderbird thunderbird-addon