Firefox - как мне перечислить установленные расширения и идентифицировать их в списке? - PullRequest
4 голосов
/ 13 января 2010

Два связанных вопроса:

  1. Существует ли API для создания списка всех установленных расширений в Firefox?

  2. Если так, как я могу однозначно определить расширение? Мне нужно иметь идентификатор, который сохраняется в разных версиях расширения и в идеале через переименование (поэтому имя может быть не лучшим вариантом). Это GUID?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 14 января 2010

Примечание: этот ответ устарел. nsIExtensionManager был заменен на AddonManager, а ТОПЛИВО устарело.

Вы можете получить список элементов из nsIExtensionManager. Да, существует уникальный идентификатор для расширений (nsIUpdateItem::id), , как указано в манифесте установки .

Если подумать, это то, что ТОПЛИВО действительно полезно. Попробуйте это в консоли ошибок:

Application.extensions.all.forEach(function(item) { alert(item.id) })
1 голос
/ 13 января 2010

Чтобы получить список расширений, пожалуйста, посмотрите на nsExtensionManager.js в папке компонентов, есть переменная с именем validExtensions, которая используется для генерации extensions.ini в директории профиля Firefox

Для уникального идентификатора, ядумаю, это зависит от самих расширений, потому что некоторые расширения, такие как noscript, adblockplus, используют GUID, а некоторые расширения, такие как firebug, foxmarks используют стиль адреса электронной почты.

0 голосов
/ 25 июня 2018

Из-за пределов Firefox (по крайней мере, в версии 60.0) список установленных расширений можно получить из файла extensions.json в каталоге профиля. Также можно найти базы данных extensions.sqlite и addons.sqlite sqlite, но они не охватывают все расширения. Существует также addons.json, но он не содержит флага «активный» (т. Е. Является ли расширение активным, включено или отключено).

Для получения списка установленных расширений CSV с типом и активным флагом можно использовать следующий запрос XPath3 :

( json-doc("extensions.json") ? addons => array:flatten() )
  ! ( ?type, ",", ?defaultLocale?name, ",", ?active, "
" )
  => string-join()

Примечание: для правильного CSV также необходимо заключить в кавычки значения, содержащие запятую или кавычку, и экранировать кавычки.

Из оболочки, используя команду xq:

xq ' ( json-doc("extensions.json") ? addons => array:flatten() ) ! ( ?type, ",", ?defaultLocale?name, ",", ?active, "
" ) => string-join()' | sort

Пример вывода:

extension,Mozilla Archive Format,false
extension,Restart,false
theme,Default,false
webextension,Add HTTPS,true
webextension,Greasemonkey,true

xq скрипт

#!/bin/bash
declare_ns_map='declare namespace map = "http://www.w3.org/2005/xpath-functions/map";'
declare_ns_array='declare namespace array = "http://www.w3.org/2005/xpath-functions/array";'

q="$1"; shift
saxonhe-xquery -qs:"$declare_ns_map $declare_ns_array $q" "$@" \!omit-xml-declaration=yes \!indent=yes

Обновление

Несколько более простой запрос, чем XPath, чтобы получить тот же результат, используя jq JSON-процессор:

jq -j '.addons [] | ( .type, ",", .defaultLocale.name, ",", .active, "\n" )' extensions.json | sort
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...