Більш детальне знайомство з процесом установки, та конфігурації середовища роботи з mySQL.

 

         Більш детальне знайомство з процесом установки, та конфігурації середовища роботи з mySQL.

 

         Припустимо, що ми вже написали готовий продукт для молого підприємства, або для підприємства у якого немає в штаті адміністратора. Це означає, що потрібно створити такий програмний додаток, який зможе поставити простий користувач, тобто потрібно, щоб всі опції не запитувались при інсталяції, а вже містилися в інсталяційному пакеті.

         Почнемо з mySQL. Так як при інсталяції він запитує кодування, порт сервера, паролі користувач його сам не поставить, також нам не вигідно щоб користувач знав а тим паче змінив пароль на головну БД. Тому будемо преконфігурувати сервер.

         Одже, що ми робимо перед виходом інсталяційного пакету? Правильно експортуємо всі БД які містяться в mySQL, а потім зносимо все що пов’язано з СКБД, тобто mySQL, myODBC Connector, всі аліаси.

         Потім знаходимо інсталяцію mySQL і починаємо інсталювати. Вводимо всі необхідні параметри. Запускаємо сервер. Імпортуємо потрібні для нашої ІС БД (з того, що ми зберегли перед деінсталяцією СКБД).

         Важливо! При інсталяції потрібно відштовхуватись від того, що в світі існує не тільки ваше автоматизоване робоче місце, а і інші ІС, АРМ, які можуть використовувати mySQL. Так як нам не потрібно конфліктів з іншими програмами (конфлікти можуть виникнути із-за зайнятого TCP порту, не відповідностей паролів, одинакове ім’я сервісу в операційній системі) вказуємо ім’я сервісу не стандертне запропановене інсвталятором а, наприклад, «BDforIS_Sklad_v100», змінюємо стандартний порт з 3306 на, наприклад, 58963, і каталог на любий інший який знаходиться на диску С:.

         Після чого ідемо в панель керування і зупиняємо наш щойно запущений сервіс, тим самим вимикаємо mySQL. І зі вказаної папки з диску С: копіюємо всі файли створені інсталятором.

         Все в нас є сервер з повністю відконфігурованими усіма параметрами, тобто залишилося тільки зробити з ним щось таке, щоб він сам запрацював на іншому комп’ютері. А робиться це так, для зручності нам потрібно щоб файл був один, тобто запакуємо його, але не так як зазвичай, а відшукаємо в архіваторі опцію яка забороняє\недозволяє вибирати шлях при розпакуванні файлів, шукаємо пункт SFX архів.

         Після розархівації нам потрібно буде запустити

 

mysqld.exe --install

 

саме це є «ручний» інсталятор mySQL а так, як в файлі my.ini містяться коректні налаштування (які ми ввели при переустановці mySQL) інсталятор підтягне всі параметри включаючи і наші імпортовані БД.

         Так і робимо, шукаємо опцію після розпаковки запустити і вводимо «C:\myISDBV100\mysqld --install». Ми заборонили користувачу змінювати директорію, тому файл обов’язково буде там міститися.

         Ось і сервер запустився нам певно не вистачає інсталяції myODBC Connector. Ситуація виправляється якщо зкачати файл mysql-connector-odbc-noinstall-3.51.27-win32.zip з офіційного сайту.

         Далі потрібно йго розпакувати і відшукати файл mysql-connector-odbc-noinstall-3.51.27-win32\Install.bat розробник стверджує, що, якщо запустити його з параметром 0 тобто

 

Install.bat 0

 

відбудеться автоматична інсталяція драйвера «регулярному вигляді», що нам і потрібно.

         Робимо все по накатаній схемі запаковуємо в SFX архів, забороняємо зміну шляху, і по закінченні розпаковки викликаємо Install.bat 0.

         Все myODBC Connector поставився в системі.

 

         Накінець нам потрібно створити аліас, як? Просто всі параметри ми знаємо так, як пароль і порт вказали в преінсталяції СКБД, ім’я БД ми знаємо, так як самі її робили, залишилося записати ці всі данні в потрібному місці, таким місцем є системний реєстр.

         Всі відомості про аліаси зберігаються в розділі

 

HKEY_CURRENT_USER\ Software\ODBC\ODBC.INI\<Ім’я нашого аліасу>

 

в цій гілці системного реєстру мусять бути такі ключі

 

Ім’я Ключа

Значення

DATABASE

Ім’я бази

DRIVER

%Системний шлях%\system32\myodbc3.dll

PWD

<Пароль до БД>

SERVER

<Ім’я, або IP адресса сервера>

PORT

<Порт СКБД>

STMT

set names 'cp1251'

USER

<Логін>

 

HKEY_CURRENT_USER\ Software\ODBC\ODBC.INI\ ODBC Data Sources

 

мусить міститися такий запис

 

<Ім’я аліасу>      MySQL ODBC 3.51 Driver

 

         Перезавантажувати комп’ютер не потрібно аліас одразу ж стає доступним в системі.

 

         Програмний код, який реалізує добавлення в реєстр нового аліасу має виглад:

 

procedure TForm1.Button1Click(Sender: TObject);

Var

 R:TRegistry;

 buff:Array[0..254] of Char;

 sysdir:String;

begin

try

 R:=TRegistry.Create;

 R.RootKey:=HKEY_CURRENT_USER;

 R.OpenKey('\Software\ODBC\ODBC.INI\'+Edit1.Text,True);

 R.WriteString('Database',Edit2.Text);

 GetSystemDirectoryA(buff,254);

 sysdir:=buff;

 R.WriteString('Driver',sysdir+'\myodbc3.dll');

 R.WriteString('Password',Edit5.Text);

 R.WriteString('User',Edit4.Text);

 R.WriteString('Port',Edit6.Text);

 R.WriteString('Server',Edit3.Text);

 R.WriteString('STMT',Edit7.Text);

 R.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',True);

 R.WriteString(Edit1.Text,'MySQL ODBC 3.51 Driver');

except

 MessageBoxA(handle,'Ошибка создания алиаса.','!Ошибка!',MB_ICONERROR);

 end;

end;

 

         Суттєвим також є те, що ми можемо самі контролювати процес інсталяції нашої ІС, тобто якщо відштовхнутися від того, що наша ІС також заархівована в саморозпаковуючимся архівом ми маємо чотири дії:

  • розпакувати СКБД;
  • розпакувати MySQL ODBC 3.51 Driver;
  • розпакувати наш програмний додаток;
  • виконати mysqld.exe –install для застосування збереженої конфігурації на «чистій» машині;
  • виконати Install.bat 0 для інсталяціїї MySQL ODBC драйверу;
  • створення аліасу;

         Перших три пункти об’єднуємо в одне ціле (пакуємо в один архів), додаємо програму (наприклад finish.exe) яку і викличемо по закінченні розпаковки архіву. Так як програма вже може створити аліас (по наведеному вище прикладу) залишилося «навчити» інсталяційний додаток виконати 4 і 5 зі списку, в цьому нам допоможе системна функція ShellExecute. Для того щоб мати можлівість нею скористатися потрібно оголосити допоміжний модуль ShellAPI, його потрібно розмістити в розділі Uses.

         Процедура має такий синтаксис:

 

ShellExecute (hWnd: HWND; Operation: PChar; FileName: PChar; Parametrs: PChar; Directory: PChar; CmdShow: Integer): HINST;

 

де

         hWnd – індентифікатор вікна яке викликає функцію (Form1.Handle)

         Operation – може бути «порожнім» (nil). Також із варіантів значень Open (відкрити файл) Print (роздрукувати файл) Explore (показати місцерозташування, виділить файл у відкритому вікні провідника)

         FileName – ім’я файлу над яким виконується дія

         Parametrs – параметри (використовується якщо файл має виконувальний тип) може бути nil (порожнім)

         Directory – розташування файлу в файловій системі (якщо передати nil буде поточний каталог)

         CmdShow – команда відображення вікна (в нашому випадку SW_RESTORE, запуск в мінімізованому вигляді, SW_SHOW – вікно програми відобразиться на моніторі)

 

         Отже, якщо в кінець наведеної процедури додати два рядки, а саме

 

ShellExecute(Form1.Handle,nil,'%шлях до СКБД%\mysqld.exe',’–install’,’ %шлях до СКБД%’, SW_RESTORE);

ShellExecute(Form1.Handle,nil,'%шлях до розпакованого драйвера ODBC%\Install.bat',’0’,’ %шлях до ODBC%’, SW_RESTORE);

 

то наша «заготовка» сама зробить всі потрібні нам дії в мімімізованому режимі. Користувач при запуску побачить тільки вікно з надписом «Натисніть далі, щоб розпакувати архів», після чого наша програма інсталяції згорнеться в системній панелі, зробить все, а потім, коли архіватор точекається поки наш інсталяційний додаток завершить свою роботу, видасть повідомлення «файли успішно розпаковані, натисніть готово». Все, користувач знайде нашу ІС в потрібній директорії.