# Установка панели телефонии через групповые политики (GPO)

!!!
Инструкция актуальна для “Панели телефонии” (MIKO CTI) версии `4.9.226` и новее!
!!!

Данная инструкция описывает процесс централизованного развертывания настольного приложения “Панель телефонии” (MIKO CTI) в корпоративной среде Windows Domain с использованием механизма групповых политик (Group Policy Objects, GPO).

Преимущества развертывания приложений через GPO:
- автоматическая установка при входе пользователя или перезагрузке компьютера;
- централизованное управление версиями без участия пользователя;
- возможность целевого развертывания по организационным единицам (OU);
- автоматическое удаление при исключении компьютера из области применения политики.

Требования к среде:

{.whitespace-nowrap .compact}
Компонент | Требование 
--- | ---
Контроллер домена | Windows Server 2012 R2 и выше
Клиентские ОС | Windows 7 SP1 / 8.1 / 10 / 11 (64-bit)
Права | Администратор домена
Дистрибутив приложения | Файл установщика .msi (MSI-пакет)
Сетевой ресурс | DFS или общий SMB-каталог, доступный всем компьютерам

## Подготовка дистрибутива

### Проверка MSI-пакета
Перед публикацией убедитесь, что пакет корректно устанавливается в тихом режиме. Выполните тестовую установку на изолированной машине:
```
msiexec /i "MIKO CTI 4.9.226.msi" /qn /l*v "C:\Temp\install.log"
```
Проверьте лог install.log на наличие ошибок. Код возврата 0 означает успешную установку.

### Размещение MSI-пакета на сетевом ресурсе
Создайте папку в выделенном каталоге в DFS или на файловом сервере:

1. Создайте сетевую папку для дистрибутивов:
   ```
   mkdir \\fileserver\Distrib\MikoCTI
   ```
2. Скопируйте MSI-файл в созданный каталог _MikoCTI_
3. Настройте права доступа для папки _MikoCTI_. Папка должна быть доступна для чтения группе «Компьютеры домена» (Domain Computers)  

Необходимые права доступа для папки _MikoCTI_:

{.whitespace-nowrap .compact}
Субъект | Разрешение
--- | ---
Domain Computers | Чтение (Read)
Domain Admins | Полный доступ (Full Control)
SYSTEM | Полный доступ (Full Control)

!!!
Права назначаются для учетных записей компьютеров, а не пользователей, т.к. установка через GPO Computer Configuration выполняется в контексте системы.
!!!

## Создание и настройка GPO

### Создание объекта групповой политики
1. Откройте консоль управления групповыми политиками:
   ```
   gpmc.msc
   ```
2. Перейдите: Лес → Домены → <Ваш домен>
3. Щёлкните правой кнопкой мыши по целевой организационной единице (OU), в которой находятся компьютеры или пользователи
4. Выберите **Создать объект групповой политики в этом домене и связать его...**
5. Введите имя политики, например _MIKO CTI - Установка телефонной панели_ 
6. Нажмите **OK**

### Настройка Software Installation
В зависимости от сценария развертывания выберите раздел: Computer Configuration (установка для всего компьютера, не зависит от пользователя) или User Configuration (установка при входе конкретного пользователя).

!!!
Рекомендуется использовать Computer Configuration → Policies → Software Settings, т.к. это обеспечивает установку до входа пользователя и не зависит от профиля.
!!!

1. Откройте редактор GPO. Для этого щёлкните правой кнопкой мыши по созданной политике _MIKO CTI - Установка телефонной панели_ и выберите **Изменить**
2. Перейдите по пути:
   ```
   Computer Configuration → Policies → Software Settings → Software installation
   ```
3. Щёлкните правой кнопкой мыши на Software installation, затем **Создать** → **Пакет**
4. В диалоге **Открыть** введите UNC-путь к MSI-файлу:
   ```
   \\fileserver\Distrib\MikoCTI\MIKO CTI 4.9.226.msi
   ```
   !!!
   Обязательно используйте UNC-путь (\\server\share), а не локальный путь. GPO применяется на удалённой машине.
   !!!
5. В диалоге **Развернуть программное обеспечение** выберите метод развертывания **Назначено (Assigned)** и нажмите **OK**

### Дополнительные параметры пакета
Для более точного управления установкой откройте свойства созданного пакета (двойной щелчок или ПКМ → Свойства):

{.whitespace-nowrap .compact}
Вкладка | Параметр | Рекомендуемое значение
--- | --- | ---
General | Name | MIKO CTI 4.9.226
Deployment | Deployment type | Assigned
Deployment | Install at logon | Включено (для User Config)
Deployment | Uninstall when out of scope | Включено
Upgrades | Required upgrade | Указать предыдущую версию

## Применение политики и фильтрация

### Привязка политики к организационной единице (OU)
GPO должна быть привязана к организационной единице (OU), содержащей целевые объекты. Если OU уже была выбрана при создании — привязка выполнена автоматически. 
Для ручной привязки:

1. В GPMC щёлкните правой кнопкой мыши на нужной OU
2. Выберите **Связать существующий объект групповой политики**
3. Выберите созданную политику из списка

### Фильтрация по группам безопасности (Security Filtering)
По умолчанию GPO применяется ко всем объектам в OU. Для ограничения области применения используйте Security Filtering:

1. Выберите созданный GPO в GPMC
2. На вкладке **Область** найдите раздел **Фильтрация безопасности**
3. Удалите группу **Прошедшие проверку (Authenticated Users)**
4. Добавьте группу безопасности, содержащую только целевые компьютеры (например, _MikoCTI_Computers_)

!!!
При использовании Computer Configuration необходимо добавлять группы компьютеров (учётные записи машин), а не пользователей.
!!!

### Фильтры WMI (при необходимости)
Для ограничения применения политики по версии ОС или другим критериям создайте WMI-фильтр. Пример фильтра для Windows 10/11:
```
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE '10.%'
```

## Проверка и диагностика

### Принудительное обновление политики
После настройки GPO принудительно обновите политику на тестовом компьютере:
```
gpupdate /force
```

Для применения Software Installation может потребоваться перезагрузка:
```
shutdown /r /t 30 /c "Применение групповой политики"
```

### Проверка применения политики
Для диагностики используйте утилиту RSOP (Resultant Set of Policy):
```
rsop.msc
```

Или через командную строку — получить отчёт о примененных политиках:
```
gpresult /r /scope computer
gpresult /h C:\Temp\gpresult.html && start C:\Temp\gpresult.html
```

### Журналы событий
При возникновении ошибок проверьте журналы Windows на клиентской машине:

{.whitespace-nowrap .compact}
Журнал | Путь
--- | ---
Установка приложений | Приложения и службы → Microsoft → Windows → AppXDeployment-Server
Групповая политика | Приложения и службы → Microsoft → Windows → GroupPolicy → Operational
MsiInstaller | Приложения (Application) → источник MsiInstaller

!!!
Событие ID 108 в журнале GroupPolicy указывает на ошибку применения политики. 
Событие ID 1022 в MsiInstaller — на ошибку установки MSI.
!!!

### Ручная проверка установки
Убедитесь, что приложение присутствует в реестре:
```
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}
```

Или через PowerShell:
```
Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like '*MIKO CTI*' }
```

## Обновление приложения

### Обновление через GPO (Upgrade)
1. Скопируйте новый MSI-пакет в папку новой версии:
   ```
   \\fileserver\Distrib\MikoCTI\MIKO CTI 4.9.241.msi
   ```
2. Откройте GPO в редакторе и перейдите к разделу **Software installation**
3. Создайте новый пакет (аналогично разделу <a href='/v4/root-guides/installation_via_gpo/#настройка-software-installation'>Настройка Software Installation</a>)
4. Откройте свойства нового пакета → вкладка **Upgrades** 
5. Нажмите **Добавить** и укажите предыдущий пакет MIKO CTI 4.9.226 
6. Установите флаг **Required upgrade for existing packages** для принудительного обновления 
7. Нажмите **OK** и закройте редактор GPO

!!!
Новый и старый пакеты должны иметь разные коды UpgradeCode или ProductCode в MSI, чтобы механизм Upgrade сработал корректно. Уточните у разработчика приложения.
!!!

### Обновление через замену пакета (Redeploy)
Если GUID пакета не изменился, можно выполнить повторное развертывание существующего пакета:

1. В разделе Software installation щёлкните ПКМ на пакете
2. Выберите **All Tasks** → **Redeploy application**
3. Подтвердите операцию. Политика переустановит приложение на всех целевых компьютерах

## Удаление приложения
Для удаления приложения со всех компьютеров через GPO:

1. Откройте GPO в редакторе
2. В разделе Software installation щёлкните ПКМ на пакете MIKO CTI
3. Выберите **All Tasks** → **Remove**
4. В диалоге выберите метод удаления:
   - **Immediately uninstall**. Приложение будет удалено при следующем применении GPO (рекомендуется)
   - **Allow users to continue**. Пользователи сохраняют доступ, но новые установки не выполняются
5. Нажмите **OK**. Применение вступит в силу после gpupdate /force или перезагрузки

## Часто задаваемые вопросы

#### GPO применяется, но приложение не устанавливается
Убедитесь, что MSI-файл доступен с клиентской машины под учётной записью System. Проверьте UNC-путь и права на папку (Domain Computers — Read). Проверьте журнал MsiInstaller.

#### Установка завершается ошибкой 1603
Ошибка 1603 — общая ошибка установки MSI. Изучите детальный лог: msiexec /i package.msi /qn /l*v C:\install.log. Наиболее частые причины: конфликт версий, недостаток прав, неудовлетворённые зависимости.

#### Политика не применяется к конкретному компьютеру
Убедитесь, что компьютер находится в нужной OU, входит в группу, указанную в Security Filtering, и что нет блокировки наследования политик (Block Inheritance) на уровне OU.

#### Как развернуть приложение только для части пользователей на одном ПК?
Это невозможно средствами GPO Computer Configuration. Используйте User Configuration или управляйте доступом через ярлык приложения и разрешения файловой системы на исполняемый файл.
