Здравствуйте.
Возникла необходимость в программу на С++ встроить Gecko-броузер вместо IE.
Читал мануал на mozilla.org - видимо он очень устарел т.к. в дистрибутиве Gecko SDK есть не все файлы, указанные в мануале.
Может кто знает где найти примеры встраивания Mozilla'овского броузера в приложение. Или мануал корректный. Буду рад даже пошаговому текстуальному описанию, в общем, любой помощи.
Gecko SDK впервые увидел вчера, было бы больше опыта - не спрашивал бы.
Скачал wxEmbed-пример, но там, видимо, чего-то нехватает... думаю в ближайшие пару дней разберусь, чего именно.
Заранее всем спасибо.
Отсутствует
Читал мануал на mozilla.org - видимо он очень устарел т.к. в дистрибутиве Gecko SDK есть не все файлы, указанные в мануале.
Чего именно?
Отсутствует
Appendix A: Setting up the Gecko SDK
...
When you extract the SDK, it should have the layout seen in
http://www.mozilla.org/projects/xpcom/book/cxc/html/appA.html#1001431
На скриншоте больше 2х десятков папок, в дистрибутиве только 4 - bin, include, idl, lib
Сырцов Мозиллы не качал - мне нужно чтобы после встраивания броузера, программа не подходила под описание derivative work - т.е. не основывалась на сырцыах броузера, а только на SDK.
Отсутствует
Похоже, если структуру поменяли, то теперь указанные файлы называются по-другому. В либах 7 штук *.lib файлов, в мануале 5. Это из явно видимых отличий. Больше пока сказать не берусь.
Mash, Вы, часом, не подскажете пошаговое руководство по настройке SDK в том виде, в котором оно сейчас есть? Или руководство по встраиванию Gecko для начинающих?
Отсутствует
Попытался сейчас из исходников открыть wxEmbed.dsp, но моя студия (2003) ругнулась при конвертации: "Cannot load the project due to a corrupt project file". Да и README ссылаются на какую-то wxMozilla. Откровенно говоря, я в этом деле профан, т.к. мои знания плюсов оставляют желать лучшего, просто темой заинтересовался. Максимум, что я делал, так это писал пару-тройку строк, пытаясь прикрутить SQLite к этому примеру.
Подсказать наверное не смогу, а то боюсь что вообще не в ту степь уведу.
Попробуйте спросить на xpoint; там есть более толковые в этих вопросах люди.
Отсутствует
Mash, если решитесь ради академического интереса все-таки довести пример до рабочего состояния - дайте мне знать. e-mail в профиле. Могу помочь с wxWidgets (wxEmbed на ней основывается). Там, в идеале, должен получиться кросс-платформенный проект.
Кстати сказать, после копания в мэйкфайле примера, пришел к выводу, что пример для компиляции требует исходник Мозиллы.
А за ссылочки спасибо - пойду посмотрю что под ними
Отсутствует
Возможно, Вам стоит подписаться на mozilla-devel@lists.altlinux.org и обсудить эту проблему там.
Все микробы умрут
Отсутствует
Standard Mozilla embedding example application for win32. Basic browser, menus, toolbar, URLbar, html area.
-http://lxr.mozilla.org/seamonkey/source/embedding/tests/mfcembed/MfcEmbed.cpp
Отсутствует
Во всех примерах, MFCEmbed, wxEmbed и т.д. нехватает многих файлов (скачал папку целиком, в некоторых html-файлах, в которых должен быть исходный код, так и написано, "This file does not exist"). С момента их написания, видимо, API успело достаточно сильно измениться. пытаюсь собрать wxEmbed - ничего не получается... пока вот, почти избавился от разногласий в версиях API, но все-равно, многих заголовков нехватает, наверное прийдется качать весь исходник Мозиллы с моим соединением на это неделя уйдет
Отсутствует
T-Rex
Хе-хе! Скажу больше, файлов не хватает и в исходниках! API не изменилось (изменилось, но не сильно), протсо многие файлы генерируются во время сборки из исходников. Кстати, MFCEmbed входит в сорцы в качестве примера и во время сборки тоже компилируется...
Непослушные локоны горничной выбивались из-под её кружевного фартука...
Отсутствует
Ага, значит, теоретически после получения исходника Мозиллы у меня есть шанс еще и рабочий пример получить... ладно...
Хотя вот кусок кода, который во всех примерах... в SDK ни одного упоминания о NS_IWEBBROWSER_IID нету (наверное только в сырцах найти можно)... ну хоть об этом-то они могли позаботиться?
nsresult rv;
mWebBrowser = do_CreateInstance(NS_IWEBBROWSER_IID, &rv);
if (!mWebBrowser || NS_FAILED(rv)) return NS_ERROR_FAILURE;
Отредактировано T-Rex (11-01-2006 00:50:19)
Отсутствует
T-Rex
И не только теоретически! У меня собралось... NS_IWEBBROWSER_IID будет в одном из заголовков сгенерированных при сборке...
ЗЫ: Начсёт "могли позаботится" - опытным путём выяснил, что вид генерируемых заголовков и статических библиотек сильно зависит от ключей указанных при сборке, видимо поэтому они и не включены в комплект...
Отредактировано ViRUS (11-01-2006 01:16:38)
Непослушные локоны горничной выбивались из-под её кружевного фартука...
Отсутствует
Черт... видимо, с таким раскладом, вся моя работа подпадает под описание derivative work. Надо тогда думать как сделать так чтобы мой компонент поставлялся без исходного кода Mozilla, в противном случае прийдется делать его OpenSource, что неприемлемо
Есть здесь люди, которые могут толково объяснить, в каких случаях производные библиотеки-компоненты-программы, использующие код Mozilla должны распостраняться с исходным кодом? Macromedia, на сколько я помню, выпустила какой-то продукт на основе Mozilla'овского движка, но он не OpenSource.
Отсутствует
наверное прийдется качать весь исходник Мозиллы с моим соединением на это неделя уйдет
Максимум 4-5 часов на дайлапе: tar.bz2 <-- http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.8b1/source/
Оно того стоит.
Отсутствует
Уже качнул... вечером сяду разбирать сырцы и попробую скомпилить.
Там они еще предлагали тулзы для компиляции wintools-dotnet.zip. Я так полагаю, что это для VS.NET, еще не смотрел.
Скачал ActiveX - да, вроде работает. Только там надо еще разобраться как ЭТО вставить в приложение на wxWidgets (тогда о кросс-платфоренности прийдется забыть). И еще как перевести его в режим редактирования... думаю в Google Groups найду.
Отсутствует
Скажите пожалуйста, а есть ли возможность собрать Mozilla без использования cygwin? Не хотелось бы иметь зависимость от cygwin1.dll
ЗЫ: А есть ли в природе готовые файлы проекта для сборки в VisualStudio.NET ?
Отредактировано T-Rex (11-01-2006 19:02:17)
Отсутствует
Вот пошаговое описание действий:
- скачал сырцы Мозиллы, распаковал в 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/mozilla.org/mozilla/libraries/win32/vc71-glib-1.2.10-bin.zip
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/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
- После этого запускаю
Выдает ошибку
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)
Подскажите плз., что я упустил... почему ругается?
Отсутствует
Скажите пожалуйста, а есть ли возможность собрать Mozilla без использования cygwin? Не хотелось бы иметь зависимость от cygwin1.dll
Цугвин нужен только на этапе сборке - используются утилиты из него. Сборка от cygwin1.dll не зависит.
ЗЫ: А есть ли в природе готовые файлы проекта для сборки в VisualStudio.NET ?
К сожалению природа пока на это не разродилась...
nmake -f client.mk build
А по рукам? nmake - это Микрософтовый make. Юниксовых make-файлов не понимает. Тебе нужно делать так:
При этом последовательность действий такая:
- запускаешь cmd
- потом env.bat (всё из того же cmd!)
- потом цугвин (опять же из уже запущенного cmd!)
- делаешь make.
Непослушные локоны горничной выбивались из-под её кружевного фартука...
Отсутствует
На счет nmake - нашел в одной из мурзилок в сети...
На счет gmake - муторно ему от этого мэйкфайла
На счет cygwin - скушал вроде мэйкфайл... сейчас бьюсь с зависимостями
Отсутствует
Я не знаю как... но оно собралось %)
Правда пришлось сделать ему NO_MFC (неприятно, конечно, но что ж тут поделаешь) и MOZ_NO_ACTIVEX_SUPPORT (а то ATL из PlatformSDK оно неадекватно воспринимает).
Не знаю, получалось ли у кого-нибудь собрать Мозиллу не имея предустановленно VisualStudio (используя только бесплатный VC++ ToolKit 2003 и PSDK), но ИМХО это невозможно (т.к. в ATL-заголовках PSDK указаны библиотеки, которые в самой PSDK имеются только для 64-битных процессоров)
А еще я пришел к выводу, что не стОит слушать всяких умных дядек из-за бугра, т.к. их мануалы все-равно не работают (почти правильный мануал нашел здесь на mozilla.ru - по сборке FF и TB из сырцов)... немного пришлось позаморачиваться, но эффект есть.
Всем спасибо за помощь со сборкой. Но я думаю что это еще не конец
Отредактировано T-Rex (12-01-2006 18:49:31)
Отсутствует
У меня получилось собрать пример wxEmbed, но оказалось что Мозилла библиотеки подгружает динамически (MultiThreaded DLL), сам файл mozilla.exe весит всего 64 КБ, что только подтверждает мои догадки, а мне нужно чтобы подгружала статически (MultiThreaded), дабы убрать зависимости при переносе на другую машину.
В файле mozilla/mozilla/.mozconfig есть строки
... или .mozconfig у меня при сборке не использовался... или... одно из двух...
Не подскажете, какие переменные среды нужно установить перед сборкой для обеспечения статической линковки библиотек?
Отредактировано T-Rex (12-01-2006 21:17:44)
Отсутствует
Как бы там ни было, примеры заработали, и моя проблема почти решена. У меня получилось перевести окно броузера в примере в режим редактирования, что изначально и было целью осталось только разобраться, как сохранять внесенные изменения. Жаль, конечно, что прийдется таскать за собой кучу библиотек (не мозилловских), но это меньшее из зол.
Как-нибудб на досуге попробую качнуть исходник FF и постараюсь прикрутить его библиотеки к примеру.
Если есть необходимость, могу выложить куда-нибудь полное описание действий по сборке Mozilla-1.8b1, в помощь остальным страждущим.
Отсутствует
T-Rex Выкладвай сюда (или куда-нибудь ещё ), перенесём в wiki.
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")
Отсутствует