Установка программ (MSI и EXE) с помощью групповых политик в домене Active Directory

В этой статье мы рассмотрим, как централизованно устанавливать программы на компьютеры пользователей домена Active Directory с помощью групповых политик. Отдельно рассмотрим методы установки приложений Windows из классических MSI установщиков и способы установки произвольных EXE приложений, для которых отсутствуют MSI пакеты.

Встроенное в групповые политики расширение Group Policy Software Installation (GPSI) позволяет на клиентских машинах устанавливать и удалять программы, которые распространяются в виде MSI пакетов. Также поддерживается установка программ, распространяемых в виде EXE файлов, но оформленных в виде ZAP пакетов.

Получаем установочный MSI пакет программы

Рассмотрим, как установить MSI пакет программы на компьютеры пользователей с помощью групповых политик Windows на примере клиента Microsoft Teams.

Скачайте MSI пакет с клиентом Teams (http://aka.ms/teams64bitmsi) и скопируйте файл Teams_windows_x64.msi в каталог SYSVOL на контроллере домена (либо это может быть другая сетевая папка на любом файловом или DFS сервере). Проверьте права на эту сетевую папку. У пользователей домена должны права чтения и выполнения (но не записи!).

скопировать установочный MSI файл программы в SYSVOL

Если у вас остались x86 версии Windows (что вряд ли), нужно создать отдельные GPO для x86 и x64 компьютеров. Для фильтрации версий Windows в политиках можно использовать WMI фильтры GPO.

Далеко не все программы предоставляются в виде MSI файла. Чаще всего разработчики отдают их в виде исполняемых EXE файлов, которые нативно не подходят для распространения через GPO. Но есть два способа, могут помочь получить установочный MSI пакет для программы из EXE:

  • Некоторые установщики при запуске распаковывают свои файлы в каталог %temp% . Поэтому при установке программы (просто сверните окно установки) попробуйте открыть этот каталог и найти в нем установочный MSI файл.
  • Другой способ получения MSI файла – попробовать открыть установочный EXE файл с помощью архиватора 7-Zip. Запустите 7-Zip и в меню выберите File -> 7ZIP –> Open Archive. 7ZIP попробует открыть EXE файл в как архив. В нашем случае из EXE файла с дистрибутивом Acrobat Reader получилось извлечь MSI и MST файлы, которые готовы для установки через групповые политики Windows. извлечь установочный MSI файл из EXE с помощью 7zip

Настройка GPO для установки MSI пакета на компьютеры пользователей

Теперь нужно создать новую политику в домене для установки вашего ПО.

  1. Откройте консоль управления доменными GPO ( gpmc.msc );
  2. Создайте новую GPO (CorpInstallTeams) и назначьте ее на OU с компьютерами, на которые нужно выполнить установку (Create a GPO in this domain, and link it here); создать групповыю политику установки программы
  3. Откройте политику и перейдите в раздел Computer Configuration -> Policies -> Software Settings -> Software installation (также возможна установка на пользователей через аналогичный раздел в User Configuration);
  4. Выберите пункт меню New -> Package; добавить пакет в GPO
  5. Выберите ваш установочный MSI файл, который хранится в сетевой папке или каталоге SYSVOL на DC
  6. Выберите опцию “Advanced” и нажмите OK;
  7. Выберите режим установки Assigned (программа устанавливается автоматически при загрузке компьютера или входе пользователя) или Published (когда программа сама не устанавливается автоматически, но ее установка может быть запущена пользователем в любой момент через панель управления). deploy программ с помощью GPO
  8. В открывшемся окне можно настроить дополнительные параметры MSI пакета. Я просто изменю отображаемое имя с Teams Machine-Wide Installer на Microsoft Teams Client; Настройка пакета установки программы в групповой политике
  9. На вкладке Deployment нажмите кнопку Advanced и включите опцию Ignore language when deploying this package (это позволит игнорировать язык Windows на компьютерах клиентов);
  10. Перезагрузите компьютер для обновления настроек GPO и при следующей загрузке компьютера будет выполнена установка программы. Она появится в списке установленных программ Windows. Для анализа событий установки включите фильтр по источнику Application Management Group в разделе System Event Viewer-а.
    В Windows 11 уже встроенный чат клиент Teams, но это не полноценный клиент Microsoft Teams.
  11. Можно показывать детальный процесс применения политики на компьютере. Для этого включите параметр Display highly detailed status messages в Computer Configuration -> Policies -> Administrative Templates -> System. Теперь при загрузке Windows будет отображаться все выполняемые в фоне процессы. При установке программ через GPO появится надпись Installing managed software AppName. сообщение при загрузке Windows : Installing managed software AppName
Если групповая политика установки приложения не применяется к компьютерам, используйте стандартные средства диагностики, которые описаны в статьях “Почему к компьютеру не применяется групповая политика” и команду gpresult.

Изменение параметров MSI пакета для установки через GPO

В стандартном интерфейсе GPO вы не можете указать определенные ключи для установочных MSI пакетов. Что очень неудобно. Например, при установке антивируса вам нужно указать адрес сервера управления. Или при установке Teams из командной строки с помощью msiexec можно отключить автозапуск клиент MSTeams и скрыть его из списка установленных программ (локальный администратор не сможет удалить клиент Teams). Для этого используется команда:

msiexec /i Teams_windows_x64.msi OPTIONS="noAutoStart=true" ALLUSERS=0

Как добавить опции установки в MSI пакет? Для этого используются файлы преобразования MST. Этот тип файлов позволяет изменить стандартные настройки MSI пакета и использовать ваш сценарий установки.
Для создания файла модификации MST для MSI пакетов можно использовать утилиту ORCA (входит в состав Windows Installer SDK).

Откройте ваш MSI пакет с помощью Orca.

Создайте New Transformation и задайте ваши кастомные параметры MSI пакета в разделе Property. В моем случае для клиента Teams я изменю:

  • noAutoStart на True
  • ALLUSERS на 0

ORCA - изменить установочный MSI файл программы, добавить опции установки

Выберите Transform -> GenerateTransform и сохраните изменения в файл с расширением MST (teams_mod.mst). Скопируйте файла в каталог SYSVOL.

Теперь нужно удалить предыдущее правило для установки MSI пакета в GPO (т.к. вы можете добавить MST с модификациями пакет только при создании правила установки программы).>

Выберите All –> Task -> Remove

удаление программы через GPO

Создайте новое правило установки программы, опять выберите msi файл в каталоге в сетевой папке (или SYSVOL) и перейдите на вкладку Modification. Нажмите кнопку Add. Выберите созданный ранее MST файл.

добавление файла модификации MST в пакет установки MSI в GPO

Теперь во время установки MSI пакета через GPO к нему автоматически применится файл модификаций MST и установит программу с нужными вам параметрами.

Основные недостатки метода установки MSI программ через GPO:

  1. Поддерживаются только MSI и ZAP установщики;
  2. Нельзя запланировать установку программы на определенное время. Одновременная установка программы на множестве компьютеров (обычно это происходит утром при включении компьютеров) может вызвать повышенную нагрузку на сеть и контроллеры домена. В этом случае лучше использовать, например, SCCM. Используя окна обслуживания (maintenance) или настройки WOL (Wake On LAN);
  3. Нельзя изменить порядок установки программ в одной политике. При добавлении нового установочного пакета в GPO, оно устанавливается последним.
  4. Отсутствуют централизованные средства для получения отчетов об успешности или ошибках установки программы на компьютерах.

Создаем ZAP файл для установки EXE приложений через GPO

Рассмотрим другой способ установки приложений, установщики которых распространяются только в виде EXE файлов и не доступны в виде MSI пакетов. В групповых политиках Windows поддерживают ZAP (Zero Administration Package) формат установки EXE файлов.

ZAP файл представляет собой простой текстовый файл (аналог конфигурационного INI файла), в котором указан путь к исполняемому EXE файлу, который нужно запустить, параметры установки и другие опции. Расширение групповых политик выполняет указанные инструкции из ZAP файла и позволяет запустить установку EXE приложений.

Рассмотрим пример установки EXE пакета с утилитой lighshot через групповую политику с помощью ZAP файла.

Если нужно, сначала изучите, какие параметры установки поддерживает установочный файл приложения режим. Обычно для этого достаточно запустить его с аргументом /? или /help. В нашем примере инсталлятор поддерживаем множество опций. Для автоматической (тихой установки) утилиты я буду использовать такие опции:

/SP- /VERYSILENT /SUPPRESSMSGBOXES /NORESTART

Получить все параметры установки exe приолжения

Далее нужно скопировать установочный файл приложения setup-lightshot.exe в сетевую папку (допустимо в SYSVOL), из которой будет выполняться установка. Создайте в этой же папке текстовый файл с расширением ZAP, в котором укажите имя приложения, команду установки, версию (опционально) и разработчика.

Пример готового ZAP файла:

[Application]
FriendlyName = "Lightshot - ScreenShot tool"
SetupCommand = "\\s-fs01\Install\setup-lightshot.exe /SP- /VERYSILENT /SUPPRESSMSGBOXES /NORESTART"
DisplayVersion = 5.5
Publisher = "Skillbrains"
В необязательной секции [Extensible] можно сразу задать ассоциации файлов для этого приложения.
  1. Далее нужно создать GPO, назначить ее на OU с пользователями
  2. В редакторе политики перейдите в User Configuration -> Policies -> Software Settings -> Software installation
  3. Добавьте новый пакет (в фильтре типов файлов выберите ZAW Down-level application packages (*.zap) ) и укажите UNC путь к ZAP файлу.
  4. Выберите метод установки Published (для ZAP файлов поддерживается только он). GPO для установки программы через ZAP файл
  5. Для x86 приложения, который ставятся на x64 версии Windows в свойствах пакета нужно включить опцию Make this 32-bit x86 application available to Win64 machines.https://winitpro.ru/wp-content/uploads/2011/10/gpo-rasreshit-ustanovku-x86-program-na-x64.jpg
  6. После обновления настроек GPO у пользователя в панели управления появится новая программа для установки из сети (Control Panel\Programs\Programs and Features -> Install a program from the network (для быстрого перехода, выполните control appwiz.cpl,,1 ) Windows 11 : GPO установка программы из сети
  7. Теперь пользователь в любой момент может самостоятельно запустить установку программы через панель управления.Опубликованные через GPO программы в панели управления Windows 11

Но тут мы натыкаемся на главные ограничения использования ZAP формата для установки EXE приложений:

  • Поддерживается установка через GPO только на пользователя
  • Установка выполняется с правами пользователя. Если EXE приложение при установке потребует повышение привилегий, появится запрос контроля учетных записей UAC и, если у пользователя нет прав локального администратора, установка не будет выполнена.GPOUAC запрос для установки программы через GPO с правами админа
Таким образ ZAP формат установки EXE приложений подходит только для приложений, которые устанавливаются с правами пользователя (обычно в AppData) и не требуют прав администратора.

По аналогии вы сможете сделать ZAP файл для установки через GPO любой Windows программы.

Установка EXE приложения с помощью стартап скриптов GPO

Еще один немного более сложный, но потенциально намного гибкий способ установки EXE приложения на компьютеры пользователей – воспользоваться BAT или PowerShell скриптами.

Идея заключается в том, что администратор создает GPO, которая запускает PowerShell скрипт при загрузке Windows или при входе пользователя, который:

Пример такого PowerShell скрипт для установки 7-ZIP из EXE файла (как получить ключи тихой/автоматической установки программы описано выше):

$appPath = "C:\Program Files\7-Zip\7zFM.exe"
$targetVersion = "26.02"
$appVersion = (Get-ItemProperty -Path $appPath).VersionInfo.FileVersion
if (!(Test-Path $appPath) -or $appVersion -ne $targetVersion) {
$AppSrcPath = "\\s-dc01\Install\7z2602-x64.exe"
$process = Start-Process -FilePath $AppSrcPath -ArgumentList "/S" -Wait -PassThru
if ($process.ExitCode -eq 0) {
Write-EventLog -LogName Application -Source "Application" -EntryType Information -EventID 101 -Message "7-Zip 26.2 was installed successfully."
} else {
Write-EventLog -LogName Application -Source "Application" -EntryType Error -EventID 102 -Message "7-Zip 26.2 installation failed"
}
}

PowerShell скрипт для установки EXE программ через групповые политики

Такой PowerShell скрипт можно запустить как стартап скрипт >GPO (подробно описано в статье о запуске PowerShell скриптов через GPO) или через задание планировщика, которое также распространяется на компьютеры пользователей через GPO (способ более гибкий, чем использовать логон скрипты, т.к можно запланировать установку/обновления приложения у пользователей на определенное время или запускать регулярно по расписанию).

Также установку некоторых программ на компьютерах пользователей можно выполнять простым копированием файлов программы на компьютер, запуском разовых скриптов, использовать пакетный менеджер winget для установки программ, или даже автоматически устанавливать и обновлять произвольные программы через WSUS сервер.


Предыдущая статья Следующая статья


Комментариев: 55 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)