How do I traverse a directory in Mozilla Firefox 4.0 and beyond? -
How do I traverse a directory in Mozilla Firefox 4.0 and beyond? -
used this:
class="lang-js prettyprint-override">// firefox 3.6 , before; mozilla 1.9.2 , before var ext = this.cc["@mozilla.org/extensions/manager;1"] .getservice(this.ci.nsiextensionmanager) .getinstalllocation(id) .getitemlocation(id); // list xml files in installation folder: var entries = ext.directoryentries; var files = []; while(entries.hasmoreelements()) { )
how ext
variable now? have gotten far following:
components.utils.import("resource://gre/modules/addonmanager.jsm"); addonmanager.getaddonbyid(id, function(addon) { ext = addon.getresourceuri(""); }
but not sure how directory info traverse it...
there might not directory traverse - starting firefox 4 extensions no longer unpacked when install them, resource uri point xpi file (via jar:
protocol scheme). again, in cases extension unpacked upon installation, file:///
uri. should (untested):
var uri = addon.getresourceuri(""); if (uri instanceof components.interfaces.nsijaruri) { var xpifile = uri.jarfile.queryinterface(components.interfaces.nsifileurl).file; var reader = components.classes["@mozilla.org/libjar/zip-reader;1"] .createinstance(components.interfaces.nsizipreader); reader.init(xpifile); var enumerator = reader.findentries(null); while (enumerator.hasmoreelements()) { var entry = enumerator.getnext().queryinterface(components.interfaces.nsizipentry); alert(entry.name); } reader.close(); } else if (uri instanceof components.interfaces.nsifileurl) { var dir = uri.file; var enumerator = dir.directoryentries; while (enumerator.hasmoreelements()) { var entry = enumerator.getnext().queryinterface(components.interfaces.nsifile); alert(entry.path); } } else throw new error("unexpected install location");
firefox firefox-addon directory traversal
Comments
Post a Comment