Подробный гайд: Windows Installer: руководство по установке, логам и устранению ошибок MSI
Сразу уточню важный момент: в официальной документации Microsoft не существует компонента или службы с точным названием Windows Installer Coordinator.
Вероятнее всего, речь идёт об одном из следующих вариантов:
- Служба Windows Installer (
msiserver) + процессmsiexec.exe, которые фактически выполняют координацию установки MSI-пакетов. - Update Orchestrator Service (
UsoSvc) или Windows Update Medic Service, которые координируют обновления (часто путают с установщиком). - Корпоративные системы развёртывания (SCCM, Intune, MDT), где есть модуль координации зависимостей и очередей установок.
Ниже представлен подробный технический гайд по реальной архитектуре, работе и troubleshooting механизма установки Windows (Windows Installer), включая то, как в системе реализуется "координация" процессов установки, удаления и восстановления.
1. Архитектура Windows Installer
| Компонент | Описание |
|---|---|
| Служба | msiserver (отображаемое имя: Установщик Windows) |
| Исполняемый файл | C:\Windows\System32\msiexec.exe |
| Тип запуска | Manual (Trigger Start) → запускается по требованию, не висит в фоне постоянно |
| Учётная запись | LocalSystem |
| Формат пакетов | .msi (реляционная база данных Jet/SQL CE) + .msp (патчи) + .mst (трансформации) |
Как работает "координация" внутри Windows Installer
- Транзакционная модель: Все изменения (файлы, реестр, ярлыки, службы) фиксируются атомарно. При ошибке → автоматический откат (rollback).
- Блокировки:
msiexecиспользует мьютексыGlobal_MSIExecute_иGlobal_MSIExecute_{GUID}чтобы предотвратить параллельные установки одного пакета.
3. Координация с ОС:
- Запрос прав через UAC → elevation до
TrustedInstallerилиAdministrator - Взаимодействие с Windows Resource Protection (WRP) для защиты системных файлов
- Интеграция с Volume Shadow Copy (VSS) для точек восстановления (опционально)
- Регистрация компонентов в
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer
2. Управление и диагностика (CLI + GUI)
Проверка состояния службы
Get-Service msiserver | Select-Object Name, Status, StartType
# Статус обычно "Stopped" – это нормально, служба запускается по запросу
Включение детального логирования
msiexec /i "C:\path\to\package.msi" /l*v "C:\Logs\install.log" /qn
Флаги логирования:
| Флаг | Назначение |
|---|---|
/l*v |
Полный лог (ошибки, предупреждения, действия, отладка) |
/l*e |
Только ошибки |
/l*i |
Только информационные события |
Где искать логи в Event Viewer:
Приложения и службы → Microsoft → Windows → Installer → Operational
Сброс регистрации установщика (при повреждениях)
:: Запускать от имени Администратора
net stop msiserver
msiexec /unregister
msiexec /regserver
net start msiserver
3. Типичные ошибки и их расшифровка
| Код | Значение | Решение |
|---|---|---|
1603 |
Fatal error during installation | Проверить лог /l*v. Чаще всего: конфликт с антивирусом, нехватка прав, повреждённый MSI, заблокированные файлы |
1618 |
Another installation is already in progress | Подождите завершения или завершите msiexec.exe в Диспетчере задач |
1619 |
This installation package could not be opened | Проверьте путь, целостность файла, цифровую подпись, права доступа |
1605 |
This action is only valid for products that are currently installed | Попытка удалить/восстановить пакет, которого нет в базе установщика |
1722 |
There is a problem with this Windows Installer package | Сломанный Custom Action, нехватка VC++ redistributable, битые пути в реестре |
Утилита для анализа логов:
Microsoft Windows Installer Troubleshooter или PowerShell-скрипты парсинга msiexec логов.
4. Корпоративная "координация" установок
Если вам нужен именно координатор очередей и зависимостей, Windows Installer сам по себе его не предоставляет.
В enterprise-среде используются:
| Решение | Роль "координатора" |
|---|---|
| SCCM / MEMCM | Управляет очередями, зависимостями, окнами обслуживания, повторными попытками |
| Intune (Win32 apps) | Координирует установку через IntuneManagementExtension, поддерживает detection rules |
| Winget / Chocolatey | Разрешают зависимости, проверяют хэши, управляют очередью через CLI |
| PowerShell + Job Queue | Кастомная координация: Start-Job, Wait-Job, логирование, retry-логика |
Пример скрипта "координатора" на PowerShell
$Packages = @(
@{Path="app1.msi"; Args="/qn /norestart /log C:\Logs\app1.log"; DependsOn=$null},
@{Path="app2.msi"; Args="/qn /norestart /log C:\Logs\app2.log"; DependsOn="app1"}
)
foreach ($pkg in $Packages) {
if ($pkg.DependsOn) {
while (!(Get-Process -Name "app1_process" -ErrorAction SilentlyContinue)) { Start-Sleep 2 }
}
Start-Process msiexec.exe -ArgumentList "/i $($pkg.Path) $($pkg.Args)" -Wait -NoNewWindow
}
5. Обслуживание и безопасность
| Действие | Рекомендация |
|---|---|
%WINDIR%\Installer |
Никогда не удаляйте вручную. Содержит кэш MSI/MSP для восстановления и удаления. Используйте PatchCleaner или штатную очистку диска |
| Права на запуск MSI | Только от Administrator или TrustedInstaller. Избегайте запуска от SYSTEM без необходимости |
| Цифровая подпись | Проверяйте: sigcheck -v package.msi или через свойства файла |
| Автозапуск службы | Не меняйте на Automatic. Триггерный запуск оптимизирован Microsoft |
| Резервное копирование | Сохраняйте оригинальные MSI и логи установок в репозитории |
6. Официальные ресурсы
- Command-line options for Msiexec.exe - learn.microsoft.com/en-us/windows/win32/msi/standard-installer-command-line-options
- Windows Installer Error Codes - learn.microsoft.com/en-us/windows/win32/msi/error-codes
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.