Раз грозился вчера написать, в чём MSI лучше чем Nsis и Inno Setup, то надо выполнять угрозу. =) Скажу сразу, последний раз я смотрел Nsis и Inno Setup года два тому назад, но на первый взгляд, ничего глобально в них не изменилось. Эта тема отлично подходит для холиваров, особенно если опустить конкретные требования к инсталлятору. Посему хочу напомнить: для разных задач - разные инструменты.
Плюсы Windows Installer
- Во-первых, Windows Installer - единственный из известных мне установщиков, который сам проверяет, не используются ли сейчас какие-нибудь из инсталлируемых файлов, и выводит список программ, которые необходимо закрыть для продолжения инсталляции. Насколько я помню, в InnoSetup и Nsis в этом случае предлагают создавать в приложении какой-нибудь глобальный объект(например, мьютекс) и проверять его из инсталляции(уж не помню какие для этого привилегии нужны, но какие-то точно нужны).
- MSI-инсталляция может существенно упростить жизнь системного администратора. Особенно в крупной организации. Особенно если системный администратор не понаслышке знает что такое Group Policy[1]. Многие заказчики, требуют поставки инсталляций именно в MSI. К слову, через Group Policy можно распространять не только MSI, но удобств будет меньше.[2]
- MSI для винды - это стандарт де-факто.
- Для получения Certified for Windows Vista нужна инсталляция в MSI.(для меня и моей работы сейчас не особо актуально, но почему бы не сделать задел на будущее)
Минусы Windows Installer
- Время освоения существенно больше, чем для Nsis и Inno Setup
- Для создания инсталляции на другом языке, нужно делать отдельную инсталляцию.
- Использование Windows Installer не избавляет вас от возможных ошибок,
даже наоборот, долгая возня приводит к искушению сделать “лишь бы побыстрее”.
Выводы
Т.е. если Ваши клиенты – крупные компании, с большим количеством ограниченных в правах пользователей, то Вы наверное не читаете этот блог MSI – это то, что нужно. А если Вам нужно побыстрее сделать собрать установщик для домашних пользователей, то Inno Setup или Nsis – будет наиболее простым решением задачи.
А вообще, список установщиков для Windows достаточно велик, так что выбор всегда есть. ;-)
Ссылки по теме
Обсуждения на StackOverflow:
Сноски
[1] В моём университете, например, некоторые администраторы даже не подозревают о том, что такое возможно, и устанавливают софт на каждый компьютер вручную. Типичный ответ: да здесь же всего 10(20, 30) компьютеров!
По поводу
ОтветитьУдалить>> Для создания инсталляции на другом языке, нужно делать отдельную инсталляцию.
Не обязательно делать отдельную инсталляцию, достаточно создать Transform файл .MST и подключать его к MSI пакету, существует даже не документированная возможность (может уже и документированная) внедрять MST файлы в MSI пакеты и выбор языка будет происходить от текущей локали.
Добавлю, что с помощью технологии Windows Installer очень удобно делать так называемые патчи, которые очень маленькие по размеру.
Также поддерживается RollBack в процессе установке, т.е. если в процессе установки нажать отменить, то система востановится в первоначальное состояение.
> Также поддерживается RollBack в процессе установке...
ОтветитьУдалитьInnoSetup и NSIS также умеют откатывать изменения, если при установке что-то пойдёт не так.
Да и в Windows Installer при использовании собственных скриптов в инсталляции придётся повозится с условиями для реализации Rollback-a.
Давно хотел с ним поковыряться, но никак время не выделю. Напиши пожалуйста статью или кинь ссылкой с пошаговым созданием MSI пакета и с работающим архивом проекта. Я был бы очень признателен.
ОтветитьУдалитьstokito, здесь я выкладывал подборку ссылок на обучающие материалы по Wix-у.
ОтветитьУдалитьЯ конечно не такой продвинутый виндузятник как Вы, но при установке EXE можно из-под обычного юзера запустить из шелла "Запуск от имени..." и выбрать Админа. Почему-то не нашел такого для MSI, только какие-то костыли для этого
ОтветитьУдалить