おそらくこれはFirefox拡張機能でFirebreathで生成されたプラグインの使用に関連していますか?; しかし、私の質問はおそらくもっと具体的なので、ここに行きます...
私はLinux(Ubuntu 11.04)に取り組んでおり、FireBreathを使用してMozilla / Firefox(Firefox 7)プラグインを構築しました。このプラットフォームで作成されたプラグインは" npXXX.so
"ファイルであり、これはでシンボリックリンクされてい~/.mozilla/plugins
ます。次に、このプラグインを使用する拡張機能をコーディングしました。シンボリックリンクを除けば、他に何も必要ないようです。すべてがスマッシングするだけで機能するようです:)
したがって、「firefoxはXPIを介したプラグインのインストールをサポートしています。これはFireBreathチームによって推奨されていません」ということを知っているので、拡張機能とプラグインをXPIファイルにパッケージ化したいと思います。だから、私はインストール可能なバンドルの構造-MDNについて少し読んでいます、そして私はこれらの2つの可能性を見ることができます:
/components/* XPCOM components (*.js, *.dll), and interface files from *.xpt (>=1.7)
...
/plugins/* NPAPI Plugins (>=1.8)
...
binary-component components/linux/mycomponent.so ABI=Linux_x86-gcc3
さて、「プラグイン用の古いXPCOMベースおよびLiveConnectベースのAPIは使用しないでください。」と書かれているので、「/components
」ディレクトリは使用しないでください(上記のページに例として示されている場合でも)。そして、これがどこにも明示的に述べられているのを見つけることはできませんが、FireBreathはNPAPIプラグインを構築していると思います-おそらく「/plugins
」が進むべき道です。(「」についても言及/platform
されていますが、Firefox> 3.6では非推奨になっていることを明確に示しています)。
さて、これまでのところとても良いです...それで私はプラグインファイルをplugins/linux
拡張ディレクトリ内にコピーしようとします:
cp -L ~/.mozilla/plugins/npXXX.so plugins/linux/
...次に、次のように挿入しますchrome.manifest
。
binary-component plugins/linux/npXXX.so ABI=Linux_x86-gcc4
...次に、拡張ディレクトリ全体(プラグインを含む)を.xpiとして圧縮し、別のコンピューターにインストールしてみます。そこで、.xpiが正常にインストールされ、.soファイルがプロファイルのextensions/XXX/plugins/linux/
ディレクトリの下に実際に解凍されます。拡張子のすべてのクロスプラットフォーム(javascript)コードは正常に機能します。プラグインが見つからないことを除いて。
もちろん、ユーザー自身が拡張子.so
を~/.mozilla/plugins/
;にシンボリックリンクすることもできます。しかし、私はそのユーザーを惜しまないようにしたいと思います:)
この種のパッケージングについてはどうすればよいですか?推奨される方法はありますか?
よろしくお願いし
ます。
編集:プラグインをツールキットバンドルとして出荷することがわかりました-MDNのみを要求しinstall.rdf
、aplugins/obj.so
が必要です。次に、Linux上のFirefox 4、5、6でQuake Liveを実行していることを発見しました[内部の修正]、QuakeLivePlugin_433-modded_ff10.xpiを参照しており、実際にそのような単純な構造に従っています。これをインストールすると、両方が得られます。 Quake拡張機能とQuakeプラグイン(そして、エラーコンソールが「chromeマニフェストファイルを読み取れませんでした」/path/to/extensions/quakeliveplugin@idsoftware.com/chrome.manifest'。」と文句を言っていても)....しかし、試してみると私のFireBreathプラグインでも同じです(たとえば、install.rdfとプラグインだけ/plugins
)、拡張機能のみが表示されます-プラグインはありません(そして合理的なエラーメッセージもありません)。これはFireBreathの問題でしょうか?