Включение расширения XPCOM inFirefox

У меня очень ограниченный опыт разработки расширений Firefox (прочтите XUL School, написав пару очень простые расширения).

Теперь мне нужны некоторые функции, которые недоступны через объекты Firefox XPCOM, а именно запуск внешнего процесса и чтение его стандартного вывода. Похоже, это можно сделать с помощью Protozilla. Итак, моя проблема теперь заключается в том, чтобы включить этот внешний объект XPCOM в мой XPI, чтобы он был доступен для моего расширения.

Я должен прояснить, что моя проблема НЕ в том, как создать объект XPCOM, поскольку у меня уже есть их сборки, и если мне нужно что-то изменить, у меня уже есть их файлы сборки. Моя проблема: что мне теперь делать? Мое дерево расширений выглядит так

/
-> chrome /
-> -> контент
-> -> -> browserOverlay.js
-> -> -> ... < br> -> -> языковой стандарт
-> -> -> en-US
-> -> -> -> browserOverlay.dtd
-> - > -> -> browserOverlay.properties
-> -> -> ...
-> -> скин
-> -> -> ...
-> значения по умолчанию /
-> -> настройки /
-> -> -> my_extension.js
-> модули /
-> - > common.js
-> chrome.manifest
-> install.rdf

Куда мне включить файлы XPCOM? Нужно ли мне что-то делать, чтобы сообщить Firefox, что доступен новый объект XPCOM?


person Andrea    schedule 08.08.2010    source источник
comment
Для этого мне понадобятся вопросы, на которые будут даны ответы ...   -  person Andrea    schedule 08.08.2010


Ответы (3)


Из центра разработчиков Mozilla,

Компоненты XPCOM

Firefox поддерживает компоненты XPCOM в расширениях. Вы можете легко создавать свои собственные компоненты на JavaScript или C ++ (используя Gecko SDK).

Поместите все ваши файлы .js или .dll в каталог components/ - они автоматически регистрируются при первом запуске Firefox после установки вашего расширения.

https://developer.mozilla.org/en/building_an_extension

person Aillyn    schedule 08.08.2010

Вы можете использовать nsIProcess для запуска процесса, записи в известное место и затем прочтите из этого файла с помощью nsIFile.

person i_am_jorf    schedule 08.08.2010
comment
Да, я думал об этом. Но поскольку мне приходится делать это тысячу раз (или десятки тысяч), я бы по возможности избегал записи в файл. - person Andrea; 08.08.2010
comment
Что ж, это немного страшно. Что конкретно ты делаешь? - person i_am_jorf; 08.08.2010

Protozilla основывается на следующем: http://mozilla-enigmail.org/ipc/ вы можете найти xulrunner включены бинарные файлы, которые должны позволять вам вызывать внешние процессы.

Код был включен в базу кода Mozilla (через 10 лет см. https://bugzilla.mozilla.org/show_bug.cgi?id=68702 и http://hg.mozilla.org/ipccode/), но, насколько я могу судить, он недоступен в Firefox 4.

person Community    schedule 30.05.2011