Полезная информация

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

№118-02-2012 11:48:51

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 11.0

Получение имен chrome packages всех установленных расширений.

Сабж. Посмотрел, как это сделано в расширениях, решающих подобную задачу (OPIE, например) - сделано достаточно просто: берем список всех расширений, берем у каждого из них options URL, регэкспом выдергиваем оттуда название пакета. Но: есть энное количество расширений, у которых нет (не прописаны в install.rdf) options url, icon url, about url etc. Как ни странно, информации о chrome package вообще не содержится в экземплярах Addon, этой информации также нет в extensions.sqlite. Пока сделал так: у расширений, не имеющих информации, за которую можно было бы зацепиться, беру getResourceURI(""), отталкиваясь от этого конструирую URI к chrome.manifest, читаю его (если он есть - у джетпаков его нет), нахожу строчку, начинающуюся на content (она вроде как есть всегда), оттуда выдергиваю название пакета. Такой способ не нравится тем, что в нем много "если не, то", тем, что асинхронное чтение файлов (синхронное нельзя применить, поскольку имена пакетов всех расширений мне нужны в т.ч. при запуске FF) - нет ли другого способа быстро получить требуемое?
Отдельный пункт - джетпаки. У них, как я понимаю, имя chrome package вообще отсутствует?

Отсутствует

 

№218-02-2012 14:58:58

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 10.0

Re: Получение имен chrome packages всех установленных расширений.

hydrolizer пишет

Отдельный пункт - джетпаки. У них, как я понимаю, имя chrome package вообще отсутствует?

Не у всех: https://developer.mozilla.org/en/Extens … e.manifest
Пример: https://addons.mozilla.org/firefox/file … nifest#top


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№319-02-2012 08:46:47

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 11.0

Re: Получение имен chrome packages всех установленных расширений.

Infocatcher
Понятно, спасибо. У меня ситуация, когда надо исходить из наихудшего варианта - т.е. когда имя пакета определить нельзя никак (отсутствует chrome.manifest). Означает ли это, что и chrome package, соответствующий расширению, отсутствует? Если да - как в таком случае адресуются ресурсы внутри расширения?

Отсутствует

 

№419-02-2012 14:50:00

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 10.0

Re: Получение имен chrome packages всех установленных расширений.

hydrolizer пишет

как в таком случае адресуются ресурсы внутри расширения?

Так, вроде, никак. Без chrome.manifest с протоколом chrome:// ничего не сделать: https://bugzilla.mozilla.org/show_bug.cgi?id=564667.
Хотя file://, вроде, работает:

Выделить код

Код:

var prefsFile = new Error().fileName
    .replace(/^.* -> /, "")
    .replace(/\/?[^\/]+$/, "")
    + "/defaults/preferences/prefs.js";
Services.scriptloader.loadSubScript(prefsFile, context);

Выдает «jar:file:///D:/path/to/profile/extensions/name@some.xpi!/defaults/preferences/prefs.js», скрипт подгружается.
(хотя это то еще извращение :))


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]