XPCOM:Firefox4エクステ個別フォルダ直下のファイルを見に行く

Firefox4に移行した際、Firefox3系で利用できていたコンポーネントクラスが一部使えなくなったようです。
mimaQ AnalyzerではローカルのSQLiteデータベースファイルを見に行く際のFile I/O部分で影響があり、Fx4では利用コンポーネントをエクステンションマネージャーからアドオンマネージャに変えないと動かないようです。

MDC Doc Center File I/O

■エクステ個別フォルダ直下のファイルを見に行く

【Firefox3系】
var file = Components.classes[“@mozilla.org/extensions/manager;1”]
.getService(Components.interfaces.nsIExtensionManager)
.getInstallLocation(id)
.getItemLocation(id);
file.append(“dbname.sqlite”);

【Firefox4系】
Components.utils.import(“resource://gre/modules/AddonManager.jsm”);
AddonManager.getAddonByID(id, function(addon) {
var file = addon.getResourceURI(“dbname.sqlite”).QueryInterface(Components.interfaces.nsIFileURL).file;
});

Fx3とFx4では上記の形でいけました。
細かいバージョン判別は面倒なのでtry~catchで両方入れてます。

追記:
あとFirefox4の場合xpiが展開されずそのままインストールされるので、拡張機能内のファイルを見に行く場合インストールマニフェストにem:unpackを追記する必要があります。
Extensions now installed packed

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>