Что такое windows installer
Установщик Windows
эта документация предназначена для разработчиков программного обеспечения, желающих использовать установщик Windows для создания пакетов установщика для приложений. если вы ищете распространяемый пакет для установщик Windows 4,5 и более ранних версий, ознакомьтесь с этой статьей. обратите внимание, что для установщик Windows 5,0 не существует распространяемого пакета. эта версия входит в состав ос Windows 7, Windows Server 2008 R2 и более поздних выпусков клиента и сервера (включая Windows 10).
Microsoft установщик Windows — это служба установки и настройки, предоставляемая с Windows. Служба установщика позволяет клиентам обеспечить лучшее корпоративное развертывание и предоставляет стандартный формат для управления компонентами. Установщик также включает объявление приложений и функций в соответствии с операционной системой. Дополнительные сведения см. в разделе поддержка платформ объявления.
в этой документации описывается установщик Windows 5,0 и более ранних версий. не все возможности, доступные в более поздних версиях установщик Windows, доступны в более ранних версиях. в этой документации не описываются версии, предшествующие установщик Windows 2,0. пакеты установки и исправления, созданные для установщик Windows 2,0, можно по-прежнему устанавливать с помощью установщик Windows 3,0 и более поздних версий.
Windows Установщик 3,0 и более поздних версий может устанавливать несколько исправлений с одной транзакцией, которая интегрирует ход выполнения установки, откат и перезагрузку. Установщик может применять исправления в указанном порядке, независимо от порядка, в котором в систему передаются исправления. установка исправлений с помощью установщик Windows 3,0 обновляет только файлы, которые затронули исправление, и могут быть значительно быстрее, чем предыдущие версии установщика. исправления, установленные с установщик Windows 3,0 или более поздней версии, можно удалить в любом порядке, чтобы оставить состояние продукта таким же, как если бы исправление не устанавливалось. учетные записи с правами администратора могут использовать API установщик Windows 3,0 и более поздних версий для запроса и инвентаризации продуктов, компонентов, компонентов и сведений об исправлениях. Установщик можно использовать для чтения, изменения и замены списков источников для сети, URL-адресов и источников мультимедиа. Администраторы могут выполнять перечисление по контекстам пользователя и установки, а также управлять исходными списками из внешнего процесса.
Windows Установщик 4,5 и более поздних версий может устанавливать несколько пакетов установки с помощью обработки транзакций. если не удается успешно установить все пакеты в транзакции или пользователь отменяет установку, установщик Windows может откатить изменения и восстановить состояние компьютера в исходном состоянии. Установщик гарантирует, что все пакеты, принадлежащие транзакции с несколькими пакетами, будут установлены или ни один из пакетов не будет установлен.
начиная с установщик Windows 5,0, можно создать пакет для защиты новых учетных записей, Windows служб, файлов, папок и разделов реестра. Пакет может указывать дескриптор безопасности, запрещающий разрешения, задает наследование разрешений от родительского ресурса или задает разрешения новой учетной записи. Дополнительные сведения см. в разделе Защита ресурсов. служба установщик Windows 5,0 может перечислить все компоненты, установленные на компьютере, и получить путь к разделу для компонента. Дополнительные сведения см. в разделе перечисление компонентов. с помощью конфигурации службустановщик Windows пакеты 5,0 могут настраивать службы на компьютере. разработчики программы установки могут использовать установщик Windows 5,0 и создание отдельных пакетов для разработки отдельных пакетов установки, способных установить приложение в контексте установкина компьютере или на уровне пользователя.
Где применимо
Windows Установщик обеспечивает эффективную установку и настройку продуктов и приложений, работающих на Windows. Установщик предоставляет новые возможности для объявления функций без их установки, установки продуктов по требованию и добавления пользовательских настроек.
Windows установщик 5,0, работающий на Windows Server 2012 или Windows 8, поддерживает установку утвержденных приложений на Windows RT. пакет установщик Windows, исправление или преобразование, которые не были подписаны корпорацией майкрософт, не могут быть установлены на Windows RT. Свойство Сводка шаблона Указывает платформу, совместимую с базой данных установки, и в этом случае должна включать значение для Windows RT.
Windows Установщик предназначен для разработки приложений в стиле рабочего стола.
Аудитория разработчиков
эта документация предназначена для разработчиков программного обеспечения, которые хотят создавать приложения, использующие установщик Windows. Он содержит общие фундаментальные сведения о пакетах установки и службе установщика. Он содержит полные описания прикладного программного интерфейса и элементов базы данных установщика. Эта документация также содержит дополнительную информацию для разработчиков, желающих использовать редактор таблиц или средство создания пакетов для установки или обслуживания.
Требования к среде выполнения
Windows установщик 5,0 входит в состав, Windows 7, Windows Server 2008 R2 и более поздних выпусках. распространяемый пакет для установщик Windows 5,0 не существует.
версии более ранних, чем установщик Windows 5,0, были выпущены с Windows server 2008, Windows Vista, Windows Server 2003, Windows XP и Windows 2000. установщик Windows распространяемые компоненты доступны для установщик Windows 4,5 и некоторых более ранних версий.
Windows для установщика 4,5 требуется Windows Server 2008, Windows Vista, Windows XP с пакетом обновления 2 (sp2) или более поздней версии и Windows Server 2003 с пакетом обновления 1 (SP1) и более поздней версии.
Windows для установщика 4,0 требуется Windows Vista или Windows Server 2008. распространяемый пакет для установки установщик Windows 4,0 в других операционных системах отсутствует. обновленная версия установщик Windows 4,0, которая не добавляет новые функции, доступна в Windows Vista с пакетом обновления 1 (sp1) и Windows Server 2008.
Windows для установщика 3,1 требуется Windows Server 2003, Windows XP или Windows 2000 с пакетом обновления 3 (sp3).
Windows для установщика 3,0 требуется Windows Server 2003, Windows XP или Windows 2000 с пакетом обновления 3 (SP3). Windows установщик 3,0 входит в состав Windows XP с пакетом обновления 2 (SP2). он доступен в качестве распространяемого пакета для Windows 2000 server с пакетом обновления 3 (SP3) и Windows 2000 server с пакетом обновления 4 (sp4), Windows XP RTM и Windows XP с пакетом обновления 1 (SP1) и Windows Server 2003 rtm.
Windows установщик 2,0 содержится в Windows Server 2003 и Windows XP.
Windows установщик 2,0 доступен в виде пакета для установки или обновления до установщик Windows 2,0 на Windows 2000. этот пакет не следует использовать для установки или обновления установщик Windows 2,0 на Windows Server 2003 и Windows XP.
Windows Installer: то, что вендор прописал
Продолжая тему работы с Windows Installer, сегодня предлагаю поговорить о готовых инсталляторах, предоставляемых производителями ПО – для их обозначения широко применяется термин «vendor MSI».
Как вы помните из прошлой статьи, Windows Installer является промышленным стандартом установочных файлов и используется в большинстве систем развертывания приложений. Vendor MSI очень удобны для системных администраторов, занимающихся развертыванием ПО в корпоративных сетях. Казалось бы, достаточно взять из документации установочные параметры, использовать их в командной строке или трансформе – и дело сделано. Всё ли так просто?
Предлагаю заглянуть внутрь нескольких vendor MSI и разобраться с их устройством.
Из всякого правила есть исключения. Несмотря на то, что инсталляционный пакет прошел тестирование производителя, будьте готовы столкнуться с непредвиденным поведением в процессе установки, возникающим именно в ваших неповторимых условиях.
Естественно, при подготовке приложения к развертыванию в корпоративной среде нужно руководствоваться в первую очередь рекомендациями производителя ПО. Однако иногда система развертывания понимает только формат MSI, а вендор предоставляет только exe-инсталлятор — в этом случае есть смысл попытаться заполучить именно vendor MSI.
Где взять vendor MSI?
Предположим, нужно развернуть некоторое приложение в нашей сети. Обычно у нас есть установочный пакет, полученный от производителя ПО – скопированный с установочного диска, скачанный с официального сайта и т.д.
Если у нас нет установочного пакета – идем на рутрекер сайт производителя и ищем пакет там. На сайте нет пакета в формате MSI, только онлайн-установщик или setup.exe? Попробуем поискать получше. Часто msi-файл для корпоративных пользователей вместе с инструкциями по развертыванию находится не на главной странице, а в разделе сайта с громким названием вроде «For business» (например, Google Chrome или Skype), или на ftp производителя. Если есть выбор из online и offline установщика – выбираем offline вариант.
Простое правило – установочный пакет (в любом формате) можно скачивать только с официального сайта (или ftp) производителя. НИКОГДА не качайте установщик с «файловых архивов» и «каталогов программ», дабы не столкнуться с неприятным сюрпризом.
Естественно, полные версии платных приложений вроде Adobe Creative Suite вы не найдете в открытом доступе. Если у вас есть лицензия на корпоративную версию, но нет установочных файлов — смело обращайтесь в службу поддержки производителя.
Это можно проверить так:
• Попытаться открыть exe-файл с помощью программы-архиватора (7-zip, WinRAR).
• Запустить установку приложения из имеющегося exe-файла и заглянуть во временные папки (%temp%). Обычно во время установки создается папка со случайным названием, в ней находятся установочные файлы, включая msi-файл. Копируем установочные файлы в надежное место – после окончания процесса установки временная папка удаляется.
• Заглянуть в журналы событий по окончанию установки и проверить наличие свежих записей о событиях с источником MsiInstaller.
• ваш вариант?
Начнем с простого эксперимента на установщике iTunes – откроем файл iTunesSetup.exe с помощью 7-zip и видим, что он включает сразу пять msi-файлов (решить сколько из них «лишние» предлагаю вам самостоятельно).
Убедившись, что мы имеем дело с vendor MSI, продолжаем исследование.
Для удобства предлагаю выделить основные категории vendor MSI. Классификация совершенно условна и основана лишь на личном опыте.
По типу ресурсов:
• «Чистый MSI»
• «Комбинированный MSI»
По типу настройки:
• MSI с простой настройкой через трансформ или параметры
• MSI с мастером настройки
• MSI с файлом ответов
Теперь о каждом немного подробнее и с примерами.
«Чистый MSI»
Общее свойство установщиков такого типа – использование нативных механизмов Windows Installer для установки файлов и ключей реестра. Соответствующие этим ресурсам записи присутствуют в таблицах MSI (File, Registry, Shortcut и т.д.). Для внесения изменений в установку достаточно отредактировать записи этих таблиц в трансформе — вы имеете практически полный котроль над процессом инсталляции.
Простые примеры «чистых MSI» – Skype, InstEd.
Для диагностирования проблем с такими установщиками используются стандартные возможности – чтение записей журнала событий (журнал Application, события с источником MsiInstaller) или полное логирование установки (запуск msiexec с параметром /l*v ).
«Комбинированный MSI»
Пример первый – Google Chrome for Business.
Хорошо видно, что таблица File в установщике вообще отсутствует, а основную часть установки выполняет бинарный Custom Action под названием DoInstall, внутри него и находятся файлы, которые будут установлены в систему.
Еще один интересный пример – Java Runtime Environment. Извлекаем msi-файл с сопутствующим cab-файлом из оффлайн-установщика, распространяемого в формате exe-файла.
Таблица File этого vendor MSI содержит всего четыре записи, основные файлы приложения находятся внутри zip-архива (который в свою очередь находится внутри cab-файла) с последующей их распаковкой в процессе установки:
За основную часть процесса инсталляции отвечает файл regutils.dll, названия Custom Actions довольно красноречивы:
Этот тип инсталляторов несколько тяжелее поддается диагностированию ошибок – логи Windows Installer дадут нам полезную информацию только до момента запуска внутреннего exe-файла, а сам exe-файл не всегда генерирует внятные сообщения при возникновении ошибок. Также такие vendor MSI тяжелее поддаются настройке. Вернее сказать, наши возможности настройки процесса установки чаще всего ограничены только настройками, предусмотренными производителем ПО. Например, производитель ПО не всегда предусматривает возможность отключения установки ярлыков или внесения изменений в файлы настройки приложения при его установке.
Инсталляторы такого типа иногда преподносят неприятные сюрпризы в процессе установки (приходилось разбираться с JRE и Adobe Flash Player, сваливавшимися на выполнении Custom Action), и на диагностику и исправление ошибок может понадобиться некоторое время.
Теперь перейдем к возможностям настройки пакетов, предлагаемым нам производителями ПО.
MSI с простой настройкой через трансформ или параметры
Это самый распространенный способ – большинство vendor MSI имеют возможность такой настройки. Обычно производитель уже предусмотрел самые востребованные настройки вроде отключения автообновлений приложения и настроек подключения к серверу, и описал это в документации. Настройки могут быть описаны в виде параметров командной строки установщика, параметров MSI (MSI properties) или даже описания реестровых записей, которые вы можете добавить в трансформ для пакета.
Стоит упомянуть, что иногда в более новой версии vendor MSI параметры могут вести себя не так, как в предыдущей (или совсем перестать работать, как когда-то произошло с переставшими работать параметрами отключения автообновлений JRE), но это бывает крайне редко.
MSI с мастером настройки
Некоторые вендоры не ограничиваются публикацией перечня параметров командной строки для установки и настройки пакета. Они предоставляют утилиту для тонкой настройки инсталлятора, выполняющую несколько полезных функций:
• Интуитивно-понятный интерфейс избавляет системного администратора от необходимости открывать msi-файл в редакторе и вручную изменять большое количество записей в таблицах
• Утилита обычно предусматривает некоторую «защиту от дурака» и производит проверку правильности значений изменяемых параметров.
В результате выполнения мастера настроек для msi-файла формируется трансформ, который будет использоваться при развертывании пакета. Естественно, вы можете просмотреть содержимое сохраненного трансформа, применив его к открытому в редакторе msi-файлу.
Хорошим примером такого подхода может служить Adobe Customization Wizard, используемый для настройки параметров установки Adobe Reader и Adobe Acrobat:
Другой пример известного мастера настроек – Office Customization Tool (OCT). Эта утилита позволяет сконфигурировать большое количество параметров, относящихся к установке и пользовательским настройкам MS Office. В результате выполнения мастера создается MSP-файл (патч в терминологии Windows Installer), который используется при дальнейшем развертывании MS Office в корпоративной среде.
MSI с файлом ответов
Этот тип инсталляционных пакетов скорее нужно было назвать «Setup.exe с файлом ответов». Идея состоит в том, что некий установочный файл (назовем его Setup.exe) читает некий предварительно сформированный системным администратором конфигурационный файл (config.xml) и формирует набор параметров для запуска расположенного рядом установочного msi-файла (или нескольких msi-файлов).
Этот подход не предусматривает нашей работы непосредственно с msi-файлом, поэтому не будем на нем останавливаться слишком подробно. Упомяну примеры таких установщиков – файлы настроек Adobe Creative Suite (версии CS2-CS3), а также использование файла ответов config.xml для установки MS Office.
Обычно для диагностики в случае проблем установки можно использовать создаваемый программой-установщиком лог-файл с описанием этапов выполнения; дополнительная информация от Windows Installer также попадает в журналы событий.
Как видите, за общим названием vendor MSI скрываются иногда совершенно непохожие инсталляторы. Надеюсь, эта обзорная статья помогла вам получить представление об их многообразии и о возможных проблемах установки и способах их диагностики.
Windows Рекомендации по использованию установщика
в этом разделе приведен список советов, связанных с основной документацией по установщик Windows SDK, которая поможет разработчикам приложений, авторам программы установки, ит-специалистам и разработчикам инфраструктуры найти рекомендации по использованию установщик Windows.
обновите версию установщик Windows.
соблюдение требований к сертификации Windowsных логотипов.
Подготовка пакета к локализации.
обновление средств и документации по разработке установщик Windows.
Если вы решили переупаковать устаревшее приложение установки, следуйте рекомендациям по перепакетированию.
многие поставщики приложений предоставляют собственные пакеты установщик Windows для установки или их продуктов. программное обеспечение, преобразующее существующее приложение установки прежних версий в пакет установщик Windows, называется средством переупаковки. в техническом руководстве по созданию пакетов установщик Windows и перепакетированию программного обеспечения для установщик Windows описано средство перепакетирования, доступное для коммерческого доступа. Перекомпоновка существующего приложения установки не является оптимальной практикой при разработке. приложения, разработанные с самого начала, могут быть проще в установке и обслуживании для использования преимуществ функций установщик Windows. если вы решили использовать переупаковку программного обеспечения, приведенные ниже рекомендации помогут вам получить более установщик Windowsный пакет.
Не пытайтесь заменить защищенные ресурсы.
Windows Пакеты установщика не должны пытаться заменить защищенные ресурсы во время установки или обновления. установщик Windows не удаляет эти ресурсы или не заменяет их, поскольку Windows предотвращает замену необходимых системных файлов, папок и разделов реестра. Защита этих ресурсов предотвращает сбои приложений и операционных систем.
Не зависят от некритических ресурсов.
Установка или обновление не должны зависеть от установки некритических ресурсов по следующим причинам.
используйте API для получения сведений о конфигурации установщик Windows.
установка приложения или обновления не должна зависеть от прямого доступа к установщик Windows сведениям о конфигурации, сохраненным на компьютере. вместо этого используйте установщик Windows программный интерфейс приложения для получения сведений о конфигурации. расположение и формат сведений о конфигурации управляются службой установщик Windows и могут быть изменены.
Организуйте установку приложения вокруг компонентов.
служба установщик Windows устанавливает или удаляет коллекции ресурсов, которые называются компонентами. Поскольку компоненты обычно являются общими, автор пакета установки должен следовать правилам при указании компонентов компонента или приложения.
сократите размер больших пакетов установщик Windows.
очень крупные Windows пакеты принимают системные ресурсы и могут быть сложными для установки пользователями. рекомендуется уменьшить размер очень больших установщик Windows пакетов следующими методами.
При использовании настраиваемых действий следуйте хорошим рекомендациям по настраиваемым действиям.
в установщик Windows имеется множество встроенных стандартных действий для установки и обслуживания приложений. Разработчики должны попытаться полагаться на стандартные действия максимально практично, а не создавать собственные пользовательские действия. Однако существуют ситуации, когда разработчик пакета установки находит необходимость в написании настраиваемого действия.
Если вы используете сборки, следуйте хорошим рекомендациям по сборке
Если пакет использует сборкипрограммного обеспечения, следуйте рекомендациям по добавлению сборок в пакет, обновлению сборок, установке и удалению сборок.
Не поставлять параллельные установки.
параллельные установки, также называемые вложенными установками, устанавливают другой пакет установщик Windows во время выполнения текущей установки. Использование параллельных установок не является хорошей практикой, поскольку они трудно обслуживать клиентам. Установка исправлений и обновления может не работать одновременно с параллельной установкой. вместо этого рекомендуется использовать приложение установки и внешний обработчик пользовательского интерфейса для последовательной установки нескольких пакетов установщик Windows.
Дополнительные сведения об использовании внешнего обработчика пользовательского интерфейса см. в разделе мониторинг установки с помощью мсисетекстерналуи. Дополнительные сведения об использовании внешнего обработчика на основе записей см. в разделе мониторинг установки с помощью мсисетекстерналуирекорд.
Параллельные установки иногда используются в контролируемых корпоративных средах для установки приложений, которые не предназначены для общего использования. Если вы решили использовать параллельные установки, следуйте этим рекомендациям.
Обеспечьте единообразие имен пакетов и кодов пакетов.
Не используйте таблицы Селфрег и TypeLib.
Укажите параметр для установки без пользовательского интерфейса.
Администраторы часто предпочитают развертывать приложения в корпорации, не требуя вмешательства пользователя. Рекомендуется предоставить приложению возможность установки с уровнем пользовательского интерфейса «нет».
Избегайте использования политики AlwaysInstallElevated.
Если политика AlwaysInstallElevated не задана, то приложения, распространяемые администратором, устанавливаются с использованием привилегий пользователя, и только управляемые приложения получают повышенные привилегии. установка этой политики направляет установщик Windows использовать системные разрешения при установке приложения в системе. Этот метод может открыть компьютер под угрозу безопасности, так как при установке этой политики пользователь без прав администратора может запускать установки с повышенными привилегиями и получать доступ к защищенным расположениям на компьютере. Рекомендуется использовать другой метод, отличный от политики AlwaysInstallElevated при установке пакета с повышенными привилегиями для неадминистратора или исправления Per-User управляемых приложениях.
Включите политику Дисаблемедиа, чтобы ограничить несанкционированную установку.
Политика дисаблемедиа может препятствовать несанкционированной установке приложений. Если эта политика включена, пользователи и администраторы, выполняющие установку одного продукта, не смогут использовать диалоговое окно «Обзор» для просмотра источников мультимедиа, таких как CD-ROM, для источников других устанавливаемых продуктов. Просмотр других продуктов запрещается независимо от того, выполняется ли установка с повышенными привилегиями. Пользователь по-прежнему может переустановить продукт с носителя, если у пользователя есть правильно помеченный источник мультимедиа.
Обеспечьте безопасность и доступность исходных исходных файлов пакета для пользователей.
в некоторых случаях для установки по запросу, восстановления или обновления приложения может потребоваться исходный источник установщик Windows пакета. Если установщик не может найти доступный источник данных, пользователю предлагается предоставить носитель или подключиться к сетевому расположению, содержащему необходимые источники. Рекомендуется убедиться, что у установщика есть необходимые вам источники, без запроса пользователя.
Включите подробное ведение журнала на компьютере пользователя при устранении неполадок развертывания.
установщик Windows ведение журнала включает параметр подробного ведения журнала, который можно включить на компьютере пользователя. сведения в подробном журнале могут пригодиться при устранении неполадок при установщик Windows развертывания пакета.
При удалении компьютер пользователя остается в чистом состоянии.
Удаление приложения так же важно, как установка. при удалении пакета установщик Windows не следует оставлять бесполезными части самого себя на компьютере пользователя.
Тестовые пакеты для развертывания с установкой на уровне пользователя и на компьютере.
Рекомендуется позволить клиентам решить, следует ли развертывать пакет для установки в контексте установкина компьютере или на уровне пользователя.
Спланируйте и протестируйте стратегию обслуживания перед отправкой приложения.
Прежде чем развертывать приложение в первый раз, необходимо решить, как вы планируете обслуживать приложение.
Сократите зависимость обновлений от исходных источников.
Если исходные файлы необходимы для обновления приложения, это может усложнить обслуживание приложения. Следующие методы позволяют уменьшить зависимость обновлений от исходных источников.
Не распространяйте необслуживаемые модули слияния.
Приложения не должны зависеть от модулей слияния для установки компонента, если владелец модуля слияния и владелец приложения различаются. Это может усложнить обслуживание приложения, поскольку обоим владельцам необходимо координировать обновление приложения или модуля. Не зная всех приложений, которые использовали модуль слияния, владелец приложения не сможет обновить модуль слияния без риска, что обновление может быть несовместимо с другим приложением. владелец модуля слияния не имеет прямого метода для обновления пакетов установщик Windows, которые уже установили модуль слияния.
Избегайте установки исправлений для административных установок.
укажите в сети административную установку исходного пакета установщик Windows приложения, чтобы разрешить участникам рабочей группы устанавливать приложение. Пользователи этого административного образа должны затем применить обновления к локальному экземпляру приложения, расположенному на своем компьютере. Это позволяет пользователям синхронизироваться с административным образом. Применение обновлений к административной установке не рекомендуется по следующим причинам.
Регистрация обновлений для запуска с повышенными привилегиями.
начиная с установщик Windows 3,0, можно применить исправления к приложению, которое было установлено в контексте, управляемом пользователем, после того как исправление будет зарегистрировано как имеющее повышенные привилегии. вы не можете применить исправления к приложениям, которые установлены в контексте, управляемом пользователем, с использованием версий установщик Windows более ранних, чем 3,0.
Используйте таблицу Мсипатчсекуенце для последовательного исправления.
Тщательно протестируйте пакет установки.
проверьте правильность установки, восстановления и удаления пакета установщик Windows. Процесс тестирования можно разделить на следующие части.
Устраните все ошибки проверки перед развертыванием нового или измененного пакета установки.
выполните проверку пакета для нового или измененного пакета установщик Windows, прежде чем пытаться установить его в первый раз. при проверке выполняется проверка установщик Windows базы данных на наличие ошибок разработки. Попытка установить пакет, который не проходит проверку, может повредить систему пользователя.
Создайте безопасную установку.
Следуйте приведенным ниже рекомендациям при разработке пакета, чтобы обеспечить безопасность среды во время установки.
Использовать ПМСИХАНДЛЕ вместо HANDLE
Например, при использовании следующего кода: