web-dev-qa-db-ja.com

Firefox:特定のアドオン/拡張機能の場所を見つけますか?

Firefox 5を使用していますが、拡張機能が プロファイルフォルダ ...のextensionsサブフォルダにあることはすでに知っています。ただし、特定の拡張機能がどこにあるかを見つける必要があります(たとえば、 CoLT )が見つかりました。問題は、ほとんどの拡張フォルダがguidによって名前が付けられていることです。

extensions$ ls
{232ac1d3-4d70-4919-8338-48c3d3f98afc}
{29c4afe1-db19-4298-8785-fcc94d1d6c1d}
{2bfc8624-5b8a-4060-b86a-e78ccbc38509}
{33f141c0-3703-4a4c-b459-cec618a7dafd}
...

次に、「Gecko 2.0(Firefox 4/Thunderbird 3.3/SeaMonkey 2.1)以降、拡張機能のインストール時にXPIファイルが解凍されなくなりました。代わりに、XPI自体が拡張機能ディレクトリに配置されます。 、およびファイルはパッケージから直接ロードされます。 "( 拡張パッケージ-MDNドキュメント )..

また、XPIは基本的にZipアーカイブであるため、extensionsフォルダーをgrepして、たとえば拡張子名を探します。

extensions$ grep -ri 'colt' . 

...何も返しません。

それで、どのXPI(または解凍されたフォルダ)が特定の拡張機能であるか、そこからロードされるかを正確に教えてくれる方法(または拡張機能)を知っている人はいますか?

14
sdaau

ロケーションバーにabout:support#extensions-tbodyと入力します。これにより、インストールされているすべての拡張機能とそのIDが(とりわけ)一覧表示されます。拡張IDは、extensionsディレクトリ内のフォルダ/ファイル名を決定します。拡張機能がプロファイルに常にインストールされているとは限らないことに注意してください。疑わしい場合は、Firefoxプロファイルのextensions.iniの内容で問題が解決するはずです。

より「快適」にしたい場合は、次のコードをブラウザコンソールに貼り付けることができます。

var {AddonManager} = Components.utils.import("resource://gre/modules/AddonManager.jsm", null);
AddonManager.getAllAddons().then(addons => {
    for (let addon of addons.filter(addon => addon.type == "extension"))
        console.log(addon.name, addon.getResourceURI().spec);
});

これは、アドオンマネージャーAPIを使用して、すべてのアドオンの名前とインストール場所を表示します。

29
Wladimir Palant

ああ、少なくとも何かがあるので、二度とタンブルウィードを取得することはありません:)

extensions$ for ix in *.xpi; do echo $ix; unzip -c $ix | grep -aoi ........colt.........; done
...
{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.xpi
{e6c4c3ef-3d4d-42d6-8283-8da73c53a283}.xpi
content colt jar:chro
hrome://colt/content/
:chrome/colt.jar!/loc
...

...これは、{e6c4c3ef-3d4d-42d6-8283-8da73c53a283}.xpiCoLT拡張子のコンテナであることを明確に指摘する必要があります。

unzip -cはterminal/stdoutに解凍し、-aを使用すると、grepにバイナリ検索を強制しますが、端末に巨大な行をダンプする可能性があるため、「一致のみ」の場合は-oで制限し、検索語の周りの「任意の文字に一致する」の意味。これにより、一致の近くで何が起こっているかを確認できます。

驚くほどユーザーフレンドリーではありませんが、少なくともそれは機能します:)それでもこれのためのより簡単な方法を聞くことを望んでいます。

乾杯!

1
sdaau