понедельник, 2 ноября 2009 г.

Лечим Firefox от "бесконечного" обновления расширений.

Механизм установки новых и обновления существующих расширений в Firefox довольно прост, но если что пойдет не так или не отработает, то приходится всё делать руками.
Если после установки расширения и перезапуска Firefox не выдает радостное сообщение, то начинаем определять этап, на котором произошел сбой.
  1. Сначала xpi-файл нового расширения загружается в папку "%firefox-profile%\extensions\staged-xpis\%extension-id%\"
  2. При перезапуске создается папка "%extension-id%", в которую распаковывается загруженный xpi-файл.
  3. Запускается процедура регистрации расширения. Ее мы трогать не будем, потому что этот процесс проходит автоматически.
Процесс загрузки файла обычно проходит нормально, у меня возникла проблема на втором этапе. Расширение обновлялось, но Firefox требовал перезагрузку, которая ничего не меняла. Оказалось, что после обновления не удалялась папка "staged-xpis". Я закрыл браузер, перенес папку в другое место, запустил браузер снова, Firefox отрапортовал, что все этапы установки расширения пройдены.

Здесь есть один тонкий момент. Надо проверить, что расширение действительно обновилось. Это делается так::
  1. Идем в папку "extensions\%extension-id%\" и ищем в ней файл "install.rdf"
  2. Идем в папку "extensions\staged-xpis\%extension-id%\" и ищем в ней xpi-файл.
  3. Распаковываем xpi-файл во временную папку. Это обычный zip-архив.
  4. В папке опять же ищем файл "install.rdf"
  5. Открываем оба файла в текстовом редакторе.
  6. В начале файла ищем строчки вида:

    <em:name>SQLite Manager</em:name>
    <em:version>0.5.6</em:version>

  7. Сравниваем значения em:version
  8. Если они одинаковые, то всё прошло хорошо, если нет, то распаковываем xpi-файл в папку "extensions\%extension-id%\" с заменой всего содержимого. Настройки там не хранятся.
  9. Папку "extensions\staged-xpis\%extension-id%\" теперь можно удалить.
  10. В корне профиля создаем пустой файл ".autoreg" и запускаем браузер. Теперь всё должно пройти как по маслу.
Если после перезапуска папка "extensions\staged-xpis" удаляется, а новое расширение в списке не появляется, хотя должно, то поступаем там.
  1. Устанавливаем новое расширение.
  2. Закрываем браузер.
  3. Переносим папку "%extension-id%"" из "extensions\staged-xpis" в "extensions".
  4. Распаковываем и удаляем xpi-файл.
  5. Удаляем папку "extensions\staged-xpis"
  6. Создаем файл ".autoreg" в корне профиля.
  7. Запускаем браузер.
Вот таким макаром всё и лечится.