>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >XPCOM + arbitrary DLL in XPI http://forum.mozilla-russia.org/viewtopic.php?id=31492 |
mojo > 20-02-2009 15:38:54 |
Здравствуйте, Подскажите, как в XPI добавить XPCOM и DLL, которую использует этот XPCOM, чтобы при установке зарегистрировался XPCOM, а DLL стала доступна XPCOM'у. Спасибо. |
Elexander > 20-02-2009 16:53:33 |
Наряду с папкой chrome нужно создать папку components (в корне xpi-архива). А затем в нее положить саму xpcom-компоненту (.dll, .so) и (если она еще реализует пользовательские интерфейсы, то и библиотеку типов (файл .xpt)). В таком варианте компонента будет автоматически зарегестрирована при установке расширения. |
mojo > 24-02-2009 16:49:32 |
ок, сам компонент регистрируется и работает. спасибо. |
Elexander > 25-02-2009 11:21:03 |
Есть два варианта: 1) Указать абсолютный путь. Лучше всего грузить с помощью LoadLibraryEx с флагом LOAD_WITH_ALTERED_SEARCH_PATH. В таком случае не будет проблем, если сторонняя библиотека будет статически связана еще с какими при условии, что все они находятся в одной директории. Но функция доступна начиная с Wndows 2000. 2) Разместить стороннюю библиотеку по одному из путей доступных системе. Для Windows XP SP2 это: Firefox, очевидно не использует LoadLibraryEx с флагом LOAD_WITH_ALTERED_SEARCH_PATH для загрузки XPCOM-компонент, поэтому и не может найти dll в components профиля. |
mojo > 27-02-2009 16:25:36 |
да. уже сделал с помощью абсолютного путя, доставаемого через IExtensionManager и IInstallLocation. |