找出Thunderbird API中addon文件夹的路径

时间:2012-10-18 19:01:23

标签: thunderbird thunderbird-addon

我正在修改thunderbird的插件,并在其中一个javascript文件中找到了硬编码插件的路径。这对我来说似乎很草率,我认为必须能够以编程方式找到这条路径。然而,经过多次蠢事之后,我仍然找不到这个问题的答案。

你知道如何找到Thunderbird插件的文件夹(包含install.rdf)的路径吗?

1 个答案:

答案 0 :(得分:3)

您可以使用AddonManager API

Components.utils.import("resource://gre/modules/AddonManager.jsm");

AddonManager.getAddonByID("foo@example.com", function(addon)
{
  var uri = addon.getResourceURI("install.rdf");
  if (uri instanceof Components.interfaces.nsIFileURL)
  {
    var file = uri.file;
    alert(file.parent.path);
  }
});

供参考:AddonnsIFileURLnsIFile

上面代码中的假设是扩展在安装时解压缩,您的前任可能会将<em:unpack>true</em:unpack>添加到install.rdf。通常不应指定此标志,将扩展打包在磁盘上会更好地提高性能。如果您只需要从扩展程序中读取文件,则可以使用XMLHttpRequest,而不要求它是磁盘上的物理文件:

Components.utils.import("resource://gre/modules/AddonManager.jsm");

AddonManager.getAddonByID("foo@example.com", function(addon)
{
  var uri = addon.getResourceURI("example.txt");
  var request = new XMLHttpRequest("GET", uri.spec);
  request.addEventListener("load", function()
  {
    alert(request.responseText);
  }, false);
  request.send();
});