我的附件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
,我们尝试了:
OS.Path.join(uri.path, 'content');
显然可用于* nix,但不适用于Windowsuri.QueryInterface(Ci.nsIFileURL).file
,然后在克隆上调用append('content')
,并且此操作有效,但仅当附件在<em:unpack>
中将install.rdf
伪指令设置为true时才有效。即使压缩了附件,我们如何获得一条可行的路径?
((注:我在此帖子中添加了Firefox附加标签,因为那里的问题应该与此相似)
.xpi
文件是一个zip文件,应使用nsIZipReader
访问。
以下内容将创建一个nsIZipReader
,您可以在其上进行迭代。使用nsIUTF8StringEnumerator
nsIUTF8StringEnumerator
这应该为您提供findEntries()
目录中包含的所有文件和目录。但是,您可能只对直接位于内容目录中的文件感兴趣:
findEntries()