Windows Installer (установщик Windows) — подсистема Microsoft Windows, обеспечивающая установку программ (инсталлятор). Является компонентом Windows, начиная с Windows 2000; может доустанавливаться и на более ранние версии Windows. Вся необходимая для установки информация (иногда и вместе с устанавливаемыми файлами) содержится в установочных пакетах (installation packages), имеющих расширение .msi.
Содержание
История
Windows Installer был разработан в 1995—1998 годах и имел вначале кодовое название Darwin. Ранние версии назывались Microsoft Installer, отсюда стандартное расширение файла инсталляционного пакета — .msi. [2]
Первая версия Installer’а вышла в начале 1999 в качестве инсталлятора Microsoft Office 2000. В конце того же года Installer стал частью Windows 2000. Майкрософт всячески поощрял переход разработчиков на новый инсталлятор, включив в список требований к программам, желающим получить так называемый знак Windows 2000 Logo, требование устанавливаться с помощью Windows Installer.
Windows Installer оказался значительным шагом вперёд по отношению к предыдущему инсталлятору Microsoft — Setup API (ACME Setup): в нём были введены возможности GUI, поддержка деинсталляции и отката в любой момент установки (включая откат во время деинсталляции), корректная работа с правами доступа в Windows и другие возможности, что сделало его сильной альтернативой различным существовавшим на рынке инсталляционным пакетам.
Логическая структура пакета
Инсталляционный пакет описывает установку одного продукта и имеет свой GUID. Продукт состоит из компонентов (components) (тоже имеющих свои GUIDы), сгруппированных в возможности (features).
Компонент (component) — минимальная неделимая установочная единица, представляющая собой группу файлов, значений реестра, создаваемых папок и других элементов, объединённых общим именем (именем компоненты) и либо устанавливаемых вместе, либо не устанавливаемых. Компоненты скрыты от конечного пользователя. Каждая компонента имеет ключевой путь (key path) — например, имя своего главного файла — по которому определяется наличие этой компоненты на компьютере пользователя.
Возможность (feature; в русифицированной версии Windows именно это слово переводится как «компонента», что вносит путаницу) — это иерархическая группа компонент и/или других возможностей. Когда при установке показывается диалог выбора устанавливаемых частей программы, пользователь управляет выбором именно возможностей. Выбор возможности для установки влечёт за собой установку всех компонент, которые в неё включены.
Физическая структура пакета
Файл .msi представляет собой составной документ OLE (OLE compound document — в том же формате-контейнере хранятся документы Microsoft Word, Excel и т. д.), в котором содержится небольшая реляционная база данных — набор из нескольких десятков взаимосвязанных таблиц, содержащих различную информацию о продукте и процессе установки. При этом все строковые данные в базе хранятся вместе в отдельном потоке документа, а в таблицах базы на них имеются ссылки; таким образом избегают дублирования строк, что значительно уменьшает размер базы.
Кроме базы, структура файла .msi предусматривает помещение туда пользовательских сценариев и вспомогательных DLL, если таковые требуются для установки, а также самих устанавливаемых файлов, запакованных в формате .cab. Файлы можно размещать и отдельно от пакета, в запакованном или распакованном виде (с сохранением структуры каталогов).
Процесс установки
Процесс установки состоит из нескольких этапов — сбора информации, выполнения (собственно установки), а также, возможно, отката (в случае ошибки или отмены установки пользователем).
Действия
Каждый этап установки состоит из последовательности действий (actions), записанной в базе данных. Действиям присвоены номера, определяющие порядок их выполнения, а иногда — и условия, при которых действия выполняются или не выполняются.
Большая часть действий — это стандартные действия, характерные для типичного процесса сбора информации и установки. Все эти действия документированы. Кроме них, пользователь может определить и свои действия (custom actions).
Действия, определённые пользователем, могут быть либо написаны на одном из скриптовых языков, встроенных в операционную систему (JScript или VBScript так же и Eclipse, побочный язык от C++), либо размещаться в специально созданной DLL (написанной на таких языках, как C, C++ и т. д.). Файлы с этими действиями помещаются внутрь файла .msi и извлекаются оттуда в начале запуска инсталляции.
Сбор информации
На этапе сбора информации Windows Installer собирает инструкции (либо путём взаимодействия с пользователем, либо программным путём) установить или удалить одну или несколько возможностей, входящих в продукт. Эти инструкции в дальнейшем формируют на основе базы данных внутренний сценарий, детально описывающий последующий этап выполнения.
Этот этап называют также непосредственным режимом (immediate mode).
Выполнение
К началу этого этапа инсталлятор генерирует внутренний сценарий, предназначенный для выполнения без вмешательства пользователя. Этот сценарий выполняется инсталлятором в привилегированном режиме службы NT (конкретно — под аккаунтом LocalSystem). Привилегированный режим требуется из-за того, что инсталляция могла быть запущена пользователем, не обладающим необходимыми правами для изменения системных параметров и файлов (хотя право установить программу ему было предоставлено).
Этот этап иногда называется отложенным режимом (deferred mode).
Откат
Если какое-либо из действий, определённых в сценарии, оканчивается неудачей, или установка в процессе отменяется пользователем, все действия, выполненные до этого места, откатываются, возвращая систему в состояние, бывшее до установки. Откат обеспечивается наличием для каждого действия, вносящего изменение в систему, обратного к нему. Вводя в пакет нестандартные действия, программист также должен создать обратные к ним для правильной работы отката.
Установочный файл: инструкция по скачиванию и запуску
Установочные, или исполняемые файлы (installation files), иногда называются двоичными. Потому как их формат представляет собой сплошную последовательность двоичных значений. В вычислительной технике установочный файл вызывает компьютер для выполнения указанных задач в соответствии с закодированными инструкциями. Этим он отличается от обычного документа данных, который должен быть только прочитан. Файл с именем, оканчивающимся на .exe является программой, которая при открытии заставляет операционную систему запустить приложение.
Назначение и исполнение файлов
Такие installation files могут быть написаны вручную на машинном языке, хотя гораздо удобнее разрабатывать программное обеспечение в виде исходного кода на языке высокого уровня, который может быть легко понят программистом. В некоторых случаях исходный код может быть указан на языке ассемблера, который тесно связан с инструкциями машинного кода. Язык высокого уровня компилируется либо в установочный файл машинного кода, либо в объектный.
Несколько последних, связанные между собой, могут создать installation files. Они имеют формат контейнера, в виде установочного и связываемого форматов (ELF). Это структурирует сгенерированный машинный код, например сегментируя его на разделы:
.text — установочный код;
.data — статические переменные;
.rodata — статические константы.
Для выполнения системой установочный файл должен соответствовать двоичному интерфейсу системного приложения (ABI). Наиболее просто он выполняется путем загрузки в память и простого перехода к началу адресного пространства и выполнения его оттуда. Но в более сложных интерфейсах installation files имеют дополнительные метаданные, определяющие отдельную точку входа. Например, в ELF точка входа указывается в заголовке в e_entity поле, определяющем адрес виртуальной памяти, с которого начинается выполнение. В GCC (GNU Compiler Collection) это поле устанавливается компоновщиком на основе _start символа.
Структура и функции запуска
Установочные файлы, как правило, включают в себя систему, контролирующую время выполнения, с реализацией функции языка, а также планирования задач, обработку исключений, вызов статических конструкторов и взаимодействия с операционной системой. Например, передачу аргументов, среды и возвращение состояния выхода вместе с другими функциями запуска и завершения работы, такими, как освобождение ресурсов. Для C это делается путем связывания объекта «crt0», который содержит фактическую точку входа и выполняет настройку и завершение работы, вызывая библиотеку времени выполнения.
Таким образом, установочные файлы Windows обычно содержат значительный дополнительный машинный код, помимо того, который непосредственно генерируется из исходного. В некоторых случаях желательно его пропустить, например при разработке встроенных систем или просто при изучении того, как работают компиляция, компоновка и загрузка. В C это можно сделать, пропустив обычную среду выполнения и вместо этого указав сценарий компоновщика, который генерирует точку входа и обрабатывает запуск и завершение работы, например, вызывая mainstart и возвращая состояние выхода ядру в конце операции.
Виды расширений
Установочный файл «Виндовс» также называется двоичным. Программа — это последовательность инструкций, понятная центральному процессору (ЦП) компьютера, которые он должен выполнять с набором данных.
Расширения файлов Windows: .EXE, .COM, .BAT, .VB, .VBS, .WSF, .PIF.
Расширения файлов Macintosh: .APP, .SCPT, .APPLESCRIPT.
Установка может быть реализована в виде трех форматов:
Пользовательская сторонняя система установки в EXE-файл.
Установщик Windows в MSI.
EXE-файл, который загружает MSI, встроенного в EXE.
MSI могут быть только установочными, а EXE, наоборот, могут быть буквально всем, что может работать на компьютере. Исполняемые файлы состоят из инструкций, которые были переведены из исходного кода в машинный, также называемый машинным языком или объектным кодом, с использованием специализированной скомпилированной программой. Код машины полностью состоит из нулей и единиц, которые представляют состояние логических схем процессора и ячеек памяти.
Запускаемые EXE-файлы
Установочные программы выполняет код или серию инструкций, содержащихся в них. Два основных типа: скомпилированные программы и сценарии.
В системах Windows скомпилированные программы имеют расширение EXE. На компьютерах Macintosh скомпилированные программы имеют расширение APP. Оба типа исполняемых файлов компилируются из исходного кода в двоичный машинный, который непосредственно выполняется процессором. EXE работают только в ОС Windows, а APP — в Mac OS X. Это связано с тем, что код выполняется операционной системой и поэтому должен компилироваться в формате ей понятном.
Не скомпилированные исполняемые файлы часто называют скриптами. Они сохраняются в текстовом формате, а не в двоичном. Другими словами, можно открыть сценарий и просмотреть код в текстовом редакторе. Поскольку сценарии не содержат исполняемого машинного кода, для их работы требуется интерпретатор. Например, файл PHP может выполнять код только при запуске через интерпретатор PHP. Если он недоступен, то скрипт PHP можно открыть только в виде текстового документа.
Поскольку исполняемые файлы запускают код при открытии, пользователь не должен открывать неизвестные, особенно те, которые получены в виде вложений электронной почты. Такие скомпилированные исполняемые файлы являются наиболее опасными и могут запускать вредоносный код. Например, VBScript (.VBS) могут автоматически запускаться в системах Windows через встроенный Windows Script Host. Аналогично AppleScript (.SCPT) могут запускаться через интерпретатор AppleScript, включенный в Mac OS X.
Пользовательский интерфейс MSI
MSI — это файлы базы данных, используемые установщиком Windows. Они содержат информацию о приложении, которая разделена на функции и компоненты, и каждый компонент может содержать данные реестра. Ярлыки MSI содержат пользовательский интерфейс, которые используются для установки, и различные другие данные в виде предварительных условий. Он также может содержать фактические файлы, которые должны устанавливаются самостоятельно, в настоящее время это рекомендуемый способ установки MSI в Windows. Альтернативой является написание программы, которая самостоятельно выполняет установку.
MSI выполняются EXE, который является частью Windows и называется MSIEXEC.EXE. Это приложение считывает данные в MSI и выполняет процесс.
Алгоритм запуска файлов MSI:
Открывают меню «Пуск» в нижнем левом углу экрана.
Нажимают «Компьютер», чтобы открыть собственный файловый менеджер Windows 7 с именем Windows Explorer. Он отображает диски и папки на левой панели. Если нажать по одному из дисков или папок, можно увидеть его содержимое на правой панели.
Нажимают «Организовать» в верхнем левом углу менеджера и выбирают «Папка и параметры поиска» в раскрывающемся меню. Откроется окно «Параметры папки».
Нажимают «Вид» в верхней части окна «Параметры папки», чтобы просмотреть параметры просмотра.
Снимают флажок «Скрывать расширения для известных типов» в разделе «Файлы и папки», чтобы увидеть все расширения.
Нажимают «Применить», а затем «ОК», чтобы применить настройки и закрыть окно «Параметры папки».
Используют окно проводника, чтобы найти MSI, который нужно выполнить.
Нажимают «Тип» в верхней части правой панели, чтобы отсортировать файлы по типу, чтобы все MSI отображались вместе. Если «Тип» не отображается в верхней части правой панели, передвигают ползунок представления в «Детали», чтобы отобразить сведения, включая «Тип». Слайдер вида находится в верхнем правом углу окна проводника.
Дважды нажимают MSI, чтобы запустить приложение установщика Windows.
Запуск для системы DOS
Для того чтобы запустить файл из MS-DOS, запускают исполняемый тип, который представляет собой .exe, .bat или .com. Для проверки, какие документы в текущем каталоге являются исполняемыми, используют команду «dir» в приглашении MS-DOS. Этим способом можно определить ресурс с установочными файлами .exe или заменить их на .bat или .com. После того как определено имя исполняемого типа, вводят его имя в командной строке MS-DOS. Например, если исполняемый файл — game.exe, вводят в командной строке «game».
Если не находится файл или поступает сообщение об ошибке, например «неверная команда или имя файла», скорее всего, этот файл отсутствует в текущем каталоге. Переходят в каталог исполняемого и снова вводят команду. Важно помнить, что при запуске его из оболочки MS-DOS (в MS-DOS в Windows) программа все равно будет использовать Windows для запуска.
Создание директив для Windows
Каждое приложение должно быть скопировано на ПК с определенной структурой каталогов, которая гарантирует его правильное функционирование. Можно применить специальное ПО, например Inno Setup, которое очень полезно при создании исполняемых файлов (EXE), которые действуют как установщики приложений под Windows.
Основные преимущества бесплатного ПО заключаются в том, что оно обладает большим количеством функций, которые работают практически во всех системах Windows (7, 2008 R2, Vista, XP, 2008, 2003, 2000, Me, 98, 95 и NT 4.0. 32 бита и 64 бита). Для начала рекомендуется использовать мастер, а затем встроенный редактор сценариев для расширенной компиляции файлов установки.
В папке Inno Setup Example Scripts имеется множество примеров шаблонов различных моделей установщиков приложений, предварительно рекомендуется попробовать их все, чтобы получить представление о диапазоне доступных вариантов.
Опытные пользователи этого программного обеспечения, могут создавать свои собственные сценарии и изменять их, создавая мощные файлы для приложений. Рекомендуется просмотреть включенный справки, чтобы получить дополнительную информацию о доступных командах.
Нахождение расположения installation files
Для того чтобы определить, какие файлы установочные, проще всего взглянуть на свойства ярлыка. Последовательность действий:
Открывают окно свойств ярлыка, например для Firefox.
Можно использовать сочетания клавиш, если ярлык либо в меню «Пуск», либо в списке «Программы».
Нажимают правой кнопкой мыши по ярлыку и выбирают «Свойства».
Находят полный путь к исполняемому файлу и его имя.
Для этого примера: C: \ Program Files \ Mozilla Firefox \ firefox.exe.
Переходят к EXE через папку Mozilla Firefox, где и будет расположен установочный файл «Виндовс 7» для Firefox.
Архивирование игры
Для того чтобы превратить игру в один EXE используют популярный архиватор WinRAR, создают новый архив и называют его. Копируют туда все игровые данные .exe, файл шрифта, Unity exe и другое. Нажимают SFX, затем дополнительные параметры. Это превратит весь RAR в программу, которая будет извлекать себя, а затем запускать игру.
Добавляют имя установочного файла игры в «Запуск после извлечения». Убеждаются, что процесс извлечения скрыт и идет во временный каталог.
Устанавливают флажок «Перезаписать все файлы»: на случай, если понадобится исправить ошибку, она заменит существующий материал во временной папки новым.
Добавляют значок, если нужно, в разделе «Текст и значок».
После сохранения и нажатия должен быть один .exe, который будет работать.
Метод создания IExpress
IExpress — это утилита, поставляемая в комплекте с версиями Windows, начиная с Windows XP и выше. Утилита поставляется с графическим интерфейсом, называемым IExpress Wizard. И также можно создавать установочные файлы, используя файлы SED, написанные вручную с использованием мастера.
Как и в 7-Zip выше, этот метод создает самораспаковывающийся архив с двумя основными отличиями. Во-первых, конечный пользователь будет проходить через многостраничный мастер установки, и во-вторых, конечный пользователь может указать целевой каталог, в котором находится инструмент и распакует файлы.
Порядок создания установщика EXE с помощью IExpress:
Открывают приглашение «Выполнить» клавишей Windows + R и вводят iexpress.exe, чтобы запустить мастер IExpress.
Выбирают «Создать новый файл директивы самоизвлечения» и нажимают «Далее».
Выбирают «Извлечь только файлы» и нажимают «Далее».
Для подтверждения запроса выбирают «Нет запроса» или «Запрос пользователя с помощью».
Для лицензионного соглашения отображают лицензию, если нужно, чтобы конечный пользователь согласился с каким-либо лицензионным соглашением (EULA), если нет, то лучше выбрать «Не отображать лицензию».
Для того чтобы добавить все файлы, которые нужно увидеть установленными, нажимают кнопку «Добавить», переходят к папке выбрать их все.
Продолжают работу с помощью мастера IExpress и выбирают нужные параметры для подсказок «Показать окно» и «Готовое сообщение».
В качестве имени пакета нажимают «Обзор», переходят к месту, где нужно создать установочный EXE, и присваивают ему имя.
Нажимают «Далее».
Выбирают «Сохранить файл директивы самоизлечения (SED)», если нужно создать измененный установщик позже. Если будет выбрано «Не сохранять», то придется пройти весь процесс с нуля.
На странице «Создание пакета» нажимают «Далее» для окончания процесса.
Пакет приложений, объединяющий все документы в один, называемый установочным файлом, упрощает развертывание и настройку их на компьютерах пользователей. Настройка снижает общую стоимость владения ресурсом, позволяя эффективно устанавливать и настраивать приложения. В результате получается пакет, который предоставляет продукту новые возможности, такие как объявление функций без их установки, установка продуктов по запросу, добавление пользовательских настроек и другие.