>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Получение имен chrome packages всех установленных расширений. http://forum.mozilla-russia.org/viewtopic.php?id=53858 |
hydrolizer > 18-02-2012 11:48:51 |
Сабж. Посмотрел, как это сделано в расширениях, решающих подобную задачу (OPIE, например) - сделано достаточно просто: берем список всех расширений, берем у каждого из них options URL, регэкспом выдергиваем оттуда название пакета. Но: есть энное количество расширений, у которых нет (не прописаны в install.rdf) options url, icon url, about url etc. Как ни странно, информации о chrome package вообще не содержится в экземплярах Addon, этой информации также нет в extensions.sqlite. Пока сделал так: у расширений, не имеющих информации, за которую можно было бы зацепиться, беру getResourceURI(""), отталкиваясь от этого конструирую URI к chrome.manifest, читаю его (если он есть - у джетпаков его нет), нахожу строчку, начинающуюся на content (она вроде как есть всегда), оттуда выдергиваю название пакета. Такой способ не нравится тем, что в нем много "если не, то", тем, что асинхронное чтение файлов (синхронное нельзя применить, поскольку имена пакетов всех расширений мне нужны в т.ч. при запуске FF) - нет ли другого способа быстро получить требуемое? |
Infocatcher > 18-02-2012 14:58:58 |
hydrolizer пишет
Не у всех: https://developer.mozilla.org/en/Extens … e.manifest |
hydrolizer > 19-02-2012 08:46:47 |
Infocatcher |
Infocatcher > 19-02-2012 14:50:00 |
hydrolizer пишет
Так, вроде, никак. Без chrome.manifest с протоколом chrome:// ничего не сделать: https://bugzilla.mozilla.org/show_bug.cgi?id=564667. Выделить код Код: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», скрипт подгружается. |