Необходимо встроить движок Gecko в приложение под .NET
В исходниках в папке extensions лежит некий manticore
Manticore Browser
Manticore is a web browser embedding Gecko and Trident (IE) using the IWebBrowser2 interface exposed by each layout engine's ActiveX wrapper. The front end is written in C# using
the .NET framework.
Закрой кран
Включи свет ©
Fire! Kill IE is your desire | NULL | NULL
Отсутствует
Так, посмотрел manticore - если честно весьма корявая апликация, котороя к томуже не валидно завершается, ну да ладно. Никак не могу найти установку параметров Proxy! Как работет с ними (proxy-параметрами) mozctrlx.dll?
Отредактировано softmax (12-05-2006 14:47:46)
Отсутствует
Кстати сделал сравнение ActiveX компонент IE и Mozilla, в целом резулльтаты сопоставимые, как по памяти так и по скорости работы. в среднем мозилла еслт больше на 2-4 Мб.
Отсутствует
Да, еще вопрос, FF собирается со статической линковкой или с динамической (с динамической большинство исполняемых файлов в каталоге bin имеют размер 64k)?
Отсутствует
Я сейчас подымаю DotNetEmbed (забытый Wrapper внутри mozill-овских исходников). Под Net 1.1. пример удалось оживить, но вот под 2.0 DotNetEmbed не компиляется корректно. Т.е. на выходе dll есть, но подключить её в .NET проекты невозможно. пишет FileNotFound. Естественно референс на Dll прописан.
По поводу компиляции - в соответсвии с рекомендациями людей умеющих работать с cygwin - я всё компилял в нём.
Masm32, Perl, VC++ Toolkit - ничего из этого не надо. Perl берётся из cigwyn (не забыть поставить соотв. package), masm32 есть в VS2005. Tollkit не нужен.
сперва запускаем ./configure ... с параметрами (вот ту п.3 они описаны: http://developer.mozilla.org/en/docs/VC8_Build_Instructions#Visual_Studio_2005
./configure --disable-activex --disable-activex-scripting --disable-xpconnect --disable-accessibility --enable-application=suite (или browser - если вся mozilla не нужна)
), потом make -f makefile.
Ждём момента когда завалиться xpidl.exe. После этого находим в глубинах mozilla xpidl.exe.manifest - и копируем его в dist (откуда этот dist и вызывается). В том же каталоге присутвуют exe и dll - для них также находим manifest ....
Вот вообщем-то если кратко, постараюсь через пару дней выложить подробную инструкцию....
Отредактировано softmax (06-06-2006 20:08:04)
Отсутствует
Сходил посмотрел что там по ссылке... во 2м пункте указано что нужна Platform SDK.... вы ее устанавливали? По-идее, при наличии полной версии VisualStudio 2005 (не Express), необходимости в PSDK быть не должно (точно так же как и не должно быть необходимости в VC++ 2003 Toolkit при наличии нормальной VS2003 и правильно прописанных путей и переменных окружения).
Отредактировано T-Rex (06-06-2006 20:13:50)
Отсутствует
Всё!!! DotNetEmbed под NET 2.0 покорён! Удалось получить 100% рабочий код.
Надеюсь, у вас найдется время для написания небольшой статейки по этому поводу
Отсутствует
Какой небольшой! Писать подробную статья в наш Wiki. Со всеми заковыками
Black holes were created when the God divided by zero.
Отсутствует
Итак, небольшое исследование процесса компиляци FireFox. И описание того как мне удалось скомпилировать cей непокорный тул при помощи MS Visual Studio 2005
Сразу скажу что опыта именно такой работы у меня практически нет. C cygwin(linux) не работал, с командной строкой не то что не дружу - просто стараюсь обходиться без неё. Посему пользовался помощью знащих людей.
Итак для компиляции firefox под 2005-ую студию вам необходимо следующее:
1. Исходники firefox (Я использовал вот этот firefox-1.5.0.3-source.tar.bz2)
3. Библиотеки moztools (vc8-moztools)
2. Установленная MSVS 2005 есс-но с поддержкой С++
3. Установленный Platform SDK. (Я использовал Windows XP SP2 SDK )
4. Установленный Cygwin. Список packages, которые нужно устанавливать (взято отсюда http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites):
ash -- UNIX-like command line interpreter shell (Base category)
coreutils -- GNU core utilities (includes fileutils, install, sh-utils, and textutils) (Base category)
cvs -- concurrent versions system (Devel category)
diffutils -- file comparison utility (Base category)
findutils (Base category)
gawk -- pattern matching language (Base and Interpretors categories)
grep -- text search tool (Base category)
libiconv -- character set conversion (Devel category)
make -- dependency analyzer for software builds (Devel category)
patchutils -- a small collection of programs that operate on patch files (Devel category)
perl -- a scripting language used to control parts of the build (Interpreters category)
sed -- a search and replace language (Base category)
tar -- file archiving program (Base category)
X11 -- X Window tools (Install whole X11 category)
unzip -- zip file extraction (Archive category)
upx -- the Ultimate Packer for eXecutables (Utils category)
zip -- zip file creation (Archive category)
5. Главное
Как я понял проблема компиляции заключается в том чтобы в правильной последовательности определить пути к
приложениям, библиотекам и h-файлам. Причём дело осложняется ещё и тем что часть файлов обрабатывается приложениями cygwin и требуют описание путей в стиле unix, другая часть требует описания в стиле DOS. Но главное все переменные я устанавливал внутри cygwin-shell-а. Грубо говоря писал bat-файл в стиле unix. Установку производил через .batch_profile который находиться в cygwin\home\<имя_пользователя>\.batch_profile. Если ваш компутер - компутер домена, то скорее всего ЭТОЙ папки у ВАС не будет. Вам потребуется создать её самостоятельно (при помощи того же cygwin), или же определить переменные через другой файл (sh-скрипт например). Кроме того знающие люди ооочень рекомендовали использовать ТОЛЬКО КОРОТКИЕ ИМЕНА при установке переменных окружения. Я этому совету следовал. Хотя скоре всего проблемы могут возникнуть из-за пробелов в именах папок, а не из-за длины имени.
Теперь непосредственно скрипт
# C:\MVC – Папка с установленной MS Visual Studio 2005
# C:\PSDK – Папка с Platform SDK
# C:\projects\vc8-moztools – Библиотеки moztools
export MOZ_TOOLS=`cygpath -a -u С:/projects/vc8-mo~1`
export PATH=/cygdrive/c/mvc/Common7/IDE:/cygdrive/c/mvc/Common7/Tools/Bin:/cygdrive/c/mvc/VC/bin:$PATH
export WIN32_REDIST_DIR="c:\\mvc\\VC\\redist\\x86\\Microsoft.VC80.CRT"
export PATH=$MOZ_TOOLS/bin:$PATH
export PATH=$WIN32_REDIST_DIR:$PATH
export NO_MFC=1
export MOZ_INSTALLER_USE_7ZIP=1
export INCLUDE="c:\\mvc\\vc\\include;c:\\psdk\\include;$INCLUDE"
export LIB="c:\\mvc\\vc\\lib;c:\\PSDK\\lib;$LIB"
6. После того как переменные установленны, в той же сессии cygwin, идём в папку с ff и выполняем:
./configure --disable-activex --disable-activex-scripting --disable-xpconnect-idispatch --disable-accessibility --enable-application=browser (suite, и т.д. в зависимости о того что нужно скомпилять)
7. Если configure отработало нормально запускаем make: make -f makefile.
8. В процессе компиляции получаем косяк с xpidl.exe (он просто вылетает). Вылетает он из-за отсутствия manifest-файла. Находим его в глубинах ff и кидаем его в dist\bin. Настоятельно рекомендую точно также скопировать .manifest файлы для всех остальных exe и dll файлов которые вы найдёте в dist\bin
9. Всё дальше косяков быть не должно. За исключением отсутвия manifest-файла для самого firefox.exe. Можно создать его вручную (по аналогии с xpidl.exe).
Вот вообщем-то и весь алгоритм.
Если кто-нить объяснит как заставить сборщик ff обрабатывать правильно manifest файлы - буду благодарен. А уж если кто-нить напишет DOS-bat файл для компиляции без запуска cygwin явно - будет вообще здорово!
Жду коментариев!
Отредактировано softmax (08-06-2006 15:31:46)
Отсутствует
X11 -- X Window tools (Install whole X11 category)
Ухъ... как же не хочется ЭТО качать... попробую без него, может получится
Попробую в ближайшее время скомпилить... может получится как-нибудь упростить процесс сборки. Уж очень не хочется в cygwin ковыряться... я вобще его воспринимаю как "необходимое зло" ибо лишние зависимости при сборке это очень и очень плохо. В этом плане меня порадовали исходники Miranda IM - там просто проект для VS, не требующий никакого дополнительного ПО.
Отсутствует
T-Rex
Скорее всего получиться ... Лично я к тому что приведено в ваших доках (cygwin packages). добавил помоему только perl и помоему всё. Список я привёл для ГАРАНТИРОВАННОЙ работоспособности cygwin
Отсутствует
Народ, есть ли у кого-нить представление как "чистый" Gecko - engine работает с Proxy?
Часть настроек я могу установить в defaults\profile\pref.js (на сколько я могу судить), но вот как прописать/передать пароль, который запрашивает сервер при аутентификации?
Отсутствует
Народ, есть ли у кого-нить представление как "чистый" Gecko - engine работает с Proxy?
Часть настроек я могу установить в defaults\profile\pref.js (на сколько я могу судить), но вот как прописать/передать пароль, который запрашивает сервер при аутентификации?
Реализуй nsIPromptService...
И когда будет запрошен пароль для входа - выйдет окошко (которое будет реализовано вами) для ввода пароля и логина.
Отсутствует
Попробую..... Спасибо!
А без окошечка никак? Ну типа прописали где-нить и горя не знаем....
Подругому... хм.. ну у мозилы ведь есть пассворд менеджер... если сразу туда вписать.. а так больше не знаю..
Можно конечно и без окон... просто в функцию (которой нужно дать пароль) приходит параметр типа ссылка на ссылку... туда и пишем пароль который нужен. А интерфейс придется реализовать по любэ!
Отсутствует