Thnderbird拡張機能を強制VerUPで試したこと
●対象
総務省迷惑メール情報提供用プラグイン
http://plugin.antispam.go.jp/
(Thnderbirdでは「拡張機能」として追加されます)
Ver3.1.Xまでしか対応せず、早く上位バージョン対応しないかなーと思ってたら
Thnderbirdの方が7から8にあがってしまい、仕方ないのでプラグインを強制的に対応させてやろうか、が発端。
やることは画面で指定されたメールを所定アドレスへ転送するだけなので
Thnderbird本体の特有機能をゴリゴリ使うわけではないので、サクっといけるかなーと見込んでましたが
結論無理でした。
ちなみに上記ページでDLできるThnderbirdプラグインは見慣れない拡張子ですがZIP圧縮されたファイルなので、拡張子書き換えれば解凍できます。
●プラグイン本体の場所
Win7の場合
C:\Users\ユーザ名\AppData\Roaming\Thunderbird\Profiles\英数字.default\extensions
WinXPの場合(想定)
C:\Documents and Settings\ユーザ名\Local Settings\Thunderbird\Profiles\英数字.default\extensions
●プラグインの対応Versionを変更する
extensionsフォルダ配下に「spamsender-tb@antispam.go.jp」というフォルダがありinstall.rdfというファイルがあるのでテキストエディタを開き、以下を変更する。
<em:maxVersion>3.1.*</em:maxVersion>
↓
<em:maxVersion>8.1.*</em:maxVersion>
ここを変更すると、Thnderbird起動時に拡張機能がチェックされ、対応していないバージョンのものは無効にされるのがされなくなります。
●修正したとこ(ここから下は的外れな可能性大)
Version対応変更のみで拡張機能を動かすと
「engine undefined」とメッセージボックスが出ます。
というわけで以下のファイルを確認すると(XML内にJavaScriptが記載されたmozillaフレームワーク用のスクリプトファイル)
spamsender-tb@antispam.go.jp\chrome\content\spamsender.xul
var engine = Components.classes["@antispam.go.jp/SpamSender/ISpamSenderTB;1"].createInstance(Components.interfaces.ISpamSenderTB);
ここで変数engineを定義してるけどもCreateInstanceから何も返ってこないので以降の処理中でengineを呼び出す時にコケてるようです。
で、Components.classesをゴリゴリとループして列挙してみたところ
"@antispam.go.jp/SpamSender/ISpamSenderTB;1"が存在しないので、多分どっかでこれを定義してやらないといけないと思いますが、ここで調査を中断しました。
ちなみに上記の列挙では"@mozilla.org/*"が大量に出てきたので、Componentsとして読み込ませてやらないとプラグインがThnderbirdから呼び出せないんだと思います。
気が向いたら、また試してみます。
PS.どーでもいいけどmozillaのアドオン開発関連は日本語情報少なすぎるぞ...。
追記:はてブに指摘ある通りバイナリ(DLL)が拡張機能のファイル一式内に含まれてます。
ただ、DLLが動かなくなる要因だとしたらThnderbirdのアップデートよりOSのAPIが呼べなくなるようなOSサイド要因だと思うので、多分そのDLLをThnderbirdで認識できなくなったんだろうと想定していて
なのでDLL自体にはメスを入れてません。一応補足。