Xpoint
   [напомнить пароль]

Автообновление расширений в XULRunner

Метки: [без меток]
2007-03-13 12:56:58 [обр] sndralex(2/2)[досье]

Здравствуйте,

Мне нужно включить возможность автоматического обновления расширений в моем XULRunner приложении. Вручную расширение обновляется как следует, а вот автоматически - не хочет. Вообше в XULRunner эта фича на моей ответственности или это фича XULRunner-а?

Спасибо.
Вот код из prefs.js, который я использую.

pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul");
pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul?type=themes");
pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul?type=extensions");
pref("xpinstall.dialog.progress.type.skin", "Extension:Manager-themes");
pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager-extensions");
pref("extensions.update.enabled", true);
//pref("extensions.update.interval", 86400);
pref("extensions.update.interval", 60);
pref("extensions.dss.enabled", false);
pref("extensions.dss.switchPending", false);
pref("extensions.ignoreMTimeChanges", false);
pref("extensions.logging.enabled", false);
pref("general.skins.selectedSkin", "classic/1.0");
// NB these point at AMO
pref("extensions.update.url", "chrome://mozapps/locale/extensions/extensions.properties");
pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/extensions.properties");
pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/extensions.properties");
спустя 22 минуты [обр] sndralex(2/2)[досье]
Это работает,
только не понятно в чем измеряется extensions.update.interval ?
если в секундах, то я честно прождал пару минут, открыл XULRunner, и ничего не произошло,
а спустя пол-часа - произошло.
спустя 1 час 32 минуты [обр] Владимир Палант(434/4445)[досье]

Во-первых: а файл chrome://mozapps/locale/extensions/extensions.properties в XULRunner есть? И куда там указывает строка extensions.update.url, на addons.mozilla.org?

Во-вторых: вполне возможно, что запустить проверку на обновления вы таки должны сами, при старте приложения. Запустите для этого nsIExtensionManager.start().

спустя 37 минут [обр] sndralex(2/2)[досье]

 extensions.update.url - указывает на addons.mozilla.org, но в самом расширении в install.rdf прописан правильный <em:updateURL>. Вы хотите сказать, что автоматическое обновление возможно только с addons.mozilla.org ?

Попробовал запустить такой код:

var Cc = Components.classes;
var Ci = Components.interfaces;
var extMngr = Cc['@mozilla.org/extensions/manager;1']
//extMngr = extMngr.createInstance(Ci.nsIExtensionManager);
extMngr = extMngr.getService(Ci.nsIExtensionManager);
extMngr.start(window.arguments[0]);

При загрузке окна - не проверяет(или не находит). А в ручную, запускаю Find Update - находит.
Кстати, как я уже писал - один раз проверка запустилась и нашла обновление, но я так и не смог это связать с какими либо моими действиями, или кодом который я писал. Просто один раз при старте XULRunner-a Extension Manager предложил мне update.

Оффтопик, а как узнавать, когда мне нужно использовать getService а когда createInstance, т.е. как узнать когда компонента реализована как сервис?

спустя 1 час 9 минут [обр] Владимир Палант(434/4445)[досье]
Если компонента существует в единственном числе — значит это сервис.
спустя 1 час 47 минут [обр] sndralex(2/2)[досье]
А как узнать что компонента в единственном числе?
Вот вы мне посоветовали использовать nsIExtensionManager.
А как мне получить инстанс - создать или getService?
Глядя на нее мне затруднительно это определить.
спустя 5 минут [обр] Владимир Палант(434/4445)[досье]
Вы хотите создать второй (третий, четвертый) Extension Manager?
спустя 3 минуты [обр] sndralex(2/2)[досье]
Да нет. Пожалуй одного достаточно.
Т.е. getService получает один созданный инстанс, а если такого нет, то он его создает?
Я правильно понял?
спустя 2 часа 46 минут [обр] Владимир Палант(434/4445)[досье]
Да.
спустя 6 дней [обр] sndralex(2/2)[досье]
Возврашаясь к изначальной проблеме.
Я поставил на свой компьютер снифер пакетов tcp и определил что при старте XULRunner не делает никаких попыток найти обновления ни на сайте addons.mozilla.org ни где бы то ни было еше.
Не взирая на запуск extMngr.start при загрузке окна.
Подскажите, пожалуйста, в какую сторну копать.
Powered by POEM™ Engine Copyright © 2002-2005