Дзен WiX/MSI
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 29.07.13 13:12
Оценка: 57 (24) +17 :))) :))) :))) :))) :))) :))) :)
Вот какой расклад. Есть у меня продукт, ориентированный на Microsoft-centric корпоративный рынок (HgLab). Правилом хорошего тона там является наличие установщика в виде MSI-пакета, коий я и пытаюсь сочинить уже практически неделю.

Я считаю себя неглупым человеком. Плюс, за годы у меня (как и у многих, думаю) выработался инстинкт, которой периодически подсказывает, что, мол "вот то, что ты делаешь -- слишком сложно, давай-ка поищи решение попроще". И вот в случае с WiX/MSI это чутье начало давать сбои; как-то не выходит продраться через этот лес отсутствия логики, дизайна и здравого смысла. Поначалу я чувствовал себя умственно отсталым. Как же так? Хвалят же, разбираются же, пишут же инсталляторы -- а у меня не выходит... А потом я постиг дзен.

При работе с WiX/MSI нет простых способов сделать что бы то ни было. Абсолютно. Если есть два относительно простых и логичных пути сделать что-то, то MSI пойдет по своему, третьему и абслютно неадекватному. Набор стандартных, единообразных, диалогов и элементов оформления? Нет, рисуйте все сами. Нормальная поддержка кнопки "Назад"? Увы. Взаимоисключающие компоненты? Обойдетесь. Локализация? И не вспоминайте. Единый установщик для 32 и 64 бит? Не в этой жизни. Зависимости? Мимо. Хоть сколько-нибудь сложные выражения? Да ну откуда...

Но зато! Рассовать весь инсталлятор по таблицам? Да-да-да, и побольше! Установка по требованию пользователя (advertised)? Пожалуйста, это очень нужная в 90% возможность. Алогичные правила по установке и удалению ярлыков и файлов? Сколько угодно! Три варианта апгрейдов? Извольте! Поддержка имен 8.3? Конечно-конечно. Пакеты трансформаций? К вашим услугам!

Вот к каким выводам я пришел (извините, наболело).

MSI — overengineered bloatware с тянущимися со времен Windows 95 потрохами и костылями, отрезать которые Microsoft не в состоянии в силу своей ненормальноый привязанности к обеспечению обратной совместимости; MSI был создан самыми лучшими, самыми высоколобыми архитектурными астронавтами и написан худшими, рукожопейшими индусами; MSI вобрал в себя худшее из пакетных менеджеров, бандлов, установок в стиле Windows 3.11 и DOS; MSI загажен необъясинмыми противоречиями и ограничениями.

И вот поверх всего этого угара мы имеем WiX, который вроде как "зе бест"" для создания пакетов MSI, а на деле оказывается тонюсенькой прослоечкой. Никакой абстракции, никакого упрощения жизни для того подавляющего большинства вариантов использования, когда надо сказать "вот мои скомпилированные артефакты, собери из них установщик и не канифоль мне мозги гуидами, компонентами, директориями и keyPath'ами". Нет. Мы просто берем "реляционные" таблицы из MSI и напяливаем их на чрезвычайно человеколюбивый XML. Попутно не забываем обо всех косяках и идиосинкразиях исходного формата и гордо выставляем их напоказ. А, и еще называем все утилиты из toolchain'а невообразимыми и незапоминающимися именами (votive? candle? light? tallow? mallow? упоролись все?) и -- вуаля! -- получаем WiX.

Все это очень печально, господа. Так не должно быть.
HgLab: Mercurial Server and Repository Management for Windows
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.