Главная » Хабрахабр » [Из песочницы] WiX.Py: cобираем MSI пакет «в три строчки»

[Из песочницы] WiX.Py: cобираем MSI пакет «в три строчки»

Хотите собирать инсталлер, описывая его простыми и понятными терминами, в несколько строк? Нет времени и желания изучать километровые файлы WiX, чтобы собрать MSI инсталлер для своего проекта, погружаясь при этом в бездны MSDN? Ну тогда вам под кат! Есть клиническая склонность к кроссплатформенности и сборкам под Linux & Docker?

Разработчики поневоле

Собственно говоря, именно с этими "хотелками" наш проект кросс-платформенного редактора векторной графики и столкнулся пару месяцев назад.

Использовали более простой MakeMsi, но в нем была масса недоработок. Мы знали про WiX Toolset (Windows Installer XML), но даже беглый просмотр туториалов на официальном сайте навевал грусть и уныние — без серьезного погружения в XML описания инсталляторов не обойтись. И опять же, все эти инструменты не годились для сборки MSI под Linux.

Поиски привели к проекту wixl, который собирал MSI в Linux, но страдал серьезной недоработкой по функционалу и требовал те же XML файлы чудовищных размеров, что и WiX.

Так и появился WIX. В результате, чтобы обзавестись нужным инструментом для сборки, мы переимплементили логику wixl на python, исправив многие недочеты и добавив необходимый функционал, и сделали проект кроссплатформенным. Py — сборщик MSI с весьма низким порогом вхождения.

Как WiX.Py работает

Процесс создания MSI пакета упрощен до предела:

  1. build) формируем содержимое для инсталляции в том виде, в котором оно будет на целевом компьютере. В произвольной папке (напр.

  2. Например: Заполняем небольшой JSON-файл.


    ], "_SourceDir": "build/", "_InstallDir": "myapp-0.1", "_OutputName": "myapp-0.1_win64.msi", "_OutputDir": "./"
    }

  3. Генерируем MSI пакет командой:

    wix.py <имя_файла>.json

Никакой магии и шаманства с регистром. Да, это полностью рабочий пример MSI пакета, который проверит перед установкой, что Windows 64bit, установит приложение в Program Files, добавит приложение в программное меню и на рабочий стол, и привяжет указанные форматы файлов к устанавливаемому приложению.

Можно еще больше сократить пример до 5-6 строк, но тогда функционал инсталлятора будет ну совсем куцый.

Py, cборку MSI можно проводить как в Windows, так и в Linux, в т.ч. Используя WiX. Поскольку базовая libmsi может быть собрана на многих других UNIX-системах (напр. в Docker-контейнерах. Py можно и на них использовать, только практического смысла это не несет. macOS), формально WiX.

Описание различных нюансов вы можете найти в документации проекта.

Заключение

Py для решения задач по созданию MSI пакетов, но не хватает какого-либо функционала, заходите на наш сайт https://wix.sk1project.net и создавайте запрос на расширение функционала. Если вам подходит WiX. Там же на сайте найдете исходный код и готовые пакеты для разных платформ. Тоже самое касается обнаруженных багов — сообщайте и мы будем с ними бороться.

Если присутствует желание сравнить с WiX, то на Хабре уже не раз были статьи, посвященные WiX: 1, 2, 3, 4.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Не позволяйте 3D-принтеру лениться

Наверное, у каждого из нас есть гаджет или устройство, которые мы не используем: тренажёр, плеер, кухонный инвентарь, всякие странные штуки для автомобиля, шнуры, хабы и проч. Лежат они, новенькие, с гарантийниками и годами ждут своего часа, которому чаще всего уже ...

[Перевод] Знакомимся с альфа-версией снапшотов томов в Kubernetes

перев.: оригинальная статья была недавно опубликована в блоге Kubernetes и написана сотрудниками компаний Google и Huawei (Jing Xu, Xing Yang, Saad Ali), активную деятельность которых вы непременно видели в GitHub'е проекта, если когда-либо интересовались фичами и проблемами K8s, связанными с ...