Эта инструкция должна помочь, если при установке какой-либо программы в Windows 7, Windows 10 или 8.1 вы видите одно из следующих сообщений об ошибке:
- Служба установщика Windows 7 недоступна
- Не удалось получить доступ к службе установщика Windows. Это может произойти, если неверно установлен установщик Windows
- Не удалось получить доступ к службе установщика Windows Installer
- Возможно, не установлен Windows Installer
По порядку разберем все шаги, которые помогут исправить эту ошибку в Windows. См. также: какие службы можно отключить для оптимизации работы.
1. Проверить, запущена ли служба установщика Windows и есть ли она вообще
Откройте список служб Windows 7, 8.1 или Windows 10, для этого, нажмите клавиши Win + R и в появившемся окне «Выполнить» введите команду services.msc
Найдите в списке службу Установщик Windows (Windows Installer), дважды кликните по ней. По умолчанию, параметры запуска службы должны выглядеть как на скриншотах ниже.
Обратите внимание, что в Windows 7 можно изменить тип запуска для установщика Windows — поставить «Автоматически», а в Windows 10 и 8.1 данное изменение заблокировано (решение — далее). Таким образом, если у вас Windows 7, попробуйте включить автоматический запуск службы установщика, перезагрузить компьютер и попробовать установить программу снова.
Важно: если у вас нет службы Установщик Windows или Windows Installer в services.msc, или если она есть, но вы не можете поменять тип запуска этой службы в Windows 10 и 8.1, решение для этих двух случаев описано в инструкции Не удалось получить доступ к службе установщика Windows Installer. Там же описаны пара дополнительных методов исправить рассматриваемую ошибку.
2. Исправление ошибки вручную
Еще один способ исправить ошибку, связанную с тем, что служба установщика Windows недоступна — заново зарегистрировать службу Windows Installer в системе.
Для этого запустите командную строку от имени администратора (в Windows 8 нажать Win + X и выбрать соответствующий пункт, в Windows 7 — найти командную строку в стандартных программах, кликнуть по ней правой кнопкой мыши, выбрать «Запуск от имени Администратора).
Если у вас 32-битная версия Windows, то введите по порядку следующие команды:
msiexec /unregister msiexec /register
Это перерегистрирует службу установщика в системе, после выполнения команд, перезагрузите компьютер.
Если у вас 64-битная версия Windows, то выполните по порядку следующие команды:
%windir%\system32\msiexec.exe /unregister %windir%\system32\msiexec.exe /regserver %windir%\syswow64\msiexec.exe /unregister %windir%\syswow64\msiexec.exe /regserver
И также перезагрузите компьютер. Ошибка должна исчезнуть. Если проблема сохраняется, попробуйте вручную запустить службу: откройте командную строку от имени администратора, а затем введите команду net start MSIServer и нажмите Enter.
3. Сброс параметров службы установщика Windows в реестре
Как правило, второго способа оказывается достаточно для исправления рассматриваемой ошибки установщика Windows. Однако, если проблему так и не удалось решить, рекомендую ознакомиться со способом сброса параметров службы в реестре, описанный на сайте Microsoft: http://support.microsoft.com/kb/2642495/ru
Обратите внимание, что способ с реестром может не подходить для Windows 8 (точной информации на этот счет дать, не могу.
Удачи!
Устройство и развертывание пакетных файлов
Какому администратору Windows не знакомы символы msi? Служба Windows Installer (программа msiexec.exe) и ее пакетный файл .msi — фактически стандартная технология для установки приложений Windows. Преимущества пакета установки приложений Windows Installer общеизвестны. Во-первых, при сбоях в процессе установки пакет .msi отменяет выполненный фрагмент установки и восстанавливает исходное состояние компьютера, тем самым предотвращая повреждения приложений и системы. Во-вторых, .msi-упакованное приложение обладает способностью к самовосстановлению, если пользователь удаляет один из его файлов. И наконец, Windows Installer обеспечивает установку программ на пользовательских компьютерах. Основные принципы работы Windows Installer широко известны, но более глубокое понимание внутренних механизмов Windows Installer и пакетов .msi позволит строить специализированные пакеты установки приложений и упростит диагностику сбоев в процессе развертывания. Ниже приводится обзор технологии Windows Installer, а затем речь пойдет о структуре пакетов .msi и их взаимодействии со службой Windows Installer.
Технология Windows Installer
Технология Windows Installer была разработана около четырех лет назад, а позднее стала базовым компонентом операционной системы Windows 2000 Server. Windows Installer 2.0 входит в состав Windows Server 2003 и Windows XP и поддерживает сборки Microsoft .NET (блок установки в .NET). Пользователи могут получить Windows Installer либо вместе с операционной системой Windows в качестве службы Windows Installer, либо в составе комплекта разработки программ (software development kit, SDK). Служба Windows Installer представляет собой механизм, который устанавливает пакеты Windows Installer (.msi-файлы). SDK содержит спецификации и API, определяющие формат и функцию .msi-файлов. Windows Installer SDK представляет собой составную часть Platform SDK. Его можно загрузить по адресу http://www.microsoft.com/msdownload/platformsdk/ sdkupdate/sdkinfo.htm. Разработчики и поставщики инструментов упаковки программ, такие как InstallShield Software, OnDemand Software и Wise Solutions (в настоящее время подразделение компании Altiris), применяют SDK для подготовки пакетов установки приложений. Программисты часто используют инструменты упаковки приложений, которые преобразуют старые процедуры установки в формат Windows Installer, чтобы скрыть от пользователей сложность технологии Windows Installer.
Продукты, функции и компоненты
.msi-файл представляет собой сложную базу инструкций по установке приложений, которая содержит десятки таблиц, сотни столбцов и иногда вложенные файлы. В базе данных хранится информация о требованиях операционной системы к установке приложения, этапах установки и даже диалоговых окнах, выводимых на экран.
.msi-файл имеет трехуровневую структуру. Высший уровень — продукт, собственно приложение. Продукту присваивается уникальный код — глобально уникальный идентификатор (globally unique identifier, GUID). На следующем уровне располагаются функциональные блоки внутри продукта. Функциональные блоки имеют имена и могут быть добавлены по желанию пользователя. На экране 1 показан пример функциональных блоков в приложении — в данном случае Microsoft Office Access и Microsoft Office Excel в пакете установки Microsoft Office. Функциональный блок — это единый блок для установки внутри пакета Windows Installer. Устанавливаются (или удаляются) функциональные блоки пакета, а не отдельные файлы.
Экран 1. Функциональные блоки приложения, упакованного для Windows Installer |
На экране 1 видно, что Excel состоит из множества функциональных подблоков, таких как Help и Spreadsheet Templates. Во время установки пользователь может указать подблоки, которые следует установить на компьютере локально или запускать с сервера, добавить при первом обращении к ним (обозначается единицей в пиктограмме подблока) или вообще не требуется устанавливать. Метод «объявления» (advertisement) подблоков описан по врезке «Возможности объявлений».
Функциональные блоки состоят из компонентов, которые представляют третий уровень иерархии .msi-файла. Компонент — это базовая единица пакета Windows Installer и строительный блок приложения. Компонент может быть файлом или группой файлов, параметром реестра, ярлыком или ресурсом (например, пиктограммой). С компонентом связан ключевой путь (key path). Ключевой путь определяет файл или параметр, без которого невозможна полная установка компонента. Ключевой путь — основа механизма самовосстановления пакетов на базе Windows Installer. При ремонте .msi-упакованного приложения служба Windows Installer проверяет полноту всех ключевых путей компонентов. Если ключевой путь какого-нибудь компонента отсутствует, служба Windows Installer определяет, какому функциональному блоку принадлежит компонент, и повторно устанавливает функциональный блок. Таким образом, время, необходимое для ремонта развернутого приложения, отчасти зависит от числа компонентов в пакете и числа компонентов в функциональном блоке, содержащем испорченный компонент.
База данных Windows Installer
Как отмечалось ранее, .msi-файл представляет собой набор инструкций по установке, организованных в таблицы. Windows Installer SDK определяет каждую таблицу и столбец. С помощью редактора баз данных Orca из Windows Installer SDK можно просматривать и редактировать содержимое .msi-файла. .msi-файл установки для Orca находится в подкаталоге in установочного каталога Platform SDK (например, c:program filesplatform sdkin). После установки Orca можно открыть любой .msi-файл. В левой панели интерфейса Orca представлен список таблиц файла. Выделив таблицу, в правой панели можно увидеть ее строки и столбцы.
Экран 2. Таблицы базы данных приложения, упакованного для Windows Installer |
На экране 2 показана таблица LaunchCondition пакета Windows Installer для Group Policy Management Console (GPMC). В правой панели таблицы представлены минимальные требования к операционной системе и платформе для установки GPMC. В столбце Condition содержатся условия, которые должны быть выполнены в процессе установки. В столбце Description описаны минимальные требования для набора условий. Приступая к установке приложения, Windows Installer проверяет, удовлетворены ли условия запуска, прежде чем продолжить установку.
Таблицы последовательностей (sequence table) представляют собой ядро базы данных; в них перечислены действия, которые служба Windows Installer должна выполнить в процессе установки, и порядок их выполнения. Например, в таблице последовательностей указывается, что механизм Installer должен сначала проверить условия запуска в таблице LaunchCondition, затем скопировать исходные файлы в каталог назначения и подготовить набор элементов реестра. Таблицы последовательностей бывают трех типов: Admin, Advertisement и Install. Тип таблицы последовательностей, используемый Windows Installer, зависит от типа выполняемой процедуры установки. Описания типов таблиц последовательностей даны в таблице 1.
С каждой таблицей последовательностей связаны две вспомогательные таблицы. Одна из них — InstallUISequence — определяет диалоговые окна пользовательского интерфейса, которые должны отображаться при интерактивной (управляемой пользователем) установке. Другая таблица — так называемая таблица «исполнительной последовательности» (execute sequence; InstallExecuteSequence) — определяет шаги, необходимые для установки.
Последовательность состоит из набора заранее определенных стандартных функций, которые перечислены в столбце Action таблицы InstallExecuteSequence. Стандартные функции выполняют разнообразные задачи, в том числе копирование файлов, поиск новых версий программы и определение размера дискового пространства, доступного при установке. В документации SDK и Orca приведены подробные сведения о назначении конкретного пакета Windows Installer. С помощью Orca можно подготовить специальные операции для задач, которые нельзя решить с использованием стандартных функций пакета Windows Installer. Специальная операция может быть DLL, составленной пользователем, и даже сценарием VBScript для таких действий, как поиск в Active Directory (AD) определенных значений перед продолжением установки.
Таблица Property — еще одна важная часть базы данных .msi. Свойства представляют собой постоянные величины, задавая которые можно управлять ходом установки. В сущности, свойства есть переменные среды для .msi-файла. В пакетах Windows Installer часто используется свойство ALLUSERS, которое указывает процедуре установки, каким образом хранится информация о конфигурации приложения — для пользователя или для компьютера. Имена свойств чувствительны к регистру и их можно указывать в командной строке во время установки или используя трансформацию.
Трансформации, исправления и модули слияния
.msi-файл, полученный от поставщика, часто не располагает всем необходимым для развертывания пакета в конкретной среде. Например, потребитель может пожелать развернуть пакет автоматически с помощью инструмента развертывания программного обеспечения или установить только определенные функциональные блоки. В такой ситуации могут пригодиться трансформации. Трансформация — это специальный тип файла базы данных .msi, обычно имеющего расширение .mst. Трансформации применяются к процедуре развертывания приложения во время установки. В сущности, они изменяют выбираемые по умолчанию значения в пакете .msi, управляя процессом установки. Измененные значения в .msi-файле не сохраняются; они просто определяют, как будет протекать конкретная установка.
Файлы исправлений (patch file или .msp-файлы) отличаются от трансформаций. Как правило, поставщик выпускает файл исправлений, когда нужно модернизировать продукт, не прибегая к его глубокой переработке. Примером исправлений могут служить обновления для системы безопасности. После установки исправления в экземпляре .msi-файла, хранящемся в кэше рабочей станции, производятся постоянные изменения. Чтобы новые пользователи в будущем получали обновленные файлы, следует применить файлы исправлений к исходному пакету приложения.
Еще один вариант .msi-файла — модуль слияния (merge module, или .msm-файл), набор компонентов, многократно используемых при установке приложений. Например, в различных программах независимых поставщиков применяются компоненты Microsoft Data Access Components (MDAC). Вместо того чтобы воспроизводить установку общих компонентов в каждом новом .msi-пакете, авторы пакетов приложений могут задействовать модули слияния, предоставляемые поставщиками общих компонентов. Модули слияния — упрощенные файлы базы данных .msi, содержащие только общие функциональные блоки и компоненты для процедур установки приложений. Часто собственно компонентные файлы встраиваются в .msm-файл, что позволяет использовать модули слияния с разными пакетами. Затем .msm-файлы вставляются в основной пакет Windows Installer для данного приложения на этапе создания пакета.
При подготовке нового пакета установки файлы приложения можно вставить в .msi-файл. Как правило, файлы вставляются в виде встроенных файлов .cab, которые представляют собой сжатые наборы файлов, похожие на .zip-файлы. В .msi-файл удобно вставлять .cab-файлы не очень большого размера. Например, в Office имеются отдельные .msi- и .cab-файлы, так как размеры .cab-файлов Office достигают нескольких сотен мегабайт. Однако, упаковав все необходимые файлы малого приложения в .msi-файл, можно получить компактный файл, который удобно распространять среди пользователей. Извлечь встроенный .cab-файл из .msi-файла можно с помощью инструмента msidb.exe пакета Windows Installer SDK.
Служба Windows Installer
Пакеты Windows Installer и служба Windows Installer взаимозависимы: они не могут существовать друг без друга. Служба Installer по умолчанию устанавливается на всех компьютерах с версиями операционной системы, выпущенными после Windows 2000: редистрибутивную версию (автономную версию службы Installer и сопутствующие DLL) можно развернуть на компьютерах Windows NT Server 4.0 и Windows 9x. Служба Installer работает в контексте привилегированной пользовательской учетной записи LocalSystem. Чтобы запустить службу Windows Installer, нужно дважды щелкнуть на .msi-файле (например, в Windows Explorer); при запуске службы формируется новый процесс Installer (msiexec.exe) в контексте полномочий пользователя. После того как Windows Installer завершит установку приложения, служба Installer закрывается до следующего обращения к ней.
Служба Windows Installer обеспечивает набор функций, удобных для развертывания программ, особенно при использовании совместно с функцией Software Installation в Group Policy. Главная среди этих функций — повышение полномочий (privilege escalation). Когда обычный пользователь пытается установить приложение на своем компьютере, дважды щелкнув на .msi-файле, его полномочий для выполнения установки не всегда достаточно. Однако при развертывании приложения с помощью функции Software Installation групповой политики служба Windows Installer выполняет установку в своем контексте безопасности LocalSystem.
В частности, служба Installer создает новый процесс msiexec.exe в контексте безопасности пользователя для выполнения той части установки, которая проводится в пользовательском профиле. Служба Installer использует собственный повышенный контекст безопасности (учетную запись LocalSystem) для выполнения специфической для данного компьютера части процедуры установки, для проведения которой у пользователя полномочий нет. Приложения, развернутые таким способом, называются управляемыми (managed applications). Повышение полномочий, используемое Windows Installer для управляемых приложений, как правило, возможно только при применении групповой политики, хотя метод доступен и вне процедур на базе Group Policy Object (GPO), через политику Administrative Template.
В рамках взаимозависимых отношений между Group Policy и службой Windows Installer реализованы объявления (advertisement). Как отмечалось ранее, при связывании программы с пользователем в Group Policy, в сущности, производится установка с объявлением. Таким образом, механизм Windows Installer обрабатывает сценарий объявления приложения (файл .aas), а не непосредственно .msi-файл. Файл .aas создается, когда для развертывания приложения используется Group Policy. Чтобы создать .aas-файл, редактор Group Policy Editor (GPE) вызывает функцию, экспортируемую из msi.dll (основная DLL, используемая msiexec.exe), которая генерирует уникальный сценарий объявлений внутри GPO. Таким образом, когда механизм Windows Installer обрабатывает сценарий объявлений, ему известно местонахождение соответствующего .msi-файла и части приложения, которые нужно объявить. Другими словами, процедура установки программ на базе GPO тесно связана со службой Windows Installer и наоборот.
Хранение файлов Installer на рабочей станции
Рассмотрим, что происходит на рабочей станции, когда служба Windows Installer устанавливает пакет .msi. Во-первых, чтобы обеспечить отмену действий в случае сбоя, Installer делает резервные копии всех замененных файлов, сохраняя их во временной папке на жестком диске пользователя, обычно C:config.msi. Заглянув в эту папку в ходе установки, можно увидеть в ней временные файлы с необычными именами, созданные службой Installer. После завершения установки служба Installer удаляет временные файлы.
Закончив установку, Windows Installer сохраняет экземпляр ассоциированного .msi-файла и любые трансформации, использовавшиеся Windows Installer при установке приложения, в папке \%windir%installer, назначая файлам уникальные условные имена (например, 19fe9b79.msi). Файлы в \%windir%installer в действительности представляют собой кэшированные копии всех .msi-файлов, обработанных службой Windows Installer на компьютере. Благодаря наличию кэшированных копий пользователь может изменить или удалить приложение, не обращаясь к оригинальному пакету установки, который может находиться на разделяемом диске сервера, недоступном мобильному пользователю. Windows отслеживает все развернутые приложения на базе .msi; имеющиеся функциональные блоки, компоненты и исправления, а также имя кэшированного .msi-файла в реестре.
Чтобы выяснить, какой .msi-файл с непонятным именем соответствует данному приложению на рабочей станции, следует перейти в раздел реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionInstallerUserData. Разделы упорядочены по SID имени пользователя; первой показана учетная запись LocalSystem, S-1-5-18, далее обычно перечисляются все приложения, установленные на компьютере. Список доступных пользователю программ приведен под соответствующим SID пользователя.
Запуск Installer Files из командной строки и в сценариях
Существует два дополнительных способа запуска пакетных установок Windows Installer — из командной строки и сценария. С помощью msiexec.exe можно выполнять различные процедуры установки из командной строки. Полный список функций командной строки для msiexec.exe приведен в статье Microsoft «Command-Line Switches for the Microsoft Windows Installer Tool» по адресу http://support.microsoft.com/?kbid=227091. Например, из командной строки можно установить один функциональный блок в прикладном пакете, такой как инструменты консоли DNS в пакете Windows 2003 Administration Tools (adminpak.msi). С помощью Orca следует отыскать нужное имя функционального блока — в данном случае FeDNSConsole — и запустить msiexec.exe из командной строки, чтобы произвести установку:
msiexec /I adminpak.msi ADDLOCAL=FeDNSConsole
Свойство ADDLOCAL используется данной командой, чтобы указать службе Windows Installer функциональные блоки пакета, которые необходимо установить. Метод командной строки используется вместо выбора функциональных блоков пользователями или установки отдельных блоков администратором с помощью файла трансформации.
В Windows Installer SDK имеются примеры, поясняющие использование сценариев Windows Script Host (WSH) для взаимодействия со службой Windows Installer и пакетами .msi. Объект WindowsInstaller.Installer располагает методами и свойствами, которые можно применять в сценариях для выполнения таких операций, как подготовка списка всех .msi-пакетов, имеющихся в системе, добавление .cab-файла в базу данных .msi, применение трансформации в ходе установки и сравнение двух .msi-файлов базы данных. Более подробную информацию о сценарных объектах Windows Installer можно получить, изучив сценарии примеров Installer SDK в папке http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/using_the_automation_interface.asp.
Как было показано выше, задачи Windows Installer не ограничиваются простым щелчком на .msi-файле. Мощная технология Windows Installer позволяет гибко и быстро устанавливать программы, но для эффективного использования службы необходимо понимать принципы ее работы.
Даррен Мар-Элиа — редактор журнала Windows & NET Magazine. С ним можно связаться по адресу: dmarelia@winnetmag.net
Возможности объявлений
Объявление приложений — компонент Windows Installer, который широко используется при развертывании приложений с помощью Group Policy. Объявленное приложение на самом деле не устанавливается на настольном компьютере пользователя, обозначается лишь «присутствие» приложения. Это может быть ярлык на рабочем столе или в меню Start, ассоциирование файлов в реестре и даже COM-компонент, зарегистрированный в HKEY_CLASSES_ROOT. Объявление оповещает пользователя о том, что приложение установлено и готово к использованию. Однако сами файлы приложения разворачиваются лишь после первого обращения пользователя к приложению. Преимущество объявлений заключается в том, что приложения доступны, но устанавливаются лишь после того, как в них возникает необходимость. Благодаря объявлениям, администратору, обслуживающему 20 тыс. настольных компьютеров, приходится обновлять приложения только на компьютерах, пользователи которых действительно работают с этими программами. Недостаток объявлений — вынужденное ожидание в течение нескольких минут, пока система устанавливает приложение для первого запуска.
Типы таблиц последовательностей
Тип таблицы последовательностей | Описание |
Admin | Используется для административных установок приложений (с сервера) |
Advertisement | Используется для установки с объявлениями |
Install | Используется для интерактивных или автоматических установок на локальном компьютере — наиболее распространенный тип |
Шаблон:Карточка программы
Шаблон:Distinguish
Windows Installer (установщик Windows) — подсистема Microsoft Windows, обеспечивающая установку программ (инсталлятор). Является компонентом Windows, начиная с Windows 2000; может доустанавливаться и на более ранние версии Windows. Вся необходимая для установки информация (иногда и вместе с устанавливаемыми файлами) содержится в установочных пакетах (installation packages), имеющих расширение .msi.
История[]
Windows Installer был разработан в 1995—1998 годах и имел вначале кодовое название Darwin. Ранние версии назывались Microsoft Installer, отсюда стандартное расширение файла инсталляционного пакета — .msi.[1]
Первая версия 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).
Откат[]
Если какое-либо из действий, определённых в сценарии, оканчивается неудачей, или установка в процессе отменяется пользователем, все действия, выполненные до этого места, откатываются, возвращая систему в состояние, бывшее до установки. Откат обеспечивается наличием для каждого действия, вносящего изменение в систему, обратного к нему. Вводя в пакет нестандартные действия, программист также должен создать обратные к ним для правильной работы отката.
Прочие возможности[]
Анонсирование и установка по требованию[]
Журнал установки[]
Шаблон:В планах
Другие системы инсталляции[]
- Nullsoft Scriptable Install System
- Inno Setup
- Wise Package Studio
Примечания[]
- ↑ Rob Mensching. Inside the MSI file format.
См. также[]
- WiX
- RPM
- Инсталлятор
Ссылки[]
- Раздел Установщик Windows Шаблон:Ref-en MSDN
Шаблон:Microsoft APIs
Компоненты Microsoft Windows | |
---|---|
Основные |
Aero • |
Службы управления |
Архивация и восстановление • |
Приложения |
Контакты • |
Игры |
Chess Titans • |
Ядро ОС |
Ntoskrnl.exe • |
Службы |
Autorun.inf • |
Файловые системы |
ReFS • |
Сервер |
Active Directory • |
Архитектура |
NT • |
Безопасность |
BitLocker • |
Совместимость |
Подсистема UNIX (Interix) • |
Шаблон:Windows API
Шаблон:Форматы архивов
Иметь дело с распространяемыми в виде MSI-установщиков приложениями приходится нечасто, но почему-то именно они вызывают у пользователей больше всего проблем. Самая распространенная из них проявляется ошибкой «Не удалось получить доступ к службе установщика Windows Installer», причем столкнуться с ней вы можете в любой версии Windows. В большинстве случаев появление ошибки связано с некорректной работой соответствующей службы — установщика Windows или msiserver. Чаще всего при проверке она оказывается отключена. Убедиться, что со службой всё в порядке можно следующим образом.
Не удалось получить доступ к службе установщика Windows Installer
Откройте командой services.msc оснастку управления службами и отыщите в списке элемент «Установщик Windows».
По умолчанию эта служба находится в неактивном состоянии, а тип её запуска выбран «Вручную».
По идее, при запуске исполняемого MSI-файла она должна автоматически активироваться, но этого не произойдёт, если по какой-то причине тип запуска будет установлен «Отключена». Нужно изменить настройки, выбрав в выпадающем списке опцию «Вручную», но скорее всего настройки окажутся недоступными, что характерно для Windows 10. Придётся действовать в обход.
Откройте в редакторе реестра ключ HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/msiserver и измените значение параметра Start с 4 на 3, а затем перезагрузитесь.
Тип запуска изменится на «Вручную», а кнопка запуска станет активной. Чтобы установить тип запуска «Автоматически», значение Start необходимо заменить на 2. Поскольку служба msiserver является зависимой, рекомендуем также проверить состояние службы «Удалённый вызов процедур RPC». Она должна быть запущенной и тип запуска иметь «Автоматически».
Может статься, что службы «Установщик Windows» вообще не окажется в списке. Наиболее вероятная тому причина — повреждение отвечающих за неё данных в реестре. В этом случае попробуйте её восстановить, выполнив слияние файла Windows_Installer.reg, доступного по ссылке
https://cloud.mail.ru/public/2eVp/mWmQUP8FG
. После применения твика нужно будет перезагрузить компьютер. Можно также выполнить обновление операционной системы до последней актуальной сборки, если такой вариант для вас приемлем.
Неплохо также будет проверить настройки политики установщика Windows. Командой gpedit.msc вызовите редактор локальных политик и перейдите по цепочке Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Установщик Windows. Все политики должны иметь состояние «Не задано».
Аналогичным образом проверьте настройки в разделе «Конфигурация пользователя».
Наконец, восстановить нормальную работу службы установщика Windows можно путём её ручной перерегистрации. Для этого открываем от имени администратора командную строку и последовательно выполняем команды, указанные в этом текстовом файле —
https://cloud.mail.ru/public/9bBp/bYNiRVB82
. После повторной регистрации службы компьютер следует перезагрузить, а затем запустить службу установщика командой net start MSIServer, если вдруг по какой-то причине она не стартует сама.