Статті - visual patch

Статті - visual patch
Ви розробили новий програмний продукт і почали його продавати. Продукт вдалий, продається добре, користувачі задоволені. Але, як відомо, в будь-якому продукті обов'язково виявляються помилки. Помилки ви оперативно виправляєте, нова версія продукту готова. Виникає питання - як її поширити серед користувачів?

Питання не так тривіальний, як це може здатися. Так, звичайно, можна викласти дистрибутив нової версії у себе на сайті - нехай користувачі його скачують і встановлюють. Однак цей спосіб оптимальний не завжди.

Проблеми виникають в тому випадку, якщо: а) дистрибутив вашого продукту досить об'ємний; б) ви намагаєтеся йти в ногу з часом, тому помилки виправляєте оперативно, і нові мінорні версії продукту регулярно з'являються у вас сайті. Далеко не кожному користувачеві сподобається постійно викачувати десятки і сотні мегабайт. І безлімітний Інтернет є далеко не у всіх, і часу таке викачування займає пристойно. Найприкріше, що велика частина викачувати інформації у користувача вже є. Якщо програма установки містить 10 файлів, а виправлення ви внесли тільки в один, то 9 з 10 файлів користувач завантажить даремно. І в останньому файлі, часом, змінені лише кілька байт.

Проблема вирішується шляхом використання технології створення патчів або "латочок". Якщо дистрибутив продукту містить абсолютно всі файли, необхідні для установки продукту на комп'ютер користувача, то патч включає лише зміни, необхідні для поновлення вже встановленого продукту до нової версії. Характерно, що модифікований файл, як правило, не включається до патч цілком - замість цього в патч записуються лише внесені в цей файл зміни, у вигляді так званої "дельти". В результаті, розміри таких патчів не йдуть ні в яке порівняння з розміром повного дистрибутива. Технологія створінь патчів широко застосовується, зокрема, в ігровій індустрії. Якщо середні розміри ігор сейсчас складають гігабайти, то середні розміри патчів до них - як мінімум на порядок менше.

Створити патч для текстового або бінарного файлу не так складно. Наприклад, можна скористатися стандартними засобами від Microsoft. входять в Platform SDK. Або використовувати безкоштовну утиліту XDelta for Windows. Однак, можливість обчислення "дельти" між двома файлами - це далеко не все, що потрібно для ефективної роботи. На практиці виникає маса інших проблем. Система створення патчів повинна вміти самостійно визначати, які саме файли необхідно включити в патч. Создаваеми патчі повинні бути самораспаковивающімеся. У процесі роботи вони повинні вміти розпізнавати версію продукту, встановлену на комп'ютері користувача і спрацьовувати тільки в тому випадку, якщо версія підходяща. У багатьох випадках патчі повинні вміти виконувати ряд дій, пов'язаних з оновленням - змінювати ключі регістра, звертатися до баз даних, взаємодіяти з користувачем через графічно інтерфейс і т.д. і т.п. Іншими словами, якщо ви плануєте регулярне створення патчів, має сенс задуматися про спеціальному програмному забезпеченні. призначеному для цих цілей.

Компанія Indigo Rose випускає цілу лінійку продуктів, пов'язаних з різними аспектами поширення програмного забезпечення. У неї входять продукт TrueUpdate. призначений для автомататізаціі поновлення, продукти MSI Factory і Software Factory - для розробки програм установки. Є в ній і продукт, призначений саме для створення патчів - Visual Patch.

Можливості Visual Patch вражають. Простота використання, потужний і швидкий алгоритм бінарного порівняння файлів, легко справляється з гігабайтними файлами і базується на технології DeltaMAX. підтримка скриптів, тим, простота інтеграції з TrueUpdate і багато іншого. Має сенс придивитися до цього продукту уважніше.

Створення патчів в Visual Patch

Робота в Visual Patch починається зі створення нового проекту. Точніше - з запуску покрокового майстра, що створює проект. На першому кроці ви вказуєте назву вашої компанії і назва продукту. На наступному - вибираєте тип інтерфейсу користувача, який буде реалізований в створюваному патчі. Можливі варіанти - діалог у вигляді "майстра", прості діалогові вікна і безінтерфейсний варіант, в якому патч ставиться приховано від користувача, не ставлячи питань і не відображаючи будь-яких вікон.

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

Статті - visual patch

Майстер створення проекту. Задаємо список версій

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

Статті - visual patch

Останній крок у майстра створення проекту

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

Статті - visual patch

Інтерфейс головного вікна Visual Patch

Після того, як всі необхідні настройки виконані, залишається, власне, зібрати патч. Для цього необхідно дати команду "Publish-> Build" і вказати версії, які повинні бути використані при створенні патча.

Статті - visual patch

Процес створення патча

Згідно з документацією, Visual Patch дозволяє створювати три види патчів: інкрементальні, мультіверсіонние і патчі з повною історією. Інкрементальний патч дозволяє виконати оновлення лише однієї конкретної версії. Мультіверсіонний придатний для оновлення декількох версій. Патч з повною історією здатний оновити будь-яку версію продукту до поточної.

На практиці, необхідно вибрати як мінімум дві версії - початкову і кінцеву. Якщо, наприклад, ви виберете версії 1, 2 і 3 то патч буде здатний оновити встановлені версії 1 і 2 до кінцевої версії 3. Якщо вкажіть версії 1 і 4, то патч зможе оновлювати версію 1 до версії 4. І т.д.

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

Міць Visual Patch - підтримка скриптів.

Стандартні можливості патчів, що створюються за допомогою Visual Patch, дуже широкі, проте в деяких випадках їх може виявитися недостатньо. Наприклад, може виникнути потреба:
  • навчити патч відрізняти пробну версію від повнофункціональної;
  • діяти по різному в залежності від того, є підключення до Інтернет чи ні;
  • підключатися до бази даних і записувати в неї необхідну інформацію.
Подібних ситуацій, коли сценарій роботи патча необхідно модифікувати якимось специфічним чином, на практиці може виникнути безліч. Чудовим властивістю Visual Patch є те, що він дозволяють легко впоратися з такими ситуаціями, дозволяючи програмувати власні сценарії роботи патча. Робиться це з застосуванням дій ( "actions"), скриптів і плагінів.

Статті - visual patch

Якщо коротко, то дії - це виклики високорівневих функцій, які патч може виконувати в процесі виконання. Кожна дія - це коротка текстова інструкція, яка говорить патч виконати що-небудь - відкрити документ, скачати файл, звернутися до бази даних, вважати ключ реєстру і т.д. Visual Patch забезпечений багатою бібліотекою таких функцій, що дозволяють працювати з рядками, файлами, базами даних, Інтернет, XML і т.д. і т.п. Модулі дозволяють підключити додаткові дії, а скрипти - задавати послідовність виконання дій. Як скриптового мови в Visual Patch використовується мова LUA.

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

Скрипти можуть використовуватися і в інших місцях проекту. Наприклад, в розділі "Screens" у властивостях проекту можна задати власний набір вікон, складових графічний інтерфейс патча і для кожного вікна прописати скрипт, що задає його функціональність.

Висновки. Express-версія.

Visual Patch - приклад продукту, в якому вдало поєднуються простота використання і потужний функціонал. Продукт без проблем може використовуватися непрограмістів для створення патчів різноманітних бінарних файлів - каталогів, музичних, графічних файлів і т.д. Але найбільші можливості відкриваються, звичайно ж, для тих, хто готовий зайнятися програмуванням - підтримка скриптів дозволяє вирішувати за допомогою Visual Patch практично будь-які завдання, пов'язані зі створенням патчів.

До речі, для непрограмістів є спеціальна, дешевша версія Visual Patch Express. в якій відключені можливості використання скриптів і створення мультіверсіонних патчів.

Створення патча для великого бінарного файлу. Результати найпростішого тесту.