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

И снова про регистрацию

Метки: [без меток]
2008-10-31 17:27:01 [обр] Андрей[досье]
Просьба сильно не пинать, смотрел существующие темы и ответы, но решения проблемы не обнаружил, может быть не хватило внимания или терпения. Итак, имеется экстеншн в виде Яваскрипта и длл(с соответствующим XPT файлом). В своем инсталляторе я регистрирую длл обычным способом (помещаю в Components, удаляю compreg и xpti) - и все работает. Но теперь поставлена задача использовать продвинутый метод инсталляции через XPI-архив при помощи RDF. Ок, смотрим, что делает ФФ: копирует содержимое архива в фолдер с ГУИДом и запускает overlay.js как ему указано в манифесте. Но длл остается незарегистрированной и естественно ничего не работает. Пробовал помещать длл и XPT файл в разные фолдеры (dll, library, content) - не помогает, ФФ их автоматически не цепляет. В ответах было предложено использовать registerSelf, но в этом методе неясно, как указать, что зарегистрировать нужно именно длл, как указать путь на нее и путь на XPT. В общем, закрадывается смутное подозрение, что нужно по-прежнему вручную копировать длл и XPT, удалять compreg и xpti, но я гоню его прочь - в продвинутом методе инсталляции все должно делаться легко и на лету. Кто знает, как это сделать - киньте пожалуйста ссылку или пример, заранее спасибо.
спустя 1 час 13 минут [обр] Kirill(0/3)[досье]
dll и xpt надо положить в папку components расширения и не паковать ее в jar. все должно работать. compreg и xpti удалять не требуется, они пересоберуться при установке расширения.
спустя 18 минут [обр] Андрей[досье]
А я и не паковал :). То есть все-таки надо вручную копировать? Причем надо это делать только один раз и надо скопировать до того, как compreg и xpti пересоберутся. Вау, как все непросто..
спустя 1 час 58 минут [обр] Kirill(0/3)[досье]
У меня в xpi расширения каталог components, в котором лежат dll + xpt + js - при установке расширения он самоcтоятельно копируется в папку с guid расширения и все подцепляется без проблем уже в новой версии (если была старая). Но это под xulrunner. В принципе под firefox отличий нет. Возможно, какие то проблемы с указанием платформы в install.rdf/chrome.manifest ?
спустя 30 минут [обр] Андрей[досье]
Возможно. Раз Вы утверждаете, что само подцепляется, это внушает большой оптимизм, попробую этого добиться.
спустя 8 минут [обр] Андрей[досье]
Ага, помогло, огромное спасибо!
Я был близок, когда пробовал дефолтные имена фолдеров типа dll и library, но вот попробовать сомponents не сообразил.
спустя 2 месяца 28 дней [обр] Mustitz[досье]

У меня возникает схожая проблема. Помещаю xpt и dll-файл в каталог components моего xpi-файла. Но XPCOM компонент не регистрируется и не отображается, например, расширением XPCOM Viewer. Также при попытке его создания получаю сообщение
TypeError: Components.classes['@my.com/.....'] is undefined

Пытался разобраться в чем дело, но больших успехов не достиг. Просмотрел файлы xpti.dat и compreg.dat. В xpti.dat данные о моем компоненте упоминаются в следующих разделах:

[Directories,7]
5,D:\...\FFPlugin\components

[Files,2]
1,IDfXpCom.xpt,5,151,1233155328468

[Interfaces,1366]
930,IMyInerface,{293799ea-f9b4-4fad-ac72-f3e81b4619d3},1,-1,1

а вот в файле compreg.dat упорминаний о моем XPCOM компоненте я не нашел. Полагаю, что ошибка прячется где-то внутри DLL, (скорее всего какая-нить дурацкая опечатка), но как ее определить и локализовать? На что обратить внимание? Что еще раз проверить?

Смотрел IDA, библиотека DLL выглядит достаточно нормально, экспортирует только функцию NSGetModule, которая запихивает в стек два параметра и вызывает функцию со страшной мнемоникой из xpcom.dll. Как бы узнать, что происходит?

Powered by POEM™ Engine Copyright © 2002-2005