powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
23 сообщений из 23, страница 1 из 1
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343251
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FYI: Скрипт не поддерживает UNC пути
Структура каталогов с которыми работает скрипт deploy.cmd
Код: txt
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
\"fbsql_deploy"   // может называться как угодно и располагаться где угодно, кроме UNC
 |
 +-"deploy.cmd"   // сам скрипт
 |
 +-+"x86"
 | |
 | +-"fbsvr"      // каталог с содержимым Firebird-2.5.###_Win32.zip
 | |
 | +-"vcredist.exe"   // x86 v6.00.2900.2180 (v8.0.50727.6195)
 |
 +-"x86_64"
   |
   +-"fbsvr"      // каталог с содержимым Firebird-2.5.###_x64.zip
   |
   +-"vcredist.exe"   // x64 v6.00.2900.2180 (v8.0.50727.6195)
Скрипт deploy.cmd
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
@echo off
setlocal
echo Deploying FirebirdSQL SuperServer components...
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
  set cpuarch=x86
  set fbdir=%ProgramFiles%\Firebird\Firebird_2_5
  goto :cpuarch_done
) else if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
    set cpuarch=x86_64
    set fbdir=%ProgramFiles%\Firebird\Firebird_2_5
    goto :cpuarch_done
  )
echo !ERROR! Unknown processor architecture.
goto :error

:cpuarch_done
if exist "%fbdir%" (
  echo !ERROR! FirebirdSQL directory installation already exist.
  goto :error
)
sc query "FirebirdServerDefaultInstance" >nul
if not errorlevel 1 (
  echo !ERROR! Default instance of FirebirdSQL service already registered.
  goto :error
)
sc query "FirebirdGuardianDefaultInstance" >nul
if not errorlevel 1 (
  echo !ERROR! Default instance of FirebirdSQL Guardian service already registered.
  goto :error
)
md "%fbdir%"
if errorlevel 1 goto :bad_privileges
set deploy_dir=%~dp0
set srcdir=%deploy_dir%%cpuarch%
xcopy "%srcdir%\fbsvr\*.*" "%fbdir%\" /e /q >nul
if errorlevel 1 (
  echo !ERROR! Error while deploying.
  goto :error
)
echo !SUCCESS!
echo.
echo "Path" System environment variable content checking...
set pathkey=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
for /f "tokens=1,2,*" %%i in ('reg query "%pathkey%" /v "path"') do (
  if /i "path"=="%%i" (
    echo %%k | findstr /i /l /c:"%fbdir%\bin" >nul
    if errorlevel 1 (
      reg add "%pathkey%" /v "%%i" /t "%%j" /d "%%k;%fbdir%\bin" /f >nul
    ) else echo !INFO! "%fbdir%" already in system environment variable "Path".
    echo !SUCCESS!
  )
)
echo.
echo FirebirdSQL client libraries deploying...
"%srcdir%\vcredist.exe" /q
xcopy "%srcdir%\fbsvr\firebird.msg" "%SystemRoot%\" /q /y >nul
xcopy "%srcdir%\fbsvr\bin\fbclient.dll" "%SystemRoot%\System32\" /q /y >nul
xcopy "%srcdir%\fbsvr\bin\fbembed.dll" "%SystemRoot%\System32\" /q /y >nul
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
  set srcdir=%deploy_dir%x86
"%srcdir%\vcredist.exe" /q
  xcopy "%srcdir%\fbsvr\bin\fbclient.dll" "%SystemRoot%\SysWOW64\" /q /y >nul
  xcopy "%srcdir%\fbsvr\bin\fbembed.dll" "%SystemRoot%\SysWOW64\" /q /y >nul
)
echo !SUCCESS!
echo.
echo FirebirdSQL services registration...
rem --= FirebirdServerDefaultInstance =--
sc create "FirebirdServerDefaultInstance" type= "own" start= "demand" ^
  error= "normal" binpath= "\"%fbdir%\bin\fbserver.exe\" -s DefaultInstance" ^
  tag= "no" displayname= "Firebird Server - DefaultInstance" obj= "LocalSystem"
if errorlevel 1 (
  echo !ERROR! "FirebirdServerDefaultInstance" service registration error.
  goto :bad_privileges
)
sc description "FirebirdServerDefaultInstance" ^
  "Firebird Database Server - www.firebirdsql.org" >nul
rem --= FirebirdGuardianDefaultInstance =--
sc create "FirebirdGuardianDefaultInstance" type= "own" start= "auto" ^
  error= "normal" binpath= "\"%fbdir%\bin\fbguard.exe\" -s DefaultInstance" ^
  tag= "no" displayname= "Firebird Guardian - DefaultInstance" obj= "LocalSystem"
if errorlevel 1 (
  echo !ERROR! "FirebirdGuardianDefaultInstance" service registration error.
  goto :bad_privileges
)
sc failure "FirebirdGuardianDefaultInstance" reset= "0" actions= "restart/0" >nul
sc description "FirebirdGuardianDefaultInstance" ^
  "Firebird Server Guardian - www.firebirdsql.org" >nul
echo !SUCCESS!
echo.
net start "FirebirdGuardianDefaultInstance"
endlocal
goto :eof

:bad_privileges
echo !ERROR! You havn't privileges.

:error
echo Press any key to continue...
endlocal
pause >nul
goto :eof

...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343272
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

ИХМО, автоматизация развёртывания из снапшотов зло
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343278
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, просто чтобы не забыть сделать необходимые манипуляции вручную. Тем более, что можно подсовывать уже сконфигурированные снапшоты со всеми своими conf файлами и udf библиотеками.
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343280
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для автоматизации молчаливого развертывания релиза есть куча удобных ключей командной строки вызова инсталлятора.
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343281
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o_v_a, с развертыванием релиза всё понятно, но речь не об этом.
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343290
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

ты слишком усложняешь процесс. Ради интереса загляни в install_super.bat

И ещё сервис не всегда называется FirebirdServerDefaultInstance.
У меня он называется по другому, ибо стоит не один firebird, по крайней мере на компе разработчика. На Guardian я бы вообще забил.
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343295
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrdb_dev, ты слишком усложняешь процесс. Ради интереса загляни в install_super.batДа сколько же можн ов него заглядывать? :)

Симонов ДенисИ ещё сервис не всегда называется FirebirdServerDefaultInstance.
У меня он называется по другому, ибо стоит не один firebird, по крайней мере на компе разработчика. На Guardian я бы вообще забил.Те, кому нужны кучи инстансов, знают как пользоваться install_super.bat. Мне лень было добавлять в скрипт обработку параметров командной строки с выбором типа сервера, каталога установки и имени инстанса. Сдалал всё по умолчанию.
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343311
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

Или копируй CRT библиотеки из архива, или ставь vcredist
Зачем добавлять путь к fb в path ?
Если уж добавил - зачем копировать fbclient.dll (и firebird.msg) в system32 ?
ЗАЧЕМ вообще куда-либо копировать fbembed ???
Зачем мучать sc, когда есть instsvc ?

Вывод - делать тебе нечего, займись реально полезным чем-нить :)
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343423
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЗачем добавлять путь к fb в path ?Путь к утилитам, но можно и не добавлять.

hvladИли копируй CRT библиотеки из архива, или ставь vcredist
Если уж добавил - зачем копировать fbclient.dll (и firebird.msg) в system32 ?В случае "AMD64", если на сервере БД будут запускать еще какую-нибудь службу (мониторинг, проксирование или еще что-нибудь самописное) имеющую иную разрядность, чем развернутый сервер. Так как %SystemRoot%\System32, обычно, располагается в самом начале переменной "path", которая может содержать туеву хучу путей поиска (хотя, для реального сервера такое маловероятно), то библиотечка будет найдена чуточку быстрее. firebird.msg тоже нннннада, чтоб матюги доходчивыми были.

hvladЗАЧЕМ вообще куда-либо копировать fbembed ???До кучи и для "симметрии". Перфекционизм, мать его, не позволяет не копировать fbembed.dll при копировании fbclient.dll

hvladЗачем мучать sc, когда есть instsvc ?Для наглядности. Вдруг кому-нибудь приспичит поменять description или failure actions на свой вкус и цвет.

hvladВывод - делать тебе нечего, займись реально полезным чем-нить :)Злыдень! :)
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343433
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, вообще у меня было желание засунуть все клиентские бибдиотеки в side-by-side подсистему, но пока не достаточно подробно изучил "как".
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343461
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

твои объяснения показывают плохое владение предметом, увы.
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343471
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, поконкретнее, пожалуйста.
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343506
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, кстати, с firebird.msg интересная ситуация - если распространять fbclient.dll вместе со своим приложением и класть firebird.msg рядом, то клиентская библиотека не подтягивает из него сообщения об ошибках, но если класть firebird.msg на уровень выше в структуре каталогов, то клиентская библиотека матерится вполне штатно. Из чего заключаю, что если библиотека цепляется из %SystemRoot%\System32 (или SysWOW64), то firebird.msg должен находиться в %SystemRoot%.

Это так?
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343515
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devhvlad, поконкретнее, пожалуйста.Лень время тратить.
Можешь считать себя гением-перфекционистом, мне всё равно :)
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343517
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

в 3.0 уже нет.
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343519
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladМожешь считать себя гением-перфекционистом, мне всё равно :)Злыдень в квадрате! :)
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343522
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devесли распространять fbclient.dll вместе со своим приложением и класть firebird.msg рядом, то клиентская библиотека не подтягивает из него сообщения об ошибках,100500 раз писали, что
- бОльшую часть сообщений fbclient.dll содержит в себе
- до fb2.5 firebird.msg ищется на каталог выше приложения
- в fb2.5 firebird.msg ищется на каталог выше fbclient.dll'а
- в fb3 firebird.msg ищется в каталоге fbclient.dll'а
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343523
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devhvladМожешь считать себя гением-перфекционистом, мне всё равно :)Злыдень в квадрате! :)Хоть в кубе, только в печь не ставь :)
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343526
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad100500 раз писали, что
- бОльшую часть сообщений fbclient.dll содержит в себе
- до fb2.5 firebird.msg ищется на каталог выше приложения
- в fb2.5 firebird.msg ищется на каталог выше fbclient.dll'а
- в fb3 firebird.msg ищется в каталоге fbclient.dll'аВидимо, все эти 100500 раз прошли мимо меня. Как давно об этом писали?
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343533
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladХоть в кубе, только в печь не ставь :)Вот ты всё иронизируешь, а вдруг кому-нибудь упрётся подтянуть fbclient.dll не через LoadLibrary в приложении, а статической линковкой со сгенерированной .a/.lib "заглушкой", чувствительной к версии клиентской библиотеки, и шо тогда? Придется для всех таких приложений таскать вместе с ними нужную версию fbclient.dll, вместо того, чтобы засунуть её в side-by-side.
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343534
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devКак давно об этом писали?
Регулярно на протяжении последних 15 лет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39343551
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devа вдруг кому-нибудь упрётся подтянуть fbclient.dll не через LoadLibrary в приложении, а
статической линковкой со сгенерированной .a/.lib "заглушкой", чувствительной к версии
клиентской библиотеки, и шо тогда?

Ничего. API абсолютно взадсовместимо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
    #39344237
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё время забываю, что без включения расширенной обработки команд cmd, внутри скобок раскрытие там же измененных переменных невозможно. Скрипт "deploy.cmd" пришлось подправить.
deploy.cmd
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
@echo off
setlocal
echo Deploying FirebirdSQL SuperServer components...
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
  set cpuarch=x86
  set fbdir=%ProgramFiles%\Firebird\Firebird_2_5
  goto :cpuarch_done
) else if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
    set cpuarch=x86_64
    set fbdir=%ProgramFiles%\Firebird\Firebird_2_5
    goto :cpuarch_done
  )
echo !ERROR! Unknown processor architecture.
goto :error

:cpuarch_done
if exist "%fbdir%" (
  echo !ERROR! FirebirdSQL installation directory already exist.
  goto :error
)
sc query "FirebirdServerDefaultInstance" >nul
if not errorlevel 1 (
  echo !ERROR! Default instance of FirebirdSQL service already registered.
  goto :error
)
sc query "FirebirdGuardianDefaultInstance" >nul
if not errorlevel 1 (
  echo !ERROR! Default instance of FirebirdSQL Guardian service already registered.
  goto :error
)
md "%fbdir%"
if errorlevel 1 goto :bad_privileges
set deploy_dir=%~dp0
set srcdir=%deploy_dir%%cpuarch%
xcopy "%srcdir%\fbsvr\*.*" "%fbdir%\" /e /q >nul
if errorlevel 1 (
  echo !ERROR! Error while deploying.
  goto :error
)
echo !SUCCESS!
echo.
echo "Path" System environment variable content checking...
set pathkey=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
for /f "tokens=1,2,*" %%i in ('reg query "%pathkey%" /v "path"') do (
  if /i "path"=="%%i" (
    echo %%k | findstr /i /l /c:"%fbdir%\bin" >nul
    if errorlevel 1 (
      reg add "%pathkey%" /v "%%i" /t "%%j" /d "%%k;%fbdir%\bin" /f >nul
    ) else echo !INFO! "%fbdir%" already in system environment variable "Path".
    echo !SUCCESS!
  )
)
echo.
echo Deploying client libraries from "%srcdir%"...
"%srcdir%\vcredist.exe" /q
xcopy "%srcdir%\fbsvr\firebird.msg" "%SystemRoot%\" /q /y >nul
xcopy "%srcdir%\fbsvr\bin\fbclient.dll" "%SystemRoot%\System32\" /q /y >nul
xcopy "%srcdir%\fbsvr\bin\fbembed.dll" "%SystemRoot%\System32\" /q /y >nul
if "%PROCESSOR_ARCHITECTURE%"=="x86" goto :clibs_done
set srcdir=%deploy_dir%x86
echo Deploying client libraries from "%srcdir%"...
"%srcdir%\vcredist.exe" /q
xcopy "%srcdir%\fbsvr\bin\fbclient.dll" "%SystemRoot%\SysWOW64\" /q /y >nul
xcopy "%srcdir%\fbsvr\bin\fbembed.dll" "%SystemRoot%\SysWOW64\" /q /y >nul

:clibs_done
echo !SUCCESS!
echo.
echo FirebirdSQL services registration...
rem --= FirebirdServerDefaultInstance =--
sc create "FirebirdServerDefaultInstance" type= "own" start= "demand" ^
  error= "normal" binpath= "\"%fbdir%\bin\fbserver.exe\" -s DefaultInstance" ^
  tag= "no" displayname= "Firebird Server - DefaultInstance" obj= "LocalSystem"
if errorlevel 1 (
  echo !ERROR! "FirebirdServerDefaultInstance" service registration error.
  goto :bad_privileges
)
sc description "FirebirdServerDefaultInstance" ^
  "Firebird Database Server - www.firebirdsql.org" >nul
rem --= FirebirdGuardianDefaultInstance =--
sc create "FirebirdGuardianDefaultInstance" type= "own" start= "auto" ^
  error= "normal" binpath= "\"%fbdir%\bin\fbguard.exe\" -s DefaultInstance" ^
  tag= "no" displayname= "Firebird Guardian - DefaultInstance" obj= "LocalSystem"
if errorlevel 1 (
  echo !ERROR! "FirebirdGuardianDefaultInstance" service registration error.
  goto :bad_privileges
)
sc failure "FirebirdGuardianDefaultInstance" reset= "0" actions= "restart/0" >nul
sc description "FirebirdGuardianDefaultInstance" ^
  "Firebird Server Guardian - www.firebirdsql.org" >nul
echo !SUCCESS!
echo.
net start "FirebirdGuardianDefaultInstance"
endlocal
set errorlevel=0
goto :eof

:bad_privileges
echo !ERROR! You havn't privileges.

:error
echo Press any key to continue...
endlocal
set errorlevel=1
pause >nul
goto :eof

...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кому нужна автоматизация развертывания крайнего FB2.5 SuperServer из снапшота, забирайте.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]