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

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№120-02-2009 15:38:54

mojo
Участник
 
Группа: Members
Зарегистрирован: 15-03-2006
Сообщений: 29
UA: Firefox 3.0

XPCOM + arbitrary DLL in XPI

Здравствуйте,

Подскажите, как в XPI добавить XPCOM и DLL, которую использует этот XPCOM, чтобы при установке зарегистрировался XPCOM, а DLL стала доступна XPCOM'у.

Спасибо.

Отсутствует

 

№220-02-2009 16:53:33

Elexander
Участник
 
Группа: Members
Зарегистрирован: 06-10-2008
Сообщений: 54
UA: Opera 9.6

Re: XPCOM + arbitrary DLL in XPI

Наряду с папкой chrome нужно создать папку components (в корне xpi-архива). А затем в нее положить саму xpcom-компоненту (.dll, .so) и (если она еще реализует пользовательские интерфейсы, то и библиотеку типов (файл .xpt)). В таком варианте компонента будет автоматически зарегестрирована при установке расширения.

Отсутствует

 

№324-02-2009 16:49:32

mojo
Участник
 
Группа: Members
Зарегистрирован: 15-03-2006
Сообщений: 29
UA: Firefox 3.0

Re: XPCOM + arbitrary DLL in XPI

ок, сам компонент регистрируется и работает.
что мне необходимо сделать, чтобы third party dll, который в компоненте подгружается через LoadLibrary() оказался в том месте, в котором его найдет ff3?
в profiles/xxx/extensions/zzz/components/ он его не находит.

спасибо.

Отсутствует

 

№425-02-2009 11:21:03

Elexander
Участник
 
Группа: Members
Зарегистрирован: 06-10-2008
Сообщений: 54
UA: Opera 9.6

Re: XPCOM + arbitrary DLL in XPI

Есть два варианта:

1) Указать абсолютный путь. Лучше всего грузить с помощью LoadLibraryEx с флагом LOAD_WITH_ALTERED_SEARCH_PATH. В таком случае не будет проблем, если сторонняя библиотека будет статически связана еще с какими при условии, что все они находятся в одной директории. Но функция доступна начиная с Wndows 2000.

2) Разместить стороннюю библиотеку по одному из путей доступных системе. Для Windows XP SP2 это:
  1. Директория в которой находиться приложение (firefox.exe).
  2. Текущая директория (можно переустановить с помощью SetCurrentDirectory).
  3. Системная директория.
  4. 16-битная системная директория.
  5. Директория Windows.
  6. Директории указанные в системной переменной PATH.

Firefox, очевидно не использует LoadLibraryEx с флагом LOAD_WITH_ALTERED_SEARCH_PATH для загрузки XPCOM-компонент, поэтому и не может найти dll в components профиля.

Отсутствует

 

№527-02-2009 16:25:36

mojo
Участник
 
Группа: Members
Зарегистрирован: 15-03-2006
Сообщений: 29
UA: Firefox 3.0

Re: XPCOM + arbitrary DLL in XPI

да. уже сделал с помощью абсолютного путя, доставаемого через IExtensionManager и IInstallLocation.

Отсутствует

 

Board footer

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