Більш детальне знайомство з процесом установки, та конфігурації середовища роботи з 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);
то наша «заготовка» сама зробить всі потрібні нам дії в мімімізованому режимі. Користувач при запуску побачить тільки вікно з надписом «Натисніть далі, щоб розпакувати архів», після чого наша програма інсталяції згорнеться в системній панелі, зробить все, а потім, коли архіватор точекається поки наш інсталяційний додаток завершить свою роботу, видасть повідомлення «файли успішно розпаковані, натисніть готово». Все, користувач знайде нашу ІС в потрібній директорії.