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

Нужна помощь по встраиванию Gecko-броузера в приложение на C++

Метки: [без меток]
2006-01-10 01:00:51 [обр] T-Rex[досье]

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

Возникла необходимость в программу на С++ встроить Gecko-броузер вместо IE.
Читал мануал на mozilla.org - видимо он очень устарел т.к. в дистрибутиве Gecko SDK есть не все файлы, указанные в мануале.

Может кто знает где найти примеры встраивания Mozilla'овского броузера в приложение. Или мануал корректный. Буду рад даже пошаговому текстуальному описанию, в общем, любой помощи.

Gecko SDK впервые увидел вчера, было бы больше опыта - не спрашивал бы.
Скачал wxEmbed-пример, но там, видимо, чего-то нехватает... думаю в ближайшие пару дней разберусь, чего именно.
Плюс ко всему мне нужно чтобы программа не подходила под описание derivative work, т.е. не основывалась на исходном коде Mozilla (очень желательно), а только на SDK, а пример wxEmbed требует наличие исходников Mozilla.

Заранее всем спасибо.

спустя 5 минут [обр] Владимир Палант(434/4445)[досье]
Боюсь, что с этим здесь ни у кого нет опыта. Возможно так будет проще: Mozilla ActiveX Control
спустя 4 минуты [обр] T-Rex[досье]
Жаль, но ActiveX - неприемлемое решение ввиду того, что приложение кросс-платформенное.
Возможно, у кого-нибудь есть ссылки на пошаговое руководство для новичков, меня устроит любая помощь.
спустя 1 час 47 минут [обр] Владимир Палант(434/4445)[досье]
Полагаю, что http://www.mozilla.org/project......erview/EmbeddingBasicsTOC.html и http://www.mozilla.org/projects/embedding/faq.html вы уже видели? Есть также news://news.mozilla.org/netscape.public.mozilla.embedding (http://groups.google.com/group/netscape.public.mozilla.embedding), хотя там, наверное, выше шансы получить ответы на конкретные вопросы (http://groups.google.com/group......251feb8895c8f#1a7251feb8895c8f случайно не ваше сообщение?).
спустя 13 минут [обр] T-Rex[досье]

Группы Google кажутся интересным местом для поиска, хотя сообщение там не мое...
На Мозилловском сайте очень много информации, что называется, out-of-date и примеры все оказались зависимы от исходного кода броузера... наверное прийдется качать и его :(

За ссылки спасибо, посмотрю что получится найти.

спустя 1 день 21 час [обр] T-Rex[досье]

Здравствуйте снова. Пытаюсь собрать Mozilla из исходников, не получается :(
Вот пошаговое описание произведенных действий:

- скачал сырцы Мозиллы, распаковал в C:/mozilla
- скачал тулзы для компиляции в VS.NET 2003, распаковал, по ходу переименовав папку buildtools в c:/mozilla/moztools
- скачал cygwin, заинсталил в c:/mozilla/cygwin
- скачал ActivePerl, заинсталил в c:/mozilla/perl
- скачал библиотеки для MS VC++ 2003


http://ftp.mozilla.org/pub/moz......win32/vc71-glib-1.2.10-bin.zip
http://ftp.mozilla.org/pub/moz......in32/vc71-libIDL-0.6.8-bin.zip


- написал такой батник для настроек переменных среды

ENV.BAT


@ECHO OFF

set HOME=c:\mozilla

set MOZ_BITS=32
set MOZ_TOOLS=%HOME%\moztools
set OS_TARGET=WINNT
set WINOS=%OS_TARGET%
set _MSC_VER=1310

cd %MOZ_TOOLS%\windows
call install.bat
cd %HOME%

set GLIB_PREFIX=C:\mozilla\win32build\vc71

set LIBIDL_PREFIX=C:\mozilla\win32build\vc71

SET PATH=C:\mozilla\win32build\vc71;%PATH%
SET PATH=C:\mozilla\win32build\vc71\bin;%PATH%
SET PATH=C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin;%PATH%
SET PATH=C:\Program Files\Microsoft Platform SDK\Bin;%PATH%
SET PATH=%SystemRoot%\system32;%PATH%
SET PATH=%SystemRoot%;%PATH%
SET PATH=%SystemRoot%\System32\wbem;%PATH%
SET PATH=C:\mozilla\Perl\bin;%PATH%
SET PATH=C:\mozilla\cygwin\bin;%PATH%
SET PATH=C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;%PATH%
SET PATH=C:\Program Files\Microsoft Platform SDK\Bin\Win64;%PATH%

set PATH=%PATH%;%MOZ_TOOLS%\BIN
set PATH=%PATH%;%HOME%\PERL\BIN
set PATH=%PATH%;%HOME%\CygWin\bin
set PATH=%PATH%;%HOME%\moztools\windows\include

SET LIB=
SET LIB=%LIB%;C:\Program Files\Microsoft Platform SDK\Lib;
SET LIB=%LIB%;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;
SET LIB=%LIB%;C:\Program Files\Microsoft SDK\Lib\IA64

set DISABLE_TESTS=0

set MOZ_SRC=%HOME%
set MOZ_NO_ACTIVEX_SUPPORT=1
set CONFIG_SHELL=SH.EXE

call "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\VCVARS32.BAT"


Этот батник проинсталил мне тулзы и настроил переменные среды... вроде не ругнулся ни разу

- запустил cygwin, перешел в c:/mozilla
- открыл cmd запустил env.bat
- После этого запускаю


nmake -f client.mk build


Выдает ошибку


Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

client.mk(101) : fatal error U1033: syntax error : '=' unexpected
Stop.


Пробовал запускать из cygwin, выдает точно такую же ошибку :(
Ошибка возникает на установке переменных в мэйкфайле


MODULES_suite :=
SeaMonkeyAll
mozilla/ipc/ipcd
mozilla/modules/libpr0n
mozilla/accessible
mozilla/security/manager
mozilla/toolkit
mozilla/storage
mozilla/db/sqlite3
$(NULL)


Подскажите плз., что я упустил... почему ругается?

спустя 26 минут [обр] Владимир Палант(434/4445)[досье]
Странный у вас client.mk (см. http://lxr.mozilla.org/mozilla/source/client.mk). Вы какую версию пытаетесь собрать?
спустя 1 минуту [обр] T-Rex[досье]
mozilla-source-1.8b1.tar.bz2
спустя 21 секунду [обр] Владимир Палант(434/4445)[досье]
PS: nmake с этим файлом использовать нельзя, нужен стандартный make (из cygwin, наверное).
спустя 3 минуты [обр] Владимир Палант(434/4445)[досье]
Тогда уж лучше берите исходники Firefox 1.5 — тот же Gecko 1.8, но уже его окончательная версия. Или же Mozilla 1.7.12 — это Gecko 1.7, официальная стабильная версия для использования в других приложениях.
спустя 5 минут [обр] T-Rex[досье]
>>> PS: nmake с этим файлом использовать нельзя, нужен стандартный make (из cygwin, наверное).
А как тогда собрать с помощью Микрософтовского компилятора?
>>> Тогда уж лучше берите исходники Firefox 1.5 — тот же Gecko 1.8, но уже его окончательная версия
Вы часом не в курсе, он с помощью MSVC++ собирается? Для меня это необходимое условие.
спустя 25 минут [обр] Владимир Палант(434/4445)[досье]
Любой make можно использовать с любым компилятором, одно к другому отношения не имеет. По умолчанию под Windows всегда используется компилятор VC++.
спустя 17 часов [обр] T-Rex[досье]

Я не знаю как... но оно собралось %)
Правда пришлось сделать ему NO_MFC (неприятно, конечно, но что ж тут поделаешь) и MOZ_NO_ACTIVEX_SUPPORT (а то ATL из PlatformSDK оно неадекватно воспринимает).

Не знаю, получалось ли у кого-нибудь собрать Мозиллу не имея предустановленно VisualStudio (используя только бесплатный VC++ ToolKit 2003 и PSDK), но ИМХО это невозможно (т.к. в ATL-заголовках PSDK 2003 sp1 указаны библиотеки, которые в самой PSDK имеются только для 64-битных процессоров)

А еще я пришел к выводу, что не стОит слушать всяких умных дядек из-за бугра, т.к. их мануалы все-равно не работают (почти правильный мануал нашел на mozilla.ru - по сборке FF и TB из сырцов)... немного пришлось позаморачиваться, но эффект есть. smile

Всем спасибо за помощь со сборкой. Но я думаю что это еще не конец

спустя 2 часа 25 минут [обр] T-Rex[досье]

У меня получилось собрать пример wxEmbed, но оказалось что Мозилла библиотеки подгружает динамически (MultiThreaded DLL), сам файл mozilla.exe весит всего 64 КБ, что только подтверждает мои догадки, а мне нужно чтобы подгружала статически (MultiThreaded), дабы убрать зависимости при переносе на другую машину.

В файле mozilla/mozilla/.mozconfig есть строки

ac_add_options --disable-shared
ac_add_options --enable-static

... или .mozconfig у меня при сборке не использовался... или... одно из двух...
Не подскажете, какие переменные среды нужно установить перед сборкой для обеспечения статической линковки библиотек?

спустя 5 минут [обр] Владимир Палант(434/4445)[досье]

Да вроде бы именно эти опции и нужно установить. Но я никогда не пробовал, так что не знаю, работают ли они еще...

Инструкции на mozilla.org местами сильно устарели.

спустя 7 минут [обр] T-Rex[досье]

ac_add_options --disable-activex
ac_add_options --disable-activex-scripting

вроде бы ети строки имеют аналог в BAT-файле в виде переменной среды

SET MOZ_NO_ACTIVEX_SUPPORT=1

а есть ли такой же аналог для

ac_add_options --disable-shared
ac_add_options --enable-static

?

спустя 3 минуты [обр] Владимир Палант(434/4445)[досье]

BUILD_SHARED_LIBS=
BUILD_STATIC_LIBS=1

Вообще смотрите в файле configure.in.

спустя 5 часов [обр] T-Rex[досье]

Странно, но правка configure и configure.in ничего не дала.
Установка переменных
BUILD_SHARED_LIBS=
BUILD_STATIC_LIBS=1
также не возымела эффекта, равно как и принудительний вызов configure с параметрами --enable-static --disable-shared --disable-debug (немного подправил client.mk чтобы configure всегда вызывался с этими параметрами)
пробовал заменить все вхождения флага /MD во всех файлах на /MT (для принудительной компиляции со статическими библиотеками), ничего кроме увеличения размера исполняемого файла Мозиллы это не дало :-/ странно, однако...

Как бы там ни было, примеры заработали, и моя проблема почти решена. У меня получилось перевести окно броузера в примере в режим редактирования, что изначально и было целью :) осталось только разобраться, как сохранять внесенные изменения. Жаль, конечно, что прийдется таскать за собой кучу библиотек (не мозилловских), но это меньшее из зол.

Как-нибудб на досуге попробую качнуть исходник FF и постараюсь прикрутить его библиотеки к примеру.

Если есть необходимость, могу выложить куда-нибудь полное описание действий по сборке Mozilla-1.8b1, в помощь остальным страждущим.

Powered by POEM™ Engine Copyright © 2002-2005