Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
ВнизИ все-таки нужен нормальный инсталлятор IB/Firebird/Yaffil Найти похожие ветки
← →
kaif (2002-07-17 15:05) [0]Я скачал кучу информации по инсталляции...
1.Это скрипт для Inno Setup, который не устанавливает сервис, как видно из самого скрипта и проверяет перед установкой, запущен ли гардиан, что не работает, если запущен сервис.
2.Я попробовал задействовать TIBInstall от IBX. При включенных опциях server или client, он не работет (дает ошибку unable to copy file). Остальное (документацию, например) копирует без труда, но это я могу в любом инсталляторе сделать. Хорошо, хоть TIBInstall может определить, что сервис стартован.
Вопрос: кто этим вообще занимался всерьез?
← →
Digitman (2002-07-17 15:28) [1]>kaif
да никто, видимо)
ситуация с инсталляторами на сегодняшний день, как мне видится, сходна с крыловской басней "Лебедь, Рак и Щука" - каждый тянет на себя одеяло
← →
kaif (2002-07-17 16:19) [2]Пока я обнаружил следующее:
1. Скрипт Inno Setup у меня не сработал под NT4 из-за того, что провалился вызов файла instsvc.exe. Он проваливается как с параметром remove (удаление сервиса), так и с параметрами install + <путь>. Любопытно, что утилита ibguardinst.exe, использующая:
mgr:=OpenSCManager(nil,nil,SC_MANAGER_CREATE_SERVICE);
if mgr<>0 then begin
svc:=CreateService(mgr,
PChar(service_name),
PChar(service_label),
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS,
sttyp,
SERVICE_ERROR_CRITICAL,
PChar(executable),
PChar(""),nil,PChar(""),nil,PChar(""));
...
и т. д.
прекрасно работает и корректно ставит сервис под NT.
---------------
2. Оказалось, что утилита stopsrv.exe, используемая в скрипте Inno Setup, в состоянии лишь прекратить работу guardian по 98". Действует примитивно - путем поиска окон с именем:
Wnd := FindWindow(PChar("IB_Guard"), nil
{PChar("InterBase Guardian")});
if Wnd<>0 then begin
GetWindowThreadProcessId(Wnd, @ProcId);
hProcess := OpenProcess(PROCESS_TERMINATE,false,ProcId);
PostMessage(Wnd, WM_QUIT, 0, 0);
WaitForSingleObject(hProcess, INFINITE);
end;
Wnd := FindWindow(PChar("IB_Server"), nil
{PChar("InterBase Server")});
if Wnd<>0 then begin
GetWindowThreadProcessId(Wnd, @ProcId);
hProcess := OpenProcess(PROCESS_TERMINATE,false,ProcId);
PostMessage(Wnd, WM_QUIT, 0, 0);
WaitForSingleObject(hProcess, INFINITE);
end;
Ясно, что она не может удалить мз реестра запись в
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
и при неудачной инсталляции гардиан попытается стартовать вновь по старому пути.
--------------------
Пока столько.
← →
Awex (2002-07-17 17:08) [3]2kaif
1. Почему вы думаете что включение в дистрибутив програмного продукта инсталяционной части IB/Firebird/Yaffil обязательны процесc ?
- Недостатки включение IB/Firebird/Yaffil в дистрибудив:
1. Увеличение размера дистрибутива
2. Потенциальные ошибки конфликта версий IB.
2. Как мне кажется предпочтительней рапространение дистрибутива и установка сервера отдельно от дитрибутива приложения(можно допустить установку лишь IB клиента(Иногда это бывает удобно)).
Ведь неизвестно кокой сервер предпочитает клиент IB/Firebird/Yaffil , Classic или SS.
3. А завершение инсталяции завершить интерактивным руководством (html), в котором описано что для дальнейшей работы с программой необходимо установить сервер IB при необходимости (и сылочку на файл установки).
Как мне кажется такой подход наиболее правильный и коректный.
← →
kaif (2002-07-17 20:16) [4]2 Awex © (17.07.02 17:08)
Совершенно согласен. Я не собираюсь объединять дистрибутив программы с дистрибутивом сервера. Проблема в том, что работающего дистрибутива Yaffil 821 не существует. И мне приходится сейчас его создавать.
Итак, на данный момент:
1. Мне удалось проинсталлировать корректно по NT4 сервис путем замены вызова в скрипте инсталляции instsvc.exe на ibguardinst.exe (утилита стороннего разработчика).
2. Я понял, что ibguard может стартовать 2-мя способами:
а) как приложение по W98". Для этого нужна запись в реестр
<HKLM>\Software\Microsoft\Windows\CurrentVersion\Run
б) как сервис по NT, для чего нужно его ставить при помощи instsvc.exe, который кривой и не работает. Вместо него нужно применять альтернативы типа ibguardinst.exe
в) Для того, чтобы UDF-ы работали обязательно нужна ib_util.dll в каталоге BIN сервера, которую инсталляторы FireBird забывают ставить.
-------------------------
Пока все. Кому интересно, конечно.
Если я в чем неправ - пусть меня поправят.
← →
Alexandr (2002-07-18 07:09) [5]2kaif: ушло мылом.
← →
Вячеслав (2002-07-18 10:50) [6]http://ibinstall.defined.net/dl_scripts.htm
Здесь есть доступные для загрузки инсталляционные скрипты и не только под инносетап.
← →
Anatoly Podgoretsky (2002-07-18 11:00) [7]Большую подлянку совершила фирма Борланд, что пустила Интербейс в свободное плавание
← →
Alexandr (2002-07-18 11:15) [8]2Anatoly Podgoretsky: Подлянку кому? И в чем, собственно, она заключается?
← →
kaif (2002-07-18 12:27) [9]>2 Вячеслав © (18.07.02 10:50)
С меня достаточно количества ошибок в скрипте под Inno Setup, чтобы теперь по новой изучать остальные скрипты.
Единственное, что толковое удалось найти, это руководство
InterBase Installation & Deployment Options
David R. Robinson
------------
Этот мужик подробно описывает все требования к инсталляции, основываясь на собственном большом опыте внедрения IB (5500 лицензий). Благодаря этому руководству мне уже удалось написать правильно работающий скрипт под NT, хотя ограничени основной версии Inno Setup не позволяют пока мне предварительно проверить, запущен ли сервер перед инсталляцией. И еще непосредственно после установки под 98" базу isc4.gdb сервер видит только после перезапуска guardian.
---------------------
2 Alexandr © (18.07.02 07:09)
Большое спасибо. Почту получил. Сейчас посмотрю присланный тобой скрипт для Yaffil.
← →
kaif (2002-07-18 12:51) [10]2 Alexandr ©
Взглянул на скрипт. К сожалению:
1. это может не заработать под 98" по ряду причин...
2. под NT4 команда start клюкавому instsvc.exe приводит к смертельному сбою.
3. инсталлятор поставит сервис Interbase, но не поставит корректно сервис Guardian.
4.(Самое главное) нет проверки на то, что сервер уже запущен. Но боюсь для этого мне придется использовать Inno Setup Extensions, так как базовая версия Inno Setup ничего не может запускать перед инсталляцией...
-------
Поэтому я продолжаю дорабатывать свой скрипт.
----------
Любопытно, что David R. Robinson не рекомендует использовать instsvc.exe для регистрации сервиса, а делать это средствами самих инсталляторов. Я заметил, что instsvc.exe использовать можно, но только не для start или stop сервера. А вообще интересно, сколько версий самого instsvc.exe существует? Может, мне просто найти работающую под NT4?..
← →
Alexandr (2002-07-18 12:58) [11]я не знаю.
Никогда инсталляшки не делал.
← →
kaif (2002-07-18 13:36) [12]В скрипте под Yaffil фигурирует файл bin\ibremote.exe, который вообще я не нашел в поставке Yaffil 821.
Интересную вещь я обнаружил:
файл firebird instsvc.exe (24K) работает прекрасно. Отрабатывает Start и Stop под NT4. Файл же instsvc.exe (28K) в составе Yaffil дает на эти команды ошибку чтения памяти под NT4.
Причем firebird instsvc.exe регистрирует сервис Interbase с названием Firbird, а Yaffil, соответственно со своим названием.
--------------
Однако гардиан под NT4 оба instsvc.exe не устанавливают по-человечески.
-------------
Буду смотреть дальше. Это уже похоже на репортаж... Я просто хочу обратить внимание публики на эту проблему. Иногда такие мелочи, как отсутсвие инсталлятора, весьма не способствуют развитию продукта на рынке...
← →
kaif (2002-07-18 20:38) [13]Итак, я сделал скрипт для Yaffil под My Inno Setup Extensions 3. Эта версия Inno Setup позволила анализировать перед инсталляцией, стартован ли InterBase сервер. Однако остался ряд проблем.
1. Поиск работающего сервера с помощью FindWindow, как рекомендуется в литературе, работает под NT4 толко если сделать start-stop сервиса (удается найти гардиан). А если сервис стартовал при запуске Windows NT4, то FindWindow ничего не находит. Честно говоря, если бы оно вообще ничего не находило и после start-stop, мне это было бы понятнее.
2. IBConsole под 98" не может соединиться с Local Server (cannot attach to services manager). Под NT4 IBConsole сначала не видит стартованный сервис (оно тоже ищет с помощью FindWindow, как ни странно), но в конце концов подключается без ругани.
------
3. Я включил аплет Server Manager (ibmgr.cpl) в состав дистрибутива, но никак не могу взять в толк, имею ли я право так сделать. Server Manager великолепно управляет сервисами (Start-Stop) как под 98", так и под NT4. Кто знает, является ли ibmgr.cpl платным, дайте знать.
← →
kaif (2002-07-18 23:01) [14]Ну все. Инсталлятор готов. Пришлось написать маленькую dll для проверки, стартован ли сервис.
Хорошо бы протестировать на массе компьютеров. Я бы с удовольствием разместил скрипт и все необходимые дополнительные файлы, а также готовый инсталлятор где-нибудь для публики, вот только не знаю, как это делается.
Размер инсталлятора около 2,4M (один exe-файл). Русифицирован. Опробован на 98 SE, NT4 SP4.
Версия Yaffil 821. файл instsvc.exe взят от Firebird.
При установке ставится также аплет InterBase Manager. Как с правами на этот счет - не знаю. Но вроде он шел вместе с бесплатным IB6.0 (не помню).
=================
Проблемы: IBConsole при коннекте с Local Server ругается под 98". Также IBConsole не видит, что сервис стартован под NT4. Но я не думаю, что это с инсталлятором как-то связано. Хотя все может быть... Нужно текст IBConsole смотреть.
EMS QuickDesk через протокол Local базы видит.
Компоненты IBX также все видят как по Local, так и по TCP/IP.
← →
Alexandr (2002-07-19 08:19) [15]давай мне на мыло.
А я дам куда следует...
← →
kaif (2002-07-19 11:31) [16]2 Alexandr © (19.07.02 08:19)
O.K. Подготовлю в божеском виде и сегодня пришлю.
← →
kaif (2002-07-19 15:03) [17]Вроде отослал. Полчаса Readme писал, а потом сохранил куда-то не туда и не смог найти.:(( Так что без пояснений. Дико извиняюсь.
← →
Alexandr (2002-07-19 15:20) [18]ну ладно.
Хотя плохо что readMe нету.
Я тебе ответ уже написал.
← →
kaif (2002-07-19 16:11) [19]Ура! Я нашел свой readme и выслал.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c