створення файлів

Як підготувати старі додатки до роботи з Windows Installer за допомогою WinINSTALL LE

Колись для установки програми було достатньо скопіювати на жорсткий диск пару файлів, можливо, вказавши при цьому інший каталог. Але більшість сучасних прикладних програм складається з безлічі файлів, в тому числі окремої програми спеціально для установки програми. Як правило, програми установки виконують кілька функцій. По-перше, вони створюють один або два каталогу програми для зберігання програмних файлів і даних. По-друге, вони розміщують динамічні бібліотеки (DLL) на жорсткому диску машини, але не завжди в каталогах нового додатка; часто DLL розміщуються в каталозі \ winnt або \ winnt \ system32 (незважаючи на можливість конфліктів прикладних DLL, збережених в цих каталогах, з бібліотеками DLL операційної системи та інших програм). По-третє, більшість додатків асоційовані з певними розширеннями файлів і повинні зберегти ряд параметрів конфігурації, тому програма установки заносить розширення файлу і параметри конфігурації до реєстру. Нарешті, інсталятори додатків зазвичай поміщають окремий пункт в меню Start, Programs. З цього переліку операцій видно, чому програми установки такі великі - їм необхідно виконувати безліч завдань.

БУДУЄМО ПАКЕТ .MSI

Для створення .msi-файлів в WinINSTALL LE використовується метод моментального знімка, перевірений часом спосіб опису і інкапсуляції додатків. Щоб згенерувати .msi-файл для прикладної програми, слід приступати до роботи на. які раніше не експлуатувалося настільному ПК, який я називаю прототипом - я завжди користуюся утилітою Symantec Ghost або службами Microsoft Remote Installation Services (RIS), щоб очистити диск прототипу і почати з чистого аркуша.

Перш ніж інсталювати додаток, слід запустити програму discoz.exe пакета WinINSTALL LE, яка складає список файлів, каталогів і елементів реєстру на прототипі - іншими словами, discoz.exe генерує моментальний знімок вихідного стану системи. Потім на прототипі встановлюється новий додаток і проводиться його настройка відповідно до вимог користувача. Для фіксування будь-яких змін реєстру комп'ютер слід перезавантажити - іноді ця операція не обов'язкова, але вона ніколи не шкодить. Потім програма discoz.exe запускається знову. Вона генерує постінсталляціонний моментальний знімок, відзначаючи все нові файли, зміни в реєстрі і програмні ярлики. Discoz.exe збирає всю інформацію про зміни в зазначеному користувачем місці і будує відповідний .msi-файл. У .msi-файлі міститься інформація про зміни каталогів, файлів і реєстру, а також набір інструкцій для Windows Installer.

Я опускаю подробиці роботи Windows Installer, обмежившись двома рекомендаціями. По-перше, при підготовці WinINSTALL до створення попереднього моментального знімка програма запитує, чи слід виконати розширену перевірку реєстру (Enhanced Registry Scan). Перевірка завжди корисна, цей прапорець слід зазначити. По-друге, система підказки WinINSTALL пропонує не тримати discoz.exe на прототипі. Краще встановити discoz.exe на іншому ПК і виділити в загальне користування каталог програми в каталозі \ Program Files другого комп'ютера. Слід під'єднатися до цього загальному каталогу і запустити discoz.exe з нього.

ІНСТАЛЯЦІЯ ПАКЕТУ

Тепер прийшов час поглянути на каталог .msi-файлу, в якому відображені файли і структура встановлюваного програми. Працюючи над цією статтею, я створив .msi-файл для Lotus Organizer 6. Даний пакет містив каталог з ім'ям Lotus, і застосування .msi-файлу змушує Windows Installer створити і заповнити файлами каталог з цим ім'ям. У моєму пакеті є також каталог з ім'ям \ winnt, з чого я зробив висновок, що фірма Lotus створила Organizer з порушенням правил установки. З каталогу .msi-файлу можна дізнатися і точний обсяг простору, займаного додатком на жорсткому диску - в .msi-файлі немає стислих файлів, які зменшують розмір встановленої програми.

Отримавши .msi-версію прикладної програми, можна інсталювати додаток одним з трьох способів. По-перше, просто двічі клацнути на msi-файлі. По-друге, використовувати команду Msiexec / i, щоб неявно завантажити файл з командного рядка. Наприклад, команда, показана на Екрані 1. інсталює пакет pilotdesk.msi з каталогу \ pilotdesk в каталозі додатків на server1 (як і більшість параметрів команд в Windows, ключ / i нечутливий до регістру.) По-третє, можна скористатися політиками Group Policy, щоб створити політику розгортання програмного забезпечення (це тема для окремої статті).

Після ряду експериментів я переконався, що Windows Installer можна викликати подвійним клацанням на .msi-файлі або командою Msiexec / i з командного рядка: ці методи не дозволили інсталювати Organizer, коли я зареєструвався як користувач без адміністративних повноважень. Але коли я задіяв групову політику Group Policy для нового .msi-файлу, щоб призначити Organizer того ж користувачеві, а потім зареєструвався від імені цього користувача, і вибрав пункти меню Start, Programs, Organizer, то Organizer був встановлений без проблем.

Чому ж мені не вдалося інсталювати .msi-файл Organizer подвійним клацанням миші або по команді Msiexec? По-перше, програма Setup додатки Organizer розміщує деякі файли в каталогах \ winnt та \ winnt \ system32, а за замовчуванням користувачі без спеціальних повноважень можуть тільки переглядати файли в цих каталогах. По-друге, програма Setup додатки Organizer виробляє запис в два розділи реєстру: HKEY_LOCAL_MACHINE \ SOFTWARE і HKEY_CURRENT_USER \ Software. Для кожного облікового запису користувача є власний розділ HKEY_CURRENT_USER \ Software, в який користувачі можуть безперешкодно вносити зміни. Але тільки власник облікового запису System і члени локальної групи Administrators можуть зробити запис у розділ HKEY_LOCAL_MACHINE.

Після того, як .msi-файл Organizer був пов'язаний з моїм обліковим записом за допомогою політик Group Policy, виявилося прикра обставина: інсталяція Organizer відбувалася всякий раз, коли я реєструвався, незалежно від того, була запущена програма чи ні. Це сталося тому, що Organizer не тільки вніс своє ім'я в стандартне меню програм, але і помістив свій ярлик в мою папку Startup. У процесі реєстрації ярлик активізувався, і починалася установка Organizer. Тому я перебудував систему на прототипі і видалив елемент Organizer з папки Startup.

Автоматичний виклик деяких інших додатків, для яких мною були створені .msi-файли, відбувався з іншої причини: їм відповідали елементи в менш відомому розділі HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run (елементи деяких програм можуть розміщуватися і в файлі параметрів конфігурації win.ini, хоча я не зустрічав їх вже кілька років). З усього сказаного можна зробити висновок, що потрібно бути готовим кілька разів перебудовувати .msi-файл, не забуваючи кожного разу перевіряти його.

ВИКОРИСТАННЯ підручних засобів

Мені часто ставлять запитання, навіщо потрібно надавати облікові записи рівня Administrator користувачам, дозволяючи їм встановлювати програми на своїх машинах. Тепер відповідь на це питання очевидна: подібно Lotus Organizer, багато програм установки додатків роблять запис в каталоги і розділи реєстру, недоступні користувачам, які не мають адміністративних прав. Але додатків немає необхідності розміщувати DLL в системних каталогах або записувати елементи в розділ реєстру HKEY_LOCAL_MACHINE.

Поділіться матеріалом з колегами і друзями

Схожі статті