Wix faq

Загальні питання

Що таке WiX?

Windows Installer XML (WiX) - це набір інструментів з відкритим вихідним кодом, що дозволяють збирати з XML-описів пакети формату Windows Installer.

WiX - перший продуктом компанії Microsoft, який став розвиватися на майданчику SourceForge і поширюватися під відкритою ліцензією CPL (двома іншими пізніше стали Windows Template Library і FlexWiki).

До складу WiX входить ряд консольних утиліт:

  • candle - препроцесор / компілятор
  • light - компоновщик
  • lit - управління бібліотеками
  • dark - декомпілятор
  • tallow - утиліта для автогенерации коду

Де ще можна знайти інформацію по WiX?

Чому б замість WiX не використовувати ...?

Звідки можна завантажити останню версію WiX?

Релізи WiX розміщені на SourceForge: WiX 2.0 + Votive2. WiX 3.0 + Votive 3. Крім того, розробники WiX дотримуються практики щотижневих релізів.

Можна мені взяти участь в розробці?

ТАК! Вам потрібно лише підписати угоду. після чого ви можете вносити поліпшення і відсилати правки на [email protected].

Як встановити WiX?

Перш за все, встановіть .NET Framework 1.1 і SP1 для нього. Інструменти WiX працюють під .NET, а без SP1 ви можете зіткнутися з випадковими помилками при парсінгу великих XML-файлів. NET Framework потрібно тільки для роботи утиліт WiX; готовий інсталяційний пакет не вимагає прісутстувія .NET на цільовій машині.

При установці, WiX не вимагає особливих налаштувань - досить розгорнути .zip-архів в яку-небудь папку.

Для того, щоб при редагуванні .wix-файлів в Visual Studio працював IntelliSense, потрібно помістити XML-схеми WiX (wix.xsd, wixloc.xsd) в відповідну папку:

Як працювати з проектом WiX безпосередньо в Visual Studio?

Саме для цього і був розроблений Votive.

Votive - це розширення (Add-In) для Visual Studio. Він дозволяє створювати «WiX-проекти», які можна включати в solution і які діють точно так же, як і будь-які інші типи проектів. Всі інструменти WiX включені до складу Votive, тому для роботи з ним не потрібно встановлювати WiX окремо - це може знадобитися вже тільки для автоматичного складання установника.

Чи є простий спосіб намалювати інтерфейс (UI) установника?

Існує ряд проектів, які надають можливість WYSIWYG-редагування екранів установника:

Як мені отримати нове значення GUID?

Значення GUID використовуються WiX в якості ідентифікаторів різних об'єктів, таких як продукт (Product) або компонент (Component), і WiX передбачає, що ви самі виберете потрібні значення і вкажіть їх в XML-файлі. Для генерації значень ви можете використовувати утиліти, такі як uuidgen або guidgen (з VS - команда Tools | Create GUID), але переконайтеся, що використовується верхній регістр символів і значення не оточений фігурними дужками.

При роботі в Visual Studio можна використовувати простий макрос. на який можна призначити комбінацію клавіш, або використовувати GUIDGen.NET.

Як змінити іконку продукту, яку видно в списку «Установка і видалення програм»?

Вкажіть у властивості ARPPRODUCTICON ідентифікатор потрібної іконки. наприклад:

Як автоматично додати в інсталятор всі файли з заданої папки?

За ідеєю, такої можливості немає.

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

Існує інструмент mallow. дозволяє автоматично збирати список файлів в директорії і піддиректоріях, і генерує також компоненти і теги Directory, що дозволяє підключати отриманий файл так, що все поддерево директорій і файли будуть включені в пакет установки і встановлені у вигляді такого ж поддерева в задану папку.

Як зареєструвати COM DLL?

Рекомендований спосіб полягає в тому, щоб зібрати всю реєстраційну інформацію і включити її в компонент (тег Component) для цієї DLL в вигляді тегів TypeLib, Class, Interface, ProgID ітд. і, як останній засіб - тег Registry. В якості початкового матеріалу ви можете використовувати результат роботи утиліти tallow (або поліпшеною tallow. Або wixtlib для бібліотек типів). наприклад:

Якщо для DLL потрібно само-реєстрація, вкажіть в тезі File атрибут SelfRegCost:

Але майте на увазі, що використання саморегистрации вкрай неодобряемого. оскільки вона підриває можливість Windows Installer управляти установкою реєстраційної інформації.

Як встановити .NET-збірку в GAC?

Встановіть для тега File атрибути Assembly і AssemblyManifest, але не вказуйте атрибут AssemblyApplication. наприклад:

Така збірка не буде встановлено до фази «commit», тому до цього її неможливо буде використовувати в custom actions.

Якщо ви передумаєте і вирішите не включати складання в GAC, встановіть атрибут AssemblyApplication в той же значення що і атрибут AssemblyManifest.

Як перевірити, чи встановлені необхідні системні компоненти (prerequisites)?

Основна ідея полягає в тому щоб перевіряти властивість, яке встановлюється по-різному в залежності від наявності компонента і його версії. Ви можете створити умова запуску установки, помістивши тег Condition всередині Product, наприклад:

Для перевірки версії ОС ви можете використовувати зумовлені властивості - такі як VersionNT або Version9X, для перевірки версії .NET Framework - MsiNetAssemblySupport.

Для пошуку компонента, встановленого з MSI, можна використовувати пошук по GUID тегом ComponentSearch. Для компонента Windows, такого як IIS, може знадобитися пошук по реєстру, наприклад:

До установки .MSI-пакета потрібно автоматично встановити <системный компонент …>. Як це зробити?

Проблема встановлення та оновлення системних компонентів (prerequisites), таких як .NET Framework, MDAC, MSDE і ін. Вирішується використанням програми-bootstrapper, завдання якої - встановити і оновити всі потрібні компоненти, після чого запустити на виконання ваш .MSI-пакет.

Існує кілька таких програм:

Коли слід змінювати код продукту, код пакета ітд.?

Є три важливих GUID, які визначають ваш інсталяційний пакет, і які особливо важливі для оновлень продукту:

  • код пакета (Package Code) зазвичай має побут своїм для кожного .msi-файлу
  • код продукту (Product Code) ідентифікує групу пакетів, з яких тільки один може бути встановлений в кожен момент часу. Наприклад, два пакети можуть мати один і той же код продукту, якщо вони є локалізаціями на різні мови. Якщо ви хочете надати користувачам оновлюватися з однієї версії на іншу без обов'язкової деінсталяції (т.зв. major upgrade), то кожна версія повинна мати власний код продукту, тому зазвичай новий випуск з новим номером версії служить підставою для зміни коду продукту.
  • код оновлення (Upgrade Code) ідентифікує групу пакетів, всі з яких можуть бути оновлені до одного нового продукту. Зазвичай, код поновлення збігається для всіх версій, які не можуть бути встановлені одночасно (side-by-side), тим самим дозволяючи попередніх його версій визначати наявність новіших і відмовлятися від установки при цьому, а також нових версій визначати наявність старіших і автоматично оновлювати їх.

Як я можу розширити функціональність WiX?

локалізація

Як отримати .MSI-пакет російською мовою?

Під керівництвом Gabor DEAK JAHN існує т.зв. WiX Localization Project. який об'єднує зусилля з написання файлів локалізації (.wxl-файлів) для всіх основних мов. У дистрибутив останніх версій WiX входить 4 мовних файлу (для en-US, de-DE, es-ES і nl-NL), хоча ще 9 мовних файлів (в т.ч. і ru-RU) числяться в списку як завершення.

За основу локалізації береться файл WixUI_en-us.wxl, основна частина повідомлень відноситься до Windows Installer, їх переклад грунтується на файлі Intl.zip з MSI SDK. Переклад інших повідомлень виконується безпосередньо з англомовного файлу.

«Неофіційний» файл локалізації WixUI_ru-ru.wxl можна взяти тут.

Російське ім'я продукту відображається як.

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

Copyright © 2024