Як зробити інсталятор
Одним з компонентів професійно написаної програми є інсталятор - утиліта, яка дозволяє встановити програму на диск. Найпростіший спосіб - скористатися готовим інсталятором, наприклад, InstallShield, що поставляється разом з Delphi, але цікавіше створити таку утиліту засобами Delphi, а заодно обговорити багато практичних питань. У цьому завданні ми займемося створенням саме такої утиліти.
Давайте подивимося на початкові умови. Утиліта має працювати в Windows, її основні функції повинні складатися з:
• запиту каталогу для установки програми і її компонентів;
• створення групи в Program Manager або Explorer;
• створення іконки для запуску програми;
• збереження необхідних параметрів в реєстраторі.
Розташуємо всі використовувані візуальні компоненти в формі і в міру необхідності будемо змінювати значення їх властивості Visible, тобто робити їх видимими або невидимими. Також нам потрібні дві глобальні змінні: InstPath типу String, в яку занесемо ім'я каталогу для копіювання файлів, і Step типу Byte, в якій буде зберігатися поточний етап роботи програми. Мінлива Step необхідна для того, щоб при передчасному завершенні роботи програми можна було скасувати всі вироблені дії. Для цього створимо наступний оброблювач натискання кнопки:
procedure Tform1.Button2Click (Sender: TObject);
If (Sender AS Tbutton) .Caption = 'Cancel' Then
If MessageDlg ( 'Ви хочете перервати установку?'), MtWarning,
MbOkCancel, 0) = mrOk
Необхідність перевірки значення властивості Caption компонента TButton викликана тим, що по ходу роботи програми ми будемо часто змінювати його.
Відображаємо початковий екран нашого інсталятора і чекаємо натискання клавіші.
Користувач може натиснути кнопку Next і перейти до першого кроку, або кнопку Cancel і завершити програму.
Після того як ім'я каталогу введено (в якості вправи можна вибрати каталог зі списку наявних - для цього використовуються компоненти, розташовані в палітрі компонентів на сторінці System), приступаємо до безпосереднього копіювання необхідних файлів. Так як ця задача сильно залежить від конкретного додатка, пропоную вам наступний код, який можна доповнити за своїм розсудом:
Примітка. змінна From - це глобальна змінна, яка вказує джерело файлів для копіювання
Result: = FindFirst (From + '*. *', FaArchive, SearchRec);
While Result = 0 do