Установка программного обеспечения, инсталляция — процесс установки программного обеспечения на компьютер конечного пользователя. Выполняется особой программой (пакетным менеджером), присутствующей в операционной системе (например, RPM, APT или dpkg в Linux, Установщик Windows в Microsoft Windows), или же входящим в состав самого программного обеспечения средством установки. В операционной системе GNU очень распространено использование системы GNU toolchain и её аналогов для компиляции программного обеспечения непосредственно перед установкой.
Большинство программ поставляются для продажи и распространения в сжатом (упакованном, см.: Архив) виде. Для нормальной работы они должны быть распакованы, а необходимые данные правильно размещены на компьютере, учитывая различия между компьютерами и настройками пользователя. В процессе установки выполняются различные тесты на соответствие заданным требованиям, а компьютер необходимым образом конфигурируется (настраивается) для хранения файлов и данных, необходимых для правильной работы программы.
СОЗДАЕМ ИНСТАЛЛЯТОР
Установка, как правило, включает в себя размещение всех необходимых программе файлов в соответствующих местах файловой системы, а также модификацию и создание конфигурационных файлов. Пакетные менеджеры также выполняют при установке контроль зависимостей, проверяя, есть ли в системе необходимые для работы данной программы пакеты, а в случае успешной установки регистрируя новый пакет в списке доступных.
Так как данный процесс является различным для каждой программы и компьютера, то многие программы (включая сами операционные системы) поставляются вместе с универсальным или специальным установщиком — программой, которая автоматизирует большую часть работы, необходимой для их установки.
Эволюция инсталляторов
Товар в красивой упаковке проще продавать. А программу в хорошем инсталляторе?
Ведь не факт, что инсталлятор — аналог упаковки. Это скорее процесс вынимания продукта из коробки. Много раз нажать «Next», в самом конце — «Finish», и никакого там аккуратного развязывания ленточек. Порвали слюду, небрежно вскрыли коробку — «Что там у нас внутри?»
Сама коробка не представляет особой ценности. Для некоторых товаров специально делают бюджетную упаковку. Зато важно, чтобы процесс был предсказуемым. Если инсталлятор предсказуем, то его внешний вид и возможности не имеют значения. Но когда что-то пойдёт «не так», или пользователю вдруг не хватит стандартных опций, всплывут все недостатки — как внешнего вида, так и возможностей.
Чего хотят от инсталляторов
Корпоративному пользователю, например, будет интересно узнать, как поставить программу в silent режиме, и какие у инсталлятора имеются ключи командной строки. Поддержка стандартного для Windows msi-файла инсталлятора тут окажется как нельзя кстати.
Если инсталлятор задаёт сложные вопросы, важно, чтобы они были на языке, понятном пользователю. Угадать этот язык сразу — та ещё проблема. Язык интерфейса операционной системы не всегда будет правильным выбором. Поэтому предоставление возможности выбора языка является неотъемлемой частью современных инсталляторов.
КАК СОЗДАТЬ ДИСТРИБУТИВ (ИНСТАЛЛЯТОР) ПРОГРАММЫ
Раньше мы уже писали о том, как можно реализовать выбор языка и сделать «настоящий» msi. Мы научились ценить традиции разных языковых культур и уважать строгие корпоративные требования. Но всё ли учтено? Ведь кто-то вместо инсталлятора захочет сразу иметь portable-версию программы. А пользователи, работающие под учетной записью с ограниченными правами?
Многие программы они просто не могут поставить, не позвав администратора. И не всегда это ошибка администратора, чаще — разработчика.
Инсталляторы «два в одном»
Сразу после запуска инсталлятора, можно предлагать не только установить программу, но и запустить её без установки. Такая программа может хранить файлы настроек и данные пользователя в одной папке с инсталлятором, выступая одновременно и инсталлятором, и portable-версией. А для распаковки программы из msi, всегда можно использовать административную установку — мало кто знает, что она создавалась как раз для этой цели. Надо только не забыть удалить временные файлы по завершении работы программы.
Такой подход избавляет от необходимости переделывать концепцию огромной зелёной кнопки «Скачать» на сайте, т.к. одного файла будет достаточно тем, кто хочет программу установить — и тем, кто хочет ее запустить только один раз, и даже тем, кто хочет носить ее с собой на флешке. Несложно научить программу работать с заданным файлом настроек и хранить пользовательские данные по заданному пути. Важно не трогать реестр, а в случае интеграции с другими программами — предусмотреть поддержку относительных путей. И не стоит забывать, что файл инсталлятора внезапно может оказаться на компакт-диске :-).
Ограниченные права учетной записи
Домашние пользователи, а также сотрудники компаний, в которых работают добрые системные администраторы, с такой проблемой не сталкиваются. Разработчики, впрочем, тоже. Работая на своих компьютерах с неограниченными правами, мы часто забываем о поддержке пользователей с ограниченными возможностями правами.
Дело в том, что в Windows Installer имеется два способа установки программы — для всех пользователей системы (самый распространённый), и для текущего пользователя, запустившего инсталлятор. Причём в корпоративном мире не редкость, когда у текущего пользователя недостаточно привилегий для установки программы в режиме «для всех пользователей».
Чтобы сделать инсталлятор, поддерживающий оба способа установки, и без проблем работающий на Windows Vista (в Windows 7 добавили поддержку т.н. «Single Package Authoring»), разработчику необходимо предпринимать специальные действия.
А именно, каждый раз, перед запуском установки «для текущего пользователя» патчить msi-файл инсталлятора, устанавливая в «1» третий бит специального свойства «Word Count» в так называемом «Summary Information Stream» (который является неотъемлемой частью msi-файла). Для этого можно использовать функцию MsiSummaryInfoSetProperty(). Если msi-файл имеет цифровую подпись, то при установке в режиме «для всех пользователей» будет «синее» окошко UAC. При установке же в режиме «для текущего пользователя» факт испорченной цифровой подписи на UAC не влияет, поэтому такой подход прекрасно работает.
Если же не использовать описанные выше шаманские танцы с бубном для Windows Vista, а просто установить третий бит в «1» во время сборки msi, то даже системный администратор не сможет установить такой msi в режиме «для всех пользователей» :-). И наоборот, если третий бит не ставить, то будет выводиться окошко UAC, а в худшем случае требоваться пароль администратора.
Как упаковать?
Для реализации перечисленных возможностей нужен exe-файл инсталлятора. В него уже упаковывается msi-файл. Движок пользовательского интерфейса также желательно выносить в exe, чтобы обеспечить не только переключение языка установки «на лету», но и выбор опций ещё до запуска msi-установки. Важно не забыть про взаимодействие с системой Windows Installer, обеспечить корректное обнаружение уже установленной версии и поддержку удаления. Корпоративный заказчик получает тот же msi-файл, что и упакованный в exe — ему не нужна поддержка ни portable-режима, ни установки для текущего пользователя, а язык указывается в командной строке.
Чтобы разработать такой exe-инсталлятор, необходим опыт в разработке пользовательских интерфейсов, либо возможность использовать подходящий «фреймворк». Но вне зависиости от выбранных инструментов, понадобится глубокое знание WinAPI и API Windows Installer.
И попробовать
Бета-версия бесплатного Advanced IP Scanner, нашего маленького полигона по обкатыванию новых технологий на людях, обзавелась новым инсталлятором, который на деле реализует большую часть описываемых возможностей. И запуск без установки, и смена языка, и msi-файл внутри — всё в нём есть. Рекомендуется качать, смотреть и изучать. 🙂
Для выбора языка, отображения диалогов и запуска portable-версии мы использовали Inno Setup. Начинка (msi) осталась прежней, на WiX, только теперь без диалогов.
- Скачать Advanced IP Scanner 2.3.226 beta.
- Ознакомиться с продуктом.
- Проверить его совместимость с вашей ОС.
- Прислать нам баг-репорт и/или пожелания по улучшению через специальную форму на странице бета-тестирования.
Заранее благодарим за ваше участие. Вопросы разработчикам и комментарии приветствуются!
Источник: habr.com
Что такое инсталлятор?
Инсталлятор — программа, устанавливающая программу. Другую, не себя саму, конечно.
Когда-то очень давно, ещё до Windows, прикладные программы были довольно простыми по своей структуре и установки не требовали, часто вообще всё содержали в одном-единственном файле.
Такие программы, установки не требующие, сейчас называют portable (носимыми).
Но большинство современных программ требуют сложного установочного процесса: часть файлов в папку программы, часть — в специальные папки операционной системы, внесение записей в реестр Windows и всякие системные файлы, установка шрифтов в систему и т.д. Вручную это делать хлопотно и долго, поэтому вся эта работа инсталлятору (установщику, по-русски) поручается.
в избранное ссылка отблагодарить
ЛенивыйЖирныйКот [52.4K]
На счет портабельности не соглашусь, портабле может лежать в папке вместе с доп. файлами. Часто делают крякнутые платные. А есть простые программы, запускающиеся без установки. — 7 лет назад
Рождённый в С С С Р [611K]
портабле может лежать в папке вместе с доп. файлами?
ну и что? они же в этой папке и остаются, в windowssystem32 не копируются — 7 лет назад
Источник: www.bolshoyvopros.ru