从附加组件下载基于文件

时间:2014-07-29 07:11:00

标签: javascript firefox-addon

我正在构建一个附加组件,该附加组件启动可执行文件以启用高级智能代理。我已经能够完美地启动可执行文件,但exe的大小合适,我需要为每个操作系统使用不同的。

我不想将它们全部打包到附加组件中,因为这会导致不必要的大文件大小。我希望附件能够在安装后为客户端的操作系统下载正确的文件。

我找到了nsIDownloader,但它唯一的方法是init(),它接受观察者和下载位置。我不知道如何给它Web服务器位置。似乎缺少大量关于它的文档。

1 个答案:

答案 0 :(得分:0)

nsIDownloader可能听起来像是一个很好的起点,但它实际上只是一个低级辅助API,并且因为它在主/ UI线程上执行同步I / O而灰心丧气。 / p>

我改为使用相对较新的异步Downloads.fetch()高级助手。

E.g。以下内容适用于Scratchpad。如果执行环境有console(例如叠加,或Console.jsm),或者调用console.log调用,则它也可以在任何加载项中使用。

Cu.import("resource://gre/modules/Task.jsm");
Cu.import("resource://gre/modules/Downloads.jsm");

Task.spawn(function() {
  var file = Services.dirsvc.get("TmpD", Ci.nsIFile);
  file.append("test.download");
  try {
    yield Downloads.fetch("http://example.org/", file);
    console.log(file.path);
    console.log(file.exists());
    console.log(file.fileSize);
  }
  catch (ex) {
    console.log("Download Failed", ex);
  }
});
相关问题