Страницы

вторник, 28 апреля 2009 г.

Чем же так хорош MSI?

Раз грозился вчера написать, в чём MSI лучше чем Nsis и Inno Setup, то надо выполнять угрозу. =) Скажу сразу, последний раз я смотрел Nsis и Inno Setup года два тому назад, но на первый взгляд, ничего глобально в них не изменилось. Эта тема отлично подходит для холиваров, особенно если опустить конкретные требования к инсталлятору. Посему хочу напомнить: для разных задач - разные инструменты.

Плюсы Windows Installer

  1. Во-первых, Windows Installer - единственный из известных мне установщиков, который сам проверяет, не используются ли сейчас какие-нибудь из инсталлируемых файлов, и выводит список программ, которые необходимо закрыть для продолжения инсталляции. Насколько я помню, в InnoSetup и Nsis в этом случае предлагают создавать в приложении какой-нибудь глобальный объект(например, мьютекс) и проверять его из инсталляции(уж не помню какие для этого привилегии нужны, но какие-то точно нужны).
  2. MSI-инсталляция может существенно упростить жизнь системного администратора. Особенно в крупной организации. Особенно если системный администратор не понаслышке знает что такое Group Policy[1]. Многие заказчики, требуют поставки инсталляций именно в MSI. К слову, через Group Policy можно распространять не только MSI, но удобств будет меньше.[2]
  3. MSI для винды - это стандарт де-факто.
  4. Для получения Certified for Windows Vista нужна инсталляция в MSI.(для меня и моей работы сейчас не особо актуально, но почему бы не сделать задел на будущее)

Минусы Windows Installer

  1. Время освоения существенно больше, чем для Nsis и Inno Setup
  2. Для создания инсталляции на другом языке, нужно делать отдельную инсталляцию.
  3. Использование Windows Installer не избавляет вас от возможных ошибок, даже наоборот, долгая возня приводит к искушению сделать “лишь бы побыстрее”

Выводы

Т.е. если Ваши клиенты – крупные компании, с большим количеством ограниченных в правах пользователей, то Вы наверное не читаете этот блог MSI – это то, что нужно. А если Вам нужно побыстрее сделать собрать установщик для домашних пользователей, то Inno Setup или Nsis – будет наиболее простым решением задачи.

А вообще, список установщиков для Windows достаточно велик, так что выбор всегда есть. ;-)

Ссылки по теме

Обсуждения на StackOverflow:

Сноски

[1] В моём университете, например, некоторые администраторы даже не подозревают о том, что такое возможно, и устанавливают софт на каждый компьютер вручную. Типичный ответ: да здесь же всего 10(20, 30) компьютеров!

[2] http://en.wikipedia.org/wiki/ZAP_File

5 комментариев:

  1. По поводу
    >> Для создания инсталляции на другом языке, нужно делать отдельную инсталляцию.
    Не обязательно делать отдельную инсталляцию, достаточно создать Transform файл .MST и подключать его к MSI пакету, существует даже не документированная возможность (может уже и документированная) внедрять MST файлы в MSI пакеты и выбор языка будет происходить от текущей локали.

    Добавлю, что с помощью технологии Windows Installer очень удобно делать так называемые патчи, которые очень маленькие по размеру.
    Также поддерживается RollBack в процессе установке, т.е. если в процессе установки нажать отменить, то система востановится в первоначальное состояение.

    ОтветитьУдалить
  2. > Также поддерживается RollBack в процессе установке...

    InnoSetup и NSIS также умеют откатывать изменения, если при установке что-то пойдёт не так.
    Да и в Windows Installer при использовании собственных скриптов в инсталляции придётся повозится с условиями для реализации Rollback-a.

    ОтветитьУдалить
  3. Давно хотел с ним поковыряться, но никак время не выделю. Напиши пожалуйста статью или кинь ссылкой с пошаговым созданием MSI пакета и с работающим архивом проекта. Я был бы очень признателен.

    ОтветитьУдалить
  4. stokito, здесь я выкладывал подборку ссылок на обучающие материалы по Wix-у.

    ОтветитьУдалить
  5. Я конечно не такой продвинутый виндузятник как Вы, но при установке EXE можно из-под обычного юзера запустить из шелла "Запуск от имени..." и выбрать Админа. Почему-то не нашел такого для MSI, только какие-то костыли для этого

    ОтветитьУдалить