mozilla Firefox、Thunderbird 52からのアドオン非動作(XPCOM廃止の影響)の解決策一例
はじめに
Firefox や Thunderbird 開発元である Mozilla は、XPCOM の(XULも?)廃止を予定しており、バージョン52で XPCOM の一部は廃止されました。古くから使用されてきている多数のアドオンが動かなくなったことと思います。
今後も続々と廃止になっていくようです(もちろん機能改善もあるのですが)
- 拡張機能のバイナリコンポーネント対応が廃止されます - modest (mozilla developper's site)
- XULとの決別、XPCOMの廃止はありえるのか? - teramako さん
- MozillaはXUL廃止を本当に実行に移すのだろうか - Schuzak.jp さん
- モジラ、アドオン開発の変更計画を発表--XUL/XPCOMを非推奨へ - ZDNet Japan
解決策の例
アドオンがうまく動かなくなった場合は、デバッグコンソール(Ctrl + Shift +J)を開いて、エラーメッセージからヒントを得ることができるでしょう。
"nsPreferences is not defined."
設定情報(設定エディタで読み書きできる例のもの)の取得・保存に chrome://global/content/nsUserSettings.js 内にある nsPreferences を使用しているアドオンがあります。
let alwaysShown = nsPreferences.getBoolPref("extension.myaddon1.alwaysshown", false);
nsPreferences.setIntPref("extension.myaddon1.level", 10);
は、バージョン52以降エラーになります。これは、たとえば次のように書き換えることができます。
let prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
let alwaysShown = false;
if(prefs.getPrefType("extension.myaddon1.alwaysshown") == Components.interfaces.nsIPrefBranch.PREF_BOOL)
{
alwaysShown = prefs.getBoolPref("extension.myaddon1.alwaysshown");
}
prefs.setIntPref("extension.myaddon1.level", 10);
さいごに
MDN サイトでの多数あるリンク切れが、プロジェクトの綻びをなんとなく感じさせてくれます(ボランティア活動で作られているので贅沢は言えませんが...)
"nsPreferences is not defined" でググると
「重宝していたアドオン『***』が使えなくなってしまいました。。作者さんからのメッセージでは『Firefox52以降のバージョンでは動作しません。すみませんが今後の対応予定はありません。』とありました。諦めるしかないのかもしれませんが、もう業務とどっぷりで、しかも代わりになるアドオンも見つからないのです(泣)寄付してもよいのでどなたか作ってください!!」
といった叫びも見られます。視点を変えてみると、これはチャンスかも!?開発者でないあなたも、ばりばり開発者だけど Firefox アドオン開発には詳しくないあなたも、Firefox や XUL に詳しい開発者をつかまえて、協同して代替の先進的アドオンをリリースしてみてはいかがでしょう?
参考にした情報
-
prefs.js に設定を保存する・設定を読み込む - piro さん(XUL開発情報ページ)
-
nsPreferences -> nsIPrefService への移行 - GitHub thorikawa さん
-
Preferences - MDN
-
nslPrefBranch - MDN
Author And Source
この問題について(mozilla Firefox、Thunderbird 52からのアドオン非動作(XPCOM廃止の影響)の解決策一例), 我々は、より多くの情報をここで見つけました https://qiita.com/otagaisama-1/items/9da620660843e71bf8d6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .