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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№126-05-2010 23:25:41

Zeiss
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 28-01-2010
Сообщений: 7
UA: IE 7.0

Обновление расширения Firefox: неопределенная ошибка [SOLVED]

Добрый день!

Мы создали расширение для нашего сайта. Оно устанавливается и работает нормально.
Однако расширение не может быть обновлено в Firefox (как в 3.5.7, так и в 3.6.3) - в диалоговом окне Add-ons появляется сообщение: "Произошла ошибка при попытке поиска обновлений..." и никаких сообщений в консоли ошибок.
Для того чтобы создать пакет обновления, я использую сценарий, описанный здесь (использование HTTPS, подписка RDF файлов с помощью McCoy, добавление хеша XPI файла в update.rdf).

Вот мой install.rdf (содержащийся в файле xpi):

Выделить код

Код:

<?xml version="1.0"?>
<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
   xmlns:NC="http://home.netscape.com/NC-rdf#"
   xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:mozilla:install-manifest" 
   em:id="extension.id" 
   em:type="2" 
   em:version="1.7" 
   em:name="company ECM Extension" 
   em:description="The ECM extension provides integration tools for working with company services." 
   em:creator="company Europe AB" 
   em:homepageURL="http://www.company.com" 
   em:iconURL="chrome://ecmext/content/ecmext.png" 
   em:aboutURL="chrome://ecmext/content/about.xul"

   em:updateURL="https://localhost/distrib/update.rdf" 
   em:updateKey="MIGfMA0GCSqGSIb3DQEBAQUAA4G.....">

    <em:targetApplication RDF:resource="urn:mozilla:firefox" />
  </RDF:Description>
  <RDF:Description RDF:about="urn:mozilla:firefox" em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" em:minVersion="3.5" em:maxVersion="3.6.3" />
</RDF:RDF>

Вот update.rdf:

Выделить код

Код:

<?xml version="1.0"?>
<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Seq RDF:about="rdf:#$Vi19E3">
    <RDF:li RDF:resource="urn:company:ecmext"/>
  </RDF:Seq>
  <RDF:Description RDF:about="urn:mozilla:firefox"
                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
                   em:minVersion="3.5"
                   em:maxVersion="3.6.3"

                   em:updateLink="https://localhost/distrib/ecmext_1_7.xpi"
                   em:updateHash="sha256:7e6139b71decd5c6f8f6ee4e58c581f184ecbfd178436da2232baa79f4fe23fd" />

  <RDF:Description RDF:about="urn:company:ecmext"
                   em:version="1.7">
    <em:targetApplication RDF:resource="urn:mozilla:firefox"/>
  </RDF:Description>
  <RDF:Description RDF:about="urn:mozilla:extension:extension.id"

                   em:signature="MIGTMA0GCSqGSIb3DQEBDQUAA4GBAFL0pBKuHY3oLY84qd.....">

    <em:updates RDF:resource="rdf:#$Vi19E3"/>
  </RDF:Description>
</RDF:RDF>

(длинные значения BASE64 усечены)

Сообщение выскакивает мгновенно, сразу после запроса к update.rdf. Запрос к файлу ecmext_1_7.xpi не выполняется.
Таким образом, проблема либо в файле update.rdf ИЛИ в ответе сервера. Не могу придумать других причин!

Вот заголовки ответа сервера:

Выделить код

Код:

HTTP/1.1 200 OK
Cache-Control: public, max-age=7776000
Content-Length: 1238
Content-Type: text/xml
Expires: Tue, 24 Aug 2010 18:04:49 GMT
Last-Modified: Wed, 26 May 2010 17:38:42 GMT
Accept-Ranges: none
Etag: "509423464d6"
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-UA-Compatible: IE=EmulateIE7
Date: Wed, 26 May 2010 18:04:49 GMT

Вот для сравнения ответ addons.mozilla.org:

Выделить код

Код:

HTTP/1.1 200 OK
Server: Apache
X-Backend-Server: pp-app-amo01
Cache-Control: public, max-age=3600
Content-Type: text/xml
Date: Wed, 26 May 2010 17:20:38 GMT
Keep-Alive: timeout=5, max=994
Expires: Wed, 26 May 2010 18:20:38 GMT
Accept-Ranges: bytes
Via: Moz-Cache-pp-zlb01
Last-Modified: Wed, 26 May 2010 17:20:38 GMT
X-Powered-By: PHP/5.2.9
Content-Length: 1063
Connection: close
X-Cache-Info: cached

Существенной разницы не нахожу.

Кроме того, возможно ли, что Firefox выбрасывает ошибку, когда находит self-signed SSL certificate сервера, установленный на моем рабочем компьютере? Если возможно (в чем я сомневаюсь), как же тогда вести разработку, если не покупать "правильные" сертификаты?

Короче, куда-то я не туда копаю... Пожалуйста, ткните в причину и завершите мое сегодняшнее безумие!

Спасибо ;)

Отредактировано Zeiss (27-05-2010 15:17:55)

Отсутствует

 

№226-05-2010 23:46:15

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771
UA: Minefield 3.7

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

Zeiss
Какой-то странный update.rdf. См. примеры в https://developer.mozilla.org/en/Extens … RDF_Format
Что касается отладки, то:

The update mechanism logs information to the console, and display various information which can help you to find problem. To enable the log:

   1. Set the value of extensions.logging.enabled to true (using URL about:config)
   2. Run Firefox from command with option -console

If you encounter problems, search the output in console for your extension id, and see if failures were logged.

Добавлено 26-05-2010 23:51:21

em:updateLink="https://localhost/distrib/ecmext_1_7.xpi"
                   em:updateHash="sha256:7e6139b71decd5c6f8f6ee4e58c581f184ecbfd17

Насколько я понимаю, нужно либо использовать https в updateLink, либо updateHash. И то и то - не нужно. Вся суть updateHash - дешёвая замена для https.


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№327-05-2010 15:17:22

Zeiss
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 28-01-2010
Сообщений: 7
UA: IE 7.0

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

Unghost пишет

Да, оно! Спасибо за исчерпывающий первоисточник!
Использовал хеш+https "для верочки" :)
На продакшн сервере сертификат правильный, там всё ОК, а на тестовом и dev машинах - self-signed, которые мозиллой режектятся.

Unghost пишет

Какой-то странный update.rdf

Его так переорганизовал МакКой.

Отсутствует

 

№427-05-2010 15:53:43

banbot
Moderator
 
Группа: Moderators
Зарегистрирован: 23-12-2007
Сообщений: 5293
UA: Minefield 3.7

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

Zeiss

а на тестовом и dev машинах - self-signed, которые мозиллой режектятся.

Ну вроде можно добавить свой самоподписанный сертификат в базу сертификатов Mozilla при помощи Certificate Database Tool.


Do you feel lucky, punk?

Отсутствует

 

№527-05-2010 20:39:56

Zeiss
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 28-01-2010
Сообщений: 7
UA: IE 7.0

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

banbot пишет

Ну вроде можно добавить свой самоподписанный сертификат в базу сертификатов Mozilla при помощи Certificate Database Tool.

А разве сертификаты туда не добавляются через диалог, когда нажимаешь Add Exception на странице "This Connection is Untrusted"?
Энивей, решено путём отказа от обновлений по https.

Отсутствует

 

№627-05-2010 20:45:15

banbot
Moderator
 
Группа: Moderators
Зарегистрирован: 23-12-2007
Сообщений: 5293
UA: Minefield 3.7

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

Zeiss

А разве сертификаты туда не добавляются через диалог, когда нажимаешь Add Exception на странице "This Connection is Untrusted"?

Добавляются, в профиль пользователя. Но иногда надо развернуть дистрибутив с уже добавленными сертификатами, чтобы юзеры не звонили с глупыми вопросами об вылезающих страницах с непонятным и пугающим текстом.


Do you feel lucky, punk?

Отсутствует

 

№702-06-2010 13:36:17

Zeiss
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 28-01-2010
Сообщений: 7
UA: IE 7.0

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

banbot пишет

иногда надо развернуть дистрибутив с уже добавленными сертификатами

Спасибо за ценную информацию!
У нас, правда, не корпоративные пользователи, и самописный сертификат используется только для разработки.

Отсутствует

 

№804-06-2011 14:02:06

futureFAvorit32
Участник
 
Группа: Members
Зарегистрирован: 04-06-2011
Сообщений: 5
UA: Opera 11.1

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

У меня тоже нихочет обновляться, самоподписаный сертификат на локальном сервере. mime-типы выставил. добавил сертификат в исключение.
Fiddler'ом перехватывал update.rdf'ы других расширений, и делал по их аналогии... Лиса-Алиса молчит как партизан и не обновляет, update.rdf загружает, но ошибок никаких не выдаёт. :angry: Может точно, что дело в HTTP-заголовках?
install.rdf:

Выделить код

Код:

<?xml version="1.0" encoding="UTF-8"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
  <Description about="urn:mozilla:install-manifest">
    <em:id>aagent@mozilla.org</em:id>
    <em:version>1.1</em:version>
    <em:type>2</em:type>
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>3.0a1</em:minVersion>
        <em:maxVersion>7.0a1</em:maxVersion>
      </Description>
    </em:targetApplication>
    <em:name>AutoCrack Agent</em:name>
    <em:bootstrap>false</em:bootstrap>
    <em:unpack>false</em:unpack>
    <em:creator>Eugen Li</em:creator>
    <em:updateURL>https://money.local/aca/update.rdf</em:updateURL>
    <em:optionsURL>chrome://autocrackagent/content/form_settings.xul</em:optionsURL>
  </Description>
</RDF>

update.rdf:

Выделить код

Код:

<?xml version="1.0"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
  <RDF:Description about="urn:mozilla:extension:aagent@mozilla.org">
    <em:updates>
      <RDF:Seq>
        <RDF:li resource="urn:mozilla:extension:aagent@mozilla.org:1.2" />
      </RDF:Seq>
    </em:updates>
  </RDF:Description>
  <RDF:Description about="urn:mozilla:extension:aagent@mozilla.org:1.2">
    <em:version>1.2</em:version>
    <em:targetApplication>
      <RDF:Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>3.0a1</em:minVersion>
        <em:maxVersion>7.0a1</em:maxVersion>
        <em:updateLink>http://money.local/aca/aca.xpi</em:updateLink>
    <em:updateInfoURL>https://money.local/aca/</em:updateInfoURL>
        <em:updateHash>sha256:1c47d57fecaa4ef34351eaabbf04172950ad8e41328684bdb351c1af1c41331c</em:updateHash>
      </RDF:Description>
    </em:targetApplication>
  </RDF:Description>
</RDF:RDF>

Отредактировано futureFAvorit32 (04-06-2011 14:03:28)


Если бы у людей были крылья, они бы... улетали на зиму в тёплые края.

Отсутствует

 

№904-06-2011 17:53:10

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

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

futureFAvorit32
Попробуйте сверить с тем, что под спойлером ниже - это install.rdf и update.rdf от абсолютно стабильно апдейтящегося расширения. Причем нигде не используется https.

скрытый текст
Расширение, версия 0.0:

Выделить код

Код:

<?xml version="1.0"?>
<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:mozilla:install-manifest"
                   em:id="{2ff1a7f6-ad47-4579-849a-89a90a91e9a9}"
                   em:type="2"
                   em:name="BarPrefs"
                   em:version="0.0"
                   em:creator="%20"
                   em:description="subj"
                   em:updateURL="http://dl.dropbox.com/u/14131025/testing/update.rdf"
                   em:updateKey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBi........................">
    <em:targetApplication RDF:resource="rdf:#$6ztS.1"/>
  </RDF:Description>
  <RDF:Description RDF:about="rdf:#$6ztS.1"
                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
                   em:minVersion="4.0b12"
                   em:maxVersion="5.*" />
</RDF:RDF>

Расширение, версия 1.0:

Выделить код

Код:

<?xml version="1.0"?>
<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:mozilla:install-manifest"
                   em:id="{2ff1a7f6-ad47-4579-849a-89a90a91e9a9}"
                   em:type="2"
                   em:name="BarPrefs"
                   em:version="0.1"
                   em:creator="%20"
                   em:description="subj"
                   em:updateURL="http://dl.dropbox.com/u/14131025/testing/update.rdf"
                   em:updateKey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ.....................................................">
    <em:targetApplication RDF:resource="rdf:#$6ztS.1"/>
  </RDF:Description>
  <RDF:Description RDF:about="rdf:#$6ztS.1"
                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
                   em:minVersion="4.0b12"
                   em:maxVersion="5.*" />
</RDF:RDF>

update.rdf для апдейта версии 0.0 на 1.0:

Выделить код

Код:

<?xml version="1.0"?>
<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="rdf:#$Wfjs52"
                   em:version="1.0">
    <em:targetApplication RDF:resource="rdf:#$Zfjs52"/>
  </RDF:Description>
  <RDF:Description RDF:about="rdf:#$Zfjs52"
                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
                   em:minVersion="4.0b8pre"
                   em:maxVersion="5.*"
                   em:updateLink="http://dl.dropbox.com/u/14131025/testing/barprefs_new.xpi"
                   em:updateHash="sha1:ff5648cfe1de270cf935d54a4363fc3fd720c19e" />
  <RDF:Seq RDF:about="rdf:#$Vfjs52">
    <RDF:li RDF:resource="rdf:#$Wfjs52"/>
  </RDF:Seq>
  <RDF:Description RDF:about="urn:mozilla:extension:{2ff1a7f6-ad47-4579-849a-89a90a91e9a9}"
                   em:signature="MIGTMA0GCSqGSIb3DQEBDQUAA4...........................................">
    <em:updates RDF:resource="rdf:#$Vfjs52"/>
  </RDF:Description>
</RDF:RDF>


Расширение версии 0.0 находится здесь: http://dl.dropbox.com/u/14131025/testin … fs_old.xpi; версия 1.0 - на том же ресурсе. Расширение тестовое, и не содержит ничего, кроме настроек. Делалось все с помощью McCoy.
Ну, и загляните вот сюда: https://developer.mozilla.org/en/Extens … patibility - мало ли, вдруг найдёте то, что упустили или забыли.

Отсутствует

 

№1006-06-2011 20:31:10

futureFAvorit32
Участник
 
Группа: Members
Зарегистрирован: 04-06-2011
Сообщений: 5
UA: Opera 11.1

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

hydrolizer пишет

Расширение версии 0.0 находится здесь: http://dl.dropbox.com/u/14131025/testin … fs_old.xpi; версия 1.0 - на том же ресурсе. Расширение тестовое, и не содержит ничего, кроме настроек. Делалось все с помощью McCoy.

Да, с McCoy всё пашет.

hydrolizer пишет

Ну, и загляните вот сюда: https://developer.mozilla.org/en/Extens … patibility - мало ли, вдруг найдёте то, что упустили или забыли.

В таком формате и в таком https://developer.mozilla.org/en/install_manifests с ключами McCoy тоже всё работает.

Итог исследований обновления показал:
HTTP+Hash - не работает.
HTTPS+Hash - не работает.
HTTP+McCoy+Hash - работает.

ЗЫ: install.rdf должен иметь в em:updateURL HTTPS-ссылку или иметь ключи созаны McCoy, иначе расширение не ставиться (на Firefox 4.*).


Если бы у людей были крылья, они бы... улетали на зиму в тёплые края.

Отсутствует

 

№1107-06-2011 03:30:33

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

Re: Обновление расширения Firefox: неопределенная ошибка [SOLVED]

futureFAvorit32 пишет

HTTP+McCoy+Hash - работает

По данной выше ссылке написано же:

Gecko 1.9 has added additional requirements designed to protect users from man-in-the-middle attacks and the like during add-on updates. In the install.rdf of the already installed add-on updateURL must be specified in one of the following ways:

    The updateURL uses https, or there is no updateURL at all (which defaults to addons.mozilla.org which is https)
    The updateURL uses http and the updateKey entry is specified which will be used to verify the data in the update manifest.

When you specify an updateKey in the install.rdf, you must include a digital signature in the update manifest or the information will be rejected.

Вот этот updateKey с его digital signature и включается в манифесты с помощью McCoy. А сама эта сигнатура является base-64 encoded открытой частью RSA-ключа.
Что же до хэша, то это просто для контроля целостности файла слитого обновления.

Отсутствует

 

Board footer

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