Сервер обновлений WSUS можно использовать не только для установки обновлений на продукты Microsoft (Windows, Office), но и для централизованной установки и обновления любых сторонних программ.
Обычно для установки сторонних приложений в сетях Windows используют возможности GPO по установке программ из MSI пакетов, логон скрипты, или отдельные продукты типа SCCM. Однако вы можете использовать ваш сервер обновлений WSUS для установки, обновления или удаления обновления любых сторонних приложений на компьютерах (например, 7-zip, Adobe Reader, Java, браузеров, обновления драйверов или прошивок BIOS/UEFI и т.д.).
По умолчанию WSUS не поддерживает сторонние программы, однако через открытый WSUS API можно опубликовать и распространить через WSUS любой пакет. В этой статье мы рассмотрим, как использовать open-source WSUS Package Publisher чтобы создать пакет установки (обновления) для любой программы, опубликовать его на WSUS, одобрить для установки на компьютерах домена и отследить статус распространения.
Установка и настройка WSUS Package Publisher
Преимущества WSUS Package Publisher:
- Интеграция со WSUS: использование инфраструктуры WSUS и существующих групп распространения обновлений;
- Можно создавать пакеты обновлений из MSI/MSP, EXE файлов или собственных скриптов;
- Отслеживание результатов установки/обновления программ на компьютерах.
Подразумеваем, что вы уже установили и настроили роль сервера обновлений WSUS на Windows Server, установили .NET Framework 3.5 (или выше) и создали групповые политики для нацеливания Windows клиентов на WSUS сервер.
- Скачайте архив с бинарными файлами Wsus Package Publisher с GitHub (https://github.com/DCourtel/Wsus_Package_Publisher/releases) и распакуйте его в локальный каталог на сервере WSUS;
- Запустите
Wsus Package Publisher.exe
; - Подключитесь к локальному серверу WSUS;
- При первом запуске утилита укажет, что нужно создать сертификат, который будет использоваться для подписывания обновлений. Выберите Tools -> Certificates;
- Если у вас отсутствует собственная инфраструктура PKI, утилита сгенерирует для вас самоподписанный сертификат типа Code Signing (можно создать самоподписанный сертификат с помощью PowerShell);
- Сохраните сертификат в .CER файл и установите его на компьютеры, которые будут получать обновления программ;
- Проще всего распространить сертификат на клиентов с помощью GPO. Откройте консоль управления доменными групповыми политиками, выберите вашу GPO с настройками WSUS. Перейдите в раздел Computer Configuration –> Policies –> Windows Settings –> Security Settings –> Public Key Policies –> Trusted Root Certification Authorities и импортируйте сертификат в хранилища Trusted Root Certification Authorities и Trusted Publishers;
- Затем перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows Update — > Manage updates offered from Windows Server Updates Service и включите параметр Allow signed content from intranet Microsoft update service location (если вы хотите устанавливать обновления и программы на компьютеры в рабочей группе, нужно включить на них параметр реестра: r
eg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /f /v AcceptTrustedPublisherCerts /t REG_DWORD /d 1
)
Создать пакет обновления программы для установки через WSUS
Теперь можно создать пакет установки (обновления) программы, который будет распространятся через WSUS. В этом примере мы будем обновлять старые версии архиватора 7-Zip на компьютерах в домене.
- Выберите меню Updates -> Create new update;
- Скачайте последнюю версию установочного MSI файла 7 zip с официального сайта и укажите путь к нему; WSUS Package Publisher можно использовать и для распространения EXE файлов. Некоторые EXE установщики можно преобразовать в MSI пакеты с помощью MSI Wrapper.
- Укажите название пакета и описание, которые будут отображаться в окне Windows Update на клиентах;
- На следующем этапе нужно указать критерии, по которым WSUS будет определять, что данное обновление (программа) уже установлено на компьютере.
В примере с 7 Zip мы будет проверять, что в ветке реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-Zip существует параметр DisplayVersion со значением 23.01 (это самая последняя версия 7Zip на текущий момент).Это правило пакета WSUS будет выглядеть так (Add Rule -> Registry Version in SZ):
<bar:RegSz Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-Zip" Value="DisplayVersion" Comparison="EqualTo" Data="23.01"/>
Также мы создадим правило, которое проверят что на компьютере установлена 64 битная версия Windows.
<bar:Processor Architecture="9"/>
- Нажмите Next и создайте еще одно правило, которое будет определять, нужно ли устанавливать обновление на этом компьютере. В нашем случае это будет обратное правило (когда параметр реестра с указанным значением отсутствует). Можно просто включить опцию Reverse Rule в настройках правила. В рамках статьи мы немного упростили правило WSUS. Наше правило установит 7ZIP на любой компьютере, даже если он был там не установлен. В реальной среде нужно сначала проверить, что на компьютере установлен любая другая версия 7ZIP.
- Нажмите Next. WSUS package publisher создат пакет и опубликует на на WSUS.
Теперь вы можете установить пакет WSUS на клиентах. Обратите внимание, что для управления сторонними приложениями нужно использовать консоль WSUS Package Publisher, т.к. сторонние пакеты не отображаются в стандартной административной консоли WSUS.
- Выберите свой пакет в разделе Updates и выберите Approve;
- Выберите группу клиентов WSUS, на которые нужно одобрить установку программы (выберите Approve For Installation);Подробнее об одобрении обновлений на WSUS.
- Через некоторое время выполните обнаружение обновлений на клиентских компьютерах. В зависимости от настроек политики WSUS, компьютеры должны скачать и установить обновление;
- Проверьте на клиенте, что пакет с обновлением 7-ZIP скачался и установился успешно. Выполните команду
Get-WindowsUpdate
из PowerShell модуля PSWindowsUpdate.
Вы можете отслеживать статус установки/обновления программ на компьютерах клиентов в консоли. Выберите ваш пакет и перейдите на вкладку Report. Здесь видно на скольких компьютерах программы была установлена/обновлена.
Таким образом с помощью WSUS вы можете установить или обновить любые программы на компьютерах.
В каких случаях, при наличии AD и GP, это может быть применимо?
AD и GP не предоставляют нормальных средств контроля за состоянием версий программ на компьютеров. Если только скрипты городить. Ближе всего к этой реализации SCCM, но это отдельный большой продукт в который нужно уметь.
Здесь же все в уже имеющемся WSUS с минимальным дополиванием.
Допустим вы запустили некий скрипт, которы на клиенте упал с ошибкой. Как вы найдете машинки, где программа не обновилась?
А тут вы можете полностью контролировать любое стороннее по: какие версии и где установлены, обновленять их автоматически с полноценными репортами о соотвествии клиентских мест стандартам.
+ вы можете через wsus управлять недоменными компьютерами.
Чем winget не угодил интересно
Добрый день, создал пакет установщика последней версии Acrobat Reader x64. Установщик создавался из .exe. Применение этого назначенного обновления не происходит, хотя в панели WPP через некоторое время появилась отметка об успешной установке. Что не так делаю?
Сложно что-то подсказать. данных недостаточно. Смотреть логи, события.
А другие пакеты получились раскатывать? или сразу с первым проблема. Для начала сделайте все по статья для 7zip, а потом опыт на другие пакеты переносите.
Добрый день, тренировался на 7zip, на некоторых компьютерах ни в какую не устанавливается, ошибка Некоторые файлы обновлений не подписаны правильно код ошибки 0x800b0109, хотя сертификат для wsus установлен. (
Посмотрите, установлен ли ваш сертификат на проблемном клиенте. Скорее всего проблема с проверкой цепочки сертификатов.