如何遍历无提取附件的.xpi文件中目录中的文件

问题描述 投票:1回答:1

我的附件Color Source,需要在未解压缩附件时(即,将其压缩为XPI),需要迭代附件中目录(例如content子目录)中的文件。

我们正在使用类似的代码来获取Addon对象:

Cu.import("resource://gre/modules/AddonManager.jsm", null)
        .AddonManager
        .getAddonByID(
            "[email protected]",
            function(addon) {
                var uri = addon.getResourceURI();
            }
        );

为了将路径传递到new OS.File.DirectoryIterator,我们尝试了:

  1. [OS.Path.join(uri.path, 'content');显然可用于* nix,但不适用于Windows
  2. [先获取然后克隆uri.QueryInterface(Ci.nsIFileURL).file,然后在克隆上调用append('content'),并且此操作有效,但仅当附件在<em:unpack>中将install.rdf伪指令设置为true时才有效。

即使压缩了附件,我们如何获得一条可行的路径?

((注:我在此帖子中添加了Firefox附加标签,因为那里的问题应该与此相似)

javascript firefox-addon firefox-addon-sdk thunderbird-addon firefox-addon-overlay
1个回答
2
投票

.xpi文件是一个zip文件,应使用nsIZipReader访问。

以下内容将创建一个nsIZipReader,您可以在其上进行迭代。使用nsIUTF8StringEnumerator

获得与模式匹配的zip文件的内容
nsIUTF8StringEnumerator

这应该为您提供findEntries()目录中包含的所有文件和目录。但是,您可能只对直接位于内容目录中的文件感兴趣:

findEntries()
© www.soinside.com 2019 - 2024. All rights reserved.