Привет всем.

Собственно проблема в том, что не знаю с чего начать. Насколько я понимаю, традиционная установка с помощью install.js уже не приветствуется или даже порой не будет работать, а нужно использовать install.rdf, и тем не менее большинство расширений (те, которыми пользуюсь я, и которые пробовал ставить) испльзуют именно такой метод.

Направьте, пожалуйста, на путь истинный ... желательно со ссылками, да и к тому же чтобы для FF2 и для FF3 работало.

Заранее спасибо.

В xpi-архиве должен быть каталог components, в нём - xpt-файл компонента и файл реализации - js, dll, so.

Anton, и все? так просто?

oldfriend
Бинарные я не делал, для js всё именно так. Уверен, что для бинарных всё точно так же.

p.s. Вот, в ColorZilla, например, в components: ColorZilla.dll, ColorZilla.dll.linux, ColorZilla.dll.mac, ColorZilla.xpt
в google toolbar: bootstrap.js, googletoolbar.dll, googletoolbar.xpt, metrics.dll, metrics.xpt
в pagesaver посложнее: кроме components есть ещё platform/.../components и там (в platform/...) xpt-файлов нет - возможно, компоненты реализуют встроенные интерфейсы, для которых xpt не нужен (для js-компонент, по крайней мере).

Все бы хорошо, да вот только как заставить мой XPCOM компонент вызываться из той папки, куда его установили?

Дело в том, что все примеры создания XPCOM компонент оперируют с папкой ~\firefox\components. Да и в самом С++ коде я пишу:

Выделить код

Код:

#define TEST_APP "@mydomain.com/XPCOMSample/TestApp;1"

а потом из javascript'a вызываю:

Выделить код

Код:

const cid = "@mydomain.com/XPCOMSample/TestApp;1";
. . .

Как же его правильно вызывать и моего профайла в браузере? Что писать в С++ и что в js?

Неужели никто о таком не слышал никогда, разработчики? Или форумы совсем бесполезны? Или это просто лето?..

Неужели никто о таком не слышал никогда, разработчики? Или форумы совсем бесполезны? Или это просто лето?..

с XPCOM работает очень мало разработчиков
почему бы не посмотреть как это устроено в любом другом расширении с XPCOM?

с XPCOM работает очень мало разработчиков
почему бы не посмотреть как это устроено в любом другом расширении с XPCOM?

именно этим и занимаюсь уже последние 2 дня ...

А все оказалось проще пареной репы.

Главное, чтобы в С++ #define MY_APP_CONTRACTID

"@mozilla.org/MyApp;1"

и в javascript const cid =

"@mozilla.org/MyApp;1"

;
были одинаковыми! ... ну это и ежу понятно. Сам не знаю почему так долго возился ... просто поместил dll и xpt файлы в папку components, которая в одной папке с chrome лежит и все:
  my_extension
  |_chrome
  |_components

Всем спасибо за помощь. Жаль слова Anton'a до меня поздно долетели.