Вот как работают установщики программного обеспечения в Windows, MacOS и Linux

Современные операционные системы предоставляют вам простые способы настройки новых приложений. К ним относятся пакеты автоматической установки, а также команды, которые устанавливают много программных компонентов одновременно. Но что на самом деле происходит, когда вы запускаете этот установщик или запускаете эту команду?
Давайте посмотрим, как программное обеспечение устанавливается на трех основных настольных платформах: Windows, macOS и Linux.
Методы установки программного обеспечения
Есть несколько разных способов запуска новых приложений на вашем компьютере. В порядке возрастания сложности они включают в себя:
- Компиляция программного обеспечения — Сборка приложения из его исходного кода. Только для самых технических пользователей.
- Архивы программного обеспечения — распаковка архивов, таких как ZIP-файлы, и запуск программы из любого места, где вы ее распаковали. Это может потребовать дополнительной настройки.
- Пакеты установщика — Поиск файла установщика и (двойной) щелчок, чтобы начать установку.
- Менеджеры программного обеспечения / магазины — выбирая приложение из приятного интерфейса и нажимая большую кнопку «Установить». Это магия!
В этой статье мы рассмотрим пакеты установщика, так как большинство менеджеров / магазинов программного обеспечения в конечном итоге имеют дело с этими типами пакетов за кулисами. Для сегодняшних основных настольных платформ — Windows, macOS и Linux — мы рассмотрим, что составляет один из этих пакетов и что происходит при их установке.
Майкрософт Виндоус
Пакеты установщика, которые вы можете встретить для Windows, входят в один из двух основных вариантов. Исполняемые файлы (EXE) могут настроить вашу программу, выполнив тяжелую работу по размещению файлов в нужном месте и выполнению обновлений реестра Windows. Пакеты установщика Windows (MSI) дополняют это, предоставляя стандартные службы, такие как деинсталляции.
Вы можете проверить содержимое файлов EXE или MSI, открыв архив с помощью 7-Zip Если вы воспользуетесь им для просмотра собственного установщика EXE 7-Zip, вы найдете несколько разных файлов в:

Хотя эти файлы не содержат папки, содержащейся в установщике, разработчик будет указывать каждый из них на целевой каталог. Большинство из них попадают в «место установки по умолчанию» — то же самое предложение, которое вы обычно видите для папки типа «C: \ Program Files \ [имя программы]» или «C: \ Program Files (x86) \ [ваше новое приложение». ] «.
При использовании сложного инструмента, такого как InstallShield, для создания установочных пакетов, разработчики приложений могут настроить установку. Например, они могут указать, какие версии Windows он будет устанавливать, настроить ярлыки для создания в меню «Пуск» и / или на рабочем столе или собрать информацию о пользователе, такую как имя, адрес и т. Д. Пример проекта InstallShield в На изображении ниже показан экран для настройки необходимости создания или обновления ключей реестра Windows.

С помощью InstallShield файлы приложения и другие настройки помещаются в файл setup.exe . Открытие его с помощью 7-Zip покажет, что внутри находится пакет MSI, который при запуске выглядит так же, как установка, к которой мы все привыкли. Давайте рассмотрим, что происходит во время этого процесса.

Процесс установки Windows
Установщик предпримет следующие шаги, чтобы настроить ваше приложение для использования (точный порядок может варьироваться в зависимости от настроек разработчика):
- Установщик может содержать другие архивы, такие как вышеупомянутый MSI или форматы, такие как CAB. В качестве первого шага установщик извлечет их во временную папку.
- Затем он проверит, что все установленные зависимости доступны. Если чего-то не хватает, он загрузит его, если это возможно, или выйдет из установщика с ошибкой, если нет.
- Если требуются какие-либо зависимости, они будут установлены в первую очередь с использованием того установщика, который входит в комплект поставки ( когда-либо прерывалась установка для .NET Framework? ).
- Затем установщик начнет копировать файлы приложения и помещать их в правильное расположение.
- Если разработчик настроил какие-либо ярлыки, установщик создаст и укажет им фактический путь установки (помните, вы можете изменить это. при запуске программы установки).
- Изменения в реестре Windows , если таковые имеются, будут выполнены.
- Наконец, установщик может предложить пользователю ввести такую информацию, как имя или адрес веб-сайта.
Этот процесс может показаться сложным по сравнению со следующей операционной системой в списке. Давайте посмотрим на установку программного обеспечения на MacOS.
Apple MacOS
Установщики Windows много чего делают под капотом. Но если вы использовали Mac, вы знаете, что установить приложение часто так же просто, как загрузить копию приложения, открыть образ диска (DMG) и несколько простых инструкций. Иногда загрузка даже дает вам значок «Перетащите сюда!».
Давайте погрузимся в комплект приложения, а также его аналог установщика PKG.
Структура пакета macOS
Файл APP на поверхности на самом деле проще, чем Windows, по двум основным причинам. Во-первых, это стандартная папка. Разница лишь в том, что он заканчивается суффиксом «.APP». Если вы загрузите один из них в Windows, вы увидите, что он отображается так же, как и любая другая папка в Проводнике. Во-вторых, файлы APP требуют, чтобы было включено абсолютно все, что требуется программе. Не стоит беспокоиться об отсутствии зависимостей с этими типами установщиков.
Эти пакеты должны содержать три вещи в папке «Contents»: 1) файл «Info.plist», который содержит метаданные приложения, такие как имя, язык, номер версии и т. Д .; 2) каталог «MacOS», содержащий основной исполняемый файл; и 3) каталог «Ресурсы», который содержит ресурсы, необходимые для работы приложения (например, значок приложения). Существуют и другие дополнительные папки, такие как «Frameworks» (наборы функций, которые не являются специфичными для приложения), «Plug-Ins» (функциональные возможности для приложения, которое не требуется для его запуска) и «SharedSupport» (посторонние данные, такие как шаблоны).

Напротив, формат PKG представляет собой комбинацию Windows-подобного установщика с Unix-подобной структурой Приложение 7-Zip также откроет файл PKG, сжатый в формате xar . Внутри находится один или несколько полезных файлов, который также является архивом. Чтобы извлечь его содержимое, используйте следующую цепочку команд ( cpio — это формат архива, а также программа для управления ими) в терминале Mac или Linux:
После этого вы увидите знакомое Unix-подобное дерево каталогов.
В приведенном ниже примере я использовал конвертер документов Pandoc . Он содержит двоичный файл в / usr / local / bin и некоторую документацию в / usr / local / share / man . Как эти вещи на самом деле становятся на место? Мы посмотрим, как каждый из них на самом деле устанавливается на ваш Mac.

Для иллюстрации этого я использовал версию 7-Zip для Windows, а не версию для Linux только из командной строки.
Процесс установки приложения MacOS
Когда вы добавляете этот файл APP в папку «Приложения», он не сильно изменится. Помните, все необходимое для запуска программы является автономным. Единственное отличие от стандартного перетаскивания заключается в том, что файл «Info.plist» регистрируется в системе.

Это позволит настроить такие вещи, как, какой исполняемый файл вызывается при запуске приложения, какой значок отображается, типы файлов, которые он поддерживает, и многое другое. Но в противном случае ваше приложение (например, пакет APP для редактора Atom, показанного ниже) теперь готово к использованию.

Процесс установки macOS PKG
Открытие файла PKG, с другой стороны, запускает установщик в стиле мастера. Для простых программ это, как правило, установщик компонентов , который обычно проходит следующие шаги:
- Запустите сценарий предварительной установки .
- Распакуйте содержимое «полезной нагрузки» на машину.
- Запустите скрипт postinstall .

Затем разработчики могут объединить несколько компонентов в одну установку архива продукта . Это добавляет опции, такие как отображение EULA для пользователя, чтобы принять, сбор информации от пользователя и выбор компонентов для установки. Между тем, установщик Apple позаботится обо всех деталях установки необходимых компонентов в фоновом режиме.
Говоря об установщиках на основе Unix, мы перейдем к двум основным форматам пакетов Linux в следующем разделе.
Ubuntu и Fedora Linux
Ах, DEB против RPM Одна из великих огненных войн, в которой побеждают только такие, как vi против emacs или KDE против GNOME. Все же эти форматы больше похожи, чем они отличаются. Давайте взглянем.
Файловая структура пакета Linux
Чтобы взглянуть внутрь файла DEB, вы можете попробовать менеджер архива с графическим интерфейсом. В противном случае используйте команду ar . Следующая команда введена в терминал извлечет содержимое пакета Debian:
Из этого получится три файла:
- control.tar.gz — он, в свою очередь, содержит один основной файл, Control , который содержит метаданные о пакете, такие как его официальное имя, версия и зависимости. Он также может содержать другие файлы, такие как сценарии для запуска в процессе установки или файлы конфигурации по умолчанию.
- data.tar.gz — файлы, из которых состоит само приложение, находятся в этом архиве TAR.GZ. Все, включая двоичные файлы, документацию и стандартные конфигурации находятся здесь. В примере пакета kde-service-menu-encfs_0.5.2_all.deb он содержит файлы и каталоги, как показано на рисунке ниже.
- debian-binary — это файл, который определяет, какую версию формата пакета Debian использует файл. Для современных дистрибутивов это будет просто содержать «2.0» в одной строке.

В Fedora вы можете использовать команды rpm2cpio и cpio для извлечения пакета RPM и просмотра их файлов:
Для пакета kde-cli-tools-5.9.4-2.fc26.x86_64.rpm вы увидите дерево файлов, похожее на пакет DEB. Но он не предоставляет метаданные, по крайней мере, не в двоичном пакете . Вам нужно будет загрузить исходный RPM (.SRC.RPM), соответствующий вашей двоичной версии, а затем использовать ту же команду, указанную выше для этого файла. В него будет включен файл SPEC, содержащий много элементов, аналогичных файлу Control в пакете Debian.
Теперь, когда у нас есть понимание структуры пакетов Linux, давайте рассмотрим, что происходит, когда вы их фактически устанавливаете
Установка пакета Linux
Когда вы устанавливаете пакеты любого формата, независимо от внешнего интерфейса, происходит аналогичный набор шагов:
- Система пакетов проверяет содержимое пакета, чтобы определить, отсутствуют ли зависимости. В зависимости от инструмента, он либо предупредит вас, либо установит их загрузку.
- Если пакеты содержат предустановочные сценарии или команды, они выполняются следующим.
- Затем система пакетов фактически извлекает файлы пакета.
- После установки файлов запускаются сценарии после установки.
- Наконец, пакет регистрируется во внутренней базе данных с использованием его метаданных, поэтому его можно удалить позже.
Знать, как устанавливается программное обеспечение — это хорошо
Поскольку разработчики операционных систем и программного обеспечения, которое работает на них, делают большую работу по упрощению установки программного обеспечения, вам не нужно обращать внимание на детали. Но знание того, что происходит за кулисами, даст вам некоторое спокойствие о том, что устанавливается в вашей системе, а также поможет с устранением неполадок.
Сколько из указанных выше методов установки программного обеспечения вы сделали? Вы предпочитаете DEB или RPM? Или пакеты Mac для приложений представляют собой вершину простоты использования? Когда-нибудь случалась кошмарная установка? Дайте нам знать в комментариях ниже!
С чего начать изучение Windows Installer?
Технология Windows Installer (MSI) является стандартом де-факто в мире системных администраторов, занимающихся распространением и поддержкой программного обеспечения для десктопных и серверных версий Windows. Формат MSI поддерживается всеми крупнейшими системами управления конфигурациями (Microsoft SCCM, CA Unicenter и многими другими), а для некоторых систем распространения ПО — является единственным поддерживаемым форматом.
Мой опыт работы с этой технологией — как теоретический, так и практический — приобретен за время работы в компании «Инфопульс Украина» и связан с созданием MSI-пакетов и подготовкой готовых MSI-пакетов к автоматической установке в корпоративной среде.
Зачем это вам?
Если вы занимаетесь централизованной установкой приложений в сетях Windows, знание формата MSI и умение создавать и редактировать пакеты в этом формате вам может здорово пригодиться при подготовке пакета к развертыванию и диагностике проблем. В Европе и США технология Windows Installer востребована многими крупными заказчиками, поэтому знание MSI может быть плюсом для системного администратора при трудоустройстве.
Что нужно знать и уметь перед началом изучения?
Ничего сложного. Если у вас есть опыт администрирования и поддержки небольшой (а лучше большой, иерархической) сети Windows-машин, вероятнее всего вы уже сталкивались с основными вопросами и понятиями, которые вам понадобятся. Перед тем, как начать, убедитесь, что вы хорошо понимаете структуру файловой системы Windows, структуру профиля пользователя и структуру реестра, знаете что такое процессы и службы в Windows, умеете управлять учетными записями пользователей и знаете где находятся журналы событий. Для того, чтобы научиться создавать пакеты MSI, вам совсем необязательно иметь опыт разработчика, хотя конечно лучше если такой опыт у вас есть. И совсем не обязательно уметь писать запросы на SQL, хотя это тоже может пригодиться (ведь каждый MSI-файл — это небольшая реляционная база данных). Но обязательно нужно уметь читать и понимать техническую документацию на английском, без этого скорее всего ничего не получится. При изучении теории (и при создании пакетов на практике) постарайтесь хотя бы на первых порах строго следовать стандартам Windows Installer, избегая вспомогательных утилит типа InstallShield/InstallScript, так вы лучше поймёте как правильно создать MSI-пакет.
Готовим песочницу и начинаем практику
Начать нужно с установки и настройки виртуальной машины. В процессе обучения вам придется немало поэкспериментировать, поэтому лучше сделать это в песочнице. Если нужны бесплатные продукты — устанавливаем VirtualBox или VMWare Player (для профессиональных задач их функционала может быть недостаточно, но для обучения — вполне подойдет). В виртуальной машине, естественно, нужно установить Windows на ваш выбор (XP и выше).
Если у вас уже есть опыт работы с утилитами от Sysinternals — прекрасно. Если нет — самое время восполнить пробел. Нам понадобятся минимум две: для отслеживания файловой и реестровой активности приложения при установке или во время его работы — Process Monitor, для запуска инсталляции от имени учетной записи LocalSystem — PsExec. Попрактикуйтесь использовать эти утилиты на простом приложении типа notepad (с какими ресурсами работает notepad при открытии файла, при сохранении файла; запустите notepad от имени пользователя LocalSystem, поэкспериментируйте с сохранением файлов и установкой файловых ассоциаций), в дальнейшем эти навыки пригодятся.
Установите Panda QuickShot или другой софт для сравнения состояний системы. Разберитесь с основным функционалом, научитесь отслеживать файловые и реестровые изменения в системе при установке нового приложения или изменении параметров системы (самое простое — зарегистрируйте новую файловую ассоциацию для notepad, измените обои рабочего стола и отследите где хранятся эти настройки). Подойдите к этому творчески, поле для экспериментов обширное.
Скачайте MSI-инсталлятор какого-нибудь несложного приложения (например, Orca, InstEd или Firefox). Установите пакет на виртуальной машине, с помощью описанных выше утилит изучите устанавливаемые им ресурсы. Научитесь пользоваться командной строкой Windows Installer (msiexec /?), поэкспериментируйте с различными опциями установки и сравните результат. Выполните удаление приложения из командной строки, установите пакет в автоматическом (silent) режиме.
Установите InstEd или Orca на хост-машине. Откройте MSI-пакет, который вы устанавливали на виртуальной машине, с помощью одной из этих утилит. Сравните записи основных таблиц в MSI-пакете (File, Directory, Registry) с ресурсами (файлы, папки, ключи реестра), установленными этим пакетом на вашей виртуальной машине (результат сравнения снимков состояний с помощью Panda QuickShot). 
Немного теории
- Таблица Property, код продукта (ProductCode), код пакета (PackageCode), стандартные свойства в MSI;
- Таблица Upgrade и код обновления (UpgradeCode);
- Таблицы Feature, Component и их назначение;
- Таблицы Directory, File, Registry, Shortcut; приложения, поставляемых с MSI-пакетом, таблица Media; , их создание и применение из командной строки.
Обзор утилит и документации
Бесплатно можно использовать простые редакторы MSI-файлов с ограниченным функционалом — здесь упоминания заслуживают классическая Orca от Microsoft и довольно удобный InstEd. Эти редакторы позволяют вносить небольшие изменения в готовые MSI-файлы, создавать и применять трансформы, но создавать в них MSI-пакеты с нуля довольно непросто (а для больших пакетов — и вовсе не имеет смысла). Но если вы действительно хотите изучить технологию MSI, вам просто необходимо собрать пару простых пакетов в InstEd или Orca и выполнить их валидацию на соответствие стандарту Windows Installer.
Специализированные утилиты для выполнения setup capture (создания или конвертирования установочных пакетов из так называемых «старых форматов»» в формат MSI с использованием сравнения «снимков» системы до и после установки приложения или мониторинга изменений в системе «на лету») — бесплатный AppDeploy Repackager, или более серьезный MSI Generator. MSI-пакетам, созданным с использованием этих утилит, может потребоваться некоторая доработка, которую можно выполнить с помощью редактора MSI.
Серьёзные полнофункциональные (и весьма дорогие) IDE, обеспечивающие поддержку полного цикла работ с MSI-пакетами — если вы будете заниматься технологией MSI профессионально, вам скорее всего не обойтись без этих программ. В этом сегменте до недавнего времени доминировали два продукта — AdminStudio от Flexera и Wise Package Studio от Symantec, но недавно Symantec объявил о прекращении работ по развитию Wise Package Studio, и рынок переходит в руки Flexera. Кроме работы с MSI, AdminStudio позволяет работать с виртуальными пакетами форматов Microsoft App-V, VMware Thin App и Citrix XenApp. Для ознакомительных целей доступна пробная 21-дневная версия.
Отдельно стоит упомянуть WIX (Windows Installer XML) — набор утилит для создания MSI-файлов из XML-описаний. Этот проект был выпущен «Майкрософтом» под открытой лицензией Common Public License, поддерживает интерфейс командной строки и может использоваться для автоматизации создания версий инсталляционных пакетов. Хорошее описание есть на Хабре.
Что такое Windows Installer?
Windows Installer — это сервис установки и конфигурирования программных продуктов. Он поставляется как неотъемлемая часть операционных систем Windows 2000 и Windows Me, а также может устанавливаться в ОС Windows 95, Windows 98 и Windows NT 4.0 вместе с пакетами обновления этих операционных систем или в качестве отдельного дистрибутива.
Появилась эта технология в результате усилий фирмы Microsoft по созданию инсталлятора, удовлетворяющего требованиям корпораций к развертыванию и сопровождению программного обеспечения (не забывайте, что основными потребителями продукции Microsoft являются корпоративные клиенты). Но возможности, предоставляемые данной технологией, естественно, востребуются не только корпорациями.
Основная цель этой технологии: уменьшение так называемой совокупной стоимости владения (TCO — Total Cost of Ownership) для пользователей программных продуктов за счет эффективных средств развертывания и конфигурирования ПО. Надо отметить, что Windows Installer — это только часть (хотя и очень важная) усилий Microsoft по снижению стоимости развертывания, использования и сопровождения ПО для персональных компьютеров.
На каждом компьютере, использующем Windows Installer, хранится единая база данных с информацией о каждом установленном с помощью этой технологии приложении. Эта информация включает файлы, записи в реестре и компоненты. При удалении приложения с машины Installer проверяет базу данных, чтобы удостовериться в том, что не будут удалены файлы, ключи реестра и компоненты, от которых зависят другие приложения. Таким образом, удаление приложения становится практически безопасным для других программ, имеющихся на компьютере.
Читайте также
(1.1) Что такое Windows 2000?
(1.1) Что такое Windows 2000? Windows 2000 ака W2k – новая операционная система (ОС) Microsoft, основанная на технологии Windows NT, что отраженно в первоначальном названии проекта W2k – Windows NT 5.0. NT ака New Technology была создана группой разработчиков под руководством Дэйва Катлера, ранее работавшего в DEC
1.3. Что такое Windows Product Activation, и зачем он нужен?
1.3. Что такое Windows Product Activation, и зачем он нужен? Это новая технология, разработанная Microsoft для борьбы с нелегальными копиями их программного обеспечения. Впервые подобный механизм был опробован на Terminal Service, из W2k Server, теперь же, похоже, подобным образом будут защищаться
5.6 Служба теневого копирования томов в Windows ХР и Windows Server 2003
5.6 Служба теневого копирования томов в Windows ХР и Windows Server 2003 В Windows ХР и Windows Server 2003 компания Microsoft реализовала службу теневого копирования. Таким образом, предоставляется инфраструктура, позволяющая создавать целостные копии дисковых томов в заранее определенный момент
1.1. Гонки на выживание: Windows ХР, Windows Vista и Windows 7
1.1. Гонки на выживание: Windows ХР, Windows Vista и Windows 7 Время не стоит на месте, и уж тем более на месте не стоят новые технологии. Появление многоядерных процессоров, мощных видеокарт и других новых устройств, которые не могут полностью раскрыть свой потенциал в существующих
WindowsAccessoriesWindows Installer
WindowsAccessoriesWindows Installer HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstallPCHealthUninstallStringЕсли в командной строке запустить значение данного параметра rundll32.exe setupapi.dll,InstallHinfSection DefaultUninstall 132 %SystemRoot%InfPCHealth.inf можно удалить программу PC Health вместе с MSConfig (освободив порядка 25 Мб). Запустить справку
Windows Installer
Windows Installer Контроль над Windows InstallerМайкрософт разработала новый формат для установки программ — Windows Installer (msi-файлы). Существует возможность контроля над этим форматом. Создайте новый параметр ·DisableMSI· типа DWORD в разделе HKLMSoftwarePoliciesMicrosoftWindowsInstallerи присвойте ему следующие
Windows Installer — новое слово в технологиях инсталляции
Windows Installer — новое слово в технологиях инсталляции ГлоссарийПрежде, чем продолжить, необходимо ввести минимально необходимый для понимания дальнейшего текста набор терминов, используемых в Windows Installer. Таблица ниже включает список, достаточный для понимания текста данной
Выгода от использования Windows Installer для пользователей
Выгода от использования Windows Installer для пользователей Выгода от использования модулей инсталляции для Windows Installer заключается в том, что они облегчают процесс установки и обновления программных продуктов пользователям. Эти модули могут работать на любой 32-хбитной
Выгода от использования Windows Installer для разработчиков
Выгода от использования Windows Installer для разработчиков То, что пользователям выгодно использовать данную технологию, сомнений не возникает. Но мы-то с вами не рядовые пользователи, мы — разработчики программного обеспечения (на мой взгляд, это должно звучать гордо). Что нам
Структура пакета инсталляции Windows Installer
Структура пакета инсталляции Windows Installer Итак, что же представляет собой пакет инсталляции для Windows Installer? Обычно инсталляционные пакеты хранятся в файлах с расширением .msi и представляют собой реляционную базу данных, хранящую всю логику и данные, необходимые для
Windows Installer API
Windows Installer API Таблицы — это конечно, хорошо. Но как добраться до содержимого этих таблиц? И как изменять эти таблицы? То есть, говоря иными словами, как можно работать с базой данных инсталляционного пакета?Для этого существует Windows Installer API. Этот API весьма обширен и включает в
Ein Volk, ein Plattform, ein Windows!, или Когда уничтожат Windows RT? Евгений Золотов
Ein Volk, ein Plattform, ein Windows!, или Когда уничтожат Windows RT? Евгений Золотов Опубликовано 04 декабря 2013 В лагере MS Windows зреют большие перемены: не все варианты самой популярной ОС чувствуют себя одинаково хорошо. Windows Phone набирает пользовательскую массу
6.5. Общие команды меню Windows-программ. Буфер обмена Windows
6.5. Общие команды меню Windows-программ. Буфер обмена Windows Практически все Windows-программы имеют главное меню, которое расположено сразу под заголовком окна. В большинстве случаев некоторые команды главного меню совпадают. Например, многие Windows-программы имеют меню Файл,
Инсталляция с помощью Установщика шаблонов (Template Installer) Joomla!
Инсталляция с помощью Установщика шаблонов (Template Installer) Joomla! После создания пакета шаблона и удаления всех его предыдущих версий можно перейти к инсталляции нового шаблона (в главном меню админчасти выберите Extensions | Install/Uninstall).Здесь можно установить zip пакет с вашим