Скрипт для установки и интеграции платных обновлений (ESU)

14 января 2020 года завершается срок расширенной поддержки Windows 7. В этот день будут выпущены последние, доступные всем, обновления для данной операционной системы. Тем не менее, компания приняла решение продлить поддержку для организаций, сроком до трех лет, на платной основе. В течение этих трех лет будут продолжать выпускаться обновления, доступные по подписке. Организации смогут оформить такую подписку на один, два или три года для версий Professional, Ultimate и Enterprise в рамках программ корпоративного лицензирования. Оформившим подписку, корпорация предоставит специальный MAK ключ на каждый год подписки, работающий независимо от ключа активации. Домашним пользователям корпорация, соответственно рекомендует перейти на использование более новых операционных систем.

Extended Security Updates
В конце февраля 2020 года первые такие обновления по платной подписке стали доступны пользователям, которые ее оформили. Они могут получать данные обновления по тем же каналам и устанавливать теми же способами, что и ранее, то есть через Центр обновлений или WSUS. Скачать эти обновления вручную из Каталога Центра обновлений Microsoft (КЦОМ) также может любой желающий. Однако при отсутсвии подписки, официально установить такие обновления в системе невозможно, так как в них добавлен механизм проверки на валидность - установка происходит без ошибок, но если система не проходит такую проверку, то после перезагрузки происходит откат.

ESU Installer : Suppression method

В ходе некоторых изысканий, связанных с общими особенностями установки обновлений, я обнаружил определенный механизм, который позволял обойти данное ограничение и избежать отката после перезагрузки. Оказалось, что данная проверка на валидность связана на данный момент с определенным манифестом компонента - "_microsoft-windows-s..edsecurityupdatesai_", соответствующей разрядности и версии для каждого обновления. Кроме того, оказалось так же, что в системе, в хранилище компонентов ("C:\Windows\winsxs") есть компонент - "x86_microsoft.windows.s..ation.badcomponents_31bf3856ad364e35_6.1.7600.16385_none_3868158f24725705", в котором находится xml файл "suppression.xml". И если в ходе установки обновления, происходит ошибка, связанная с каким либо из компонентов, который присутствует в списке в данном файле, то эта ошибка подавляется и установка обновления успешно завершается.
Таким образом, если добавить в этот файл определения компонентов, с которыми связана проверка валидности системы на возможность установки по программе Extended Security Updates (ESU), то мы добьемся успешного результата установки такого обновления. На этом принципе и основана работа скрипта, который парсит имена и версии нужных компонентов в ESU обновлении и вносит их в данный файл. Метод реализован как опция в пункте меню - "ESU Installer", и включен в общий набор инструментов, наряду со всеми пунктами скрипта дополнительной очистки.

"Пошаговая инструкция по установке"

  1. Размещаете ESU обновление (-ия) в папке скрипта (msu или cab файлы).
  2. Выполняете пункт "ESU Istaller" (подпункт "Suppression method"). После того как скрипт внесет нужные изменения, вы сможете выбрать один из двух вариантов.
  3. При выборе опции "Start install packages" будет выполнена автоматическая установка обновлений с помощью дисма. Установка через дисм приводит к меньшей вероятности возникновения каких либо проблем, а в случае возникновения таковых, позволяет легче понять в чем именно дело. Это рекомендуемый для большинства пользователей вариант.
  4. Если же выбрать опцию "Only save suppression.xml", то будет выполнено только сохранение внесенных изменений. После этого вы также сможете установить выбранное обновление вручную дисмом, или запустив например, пакет msu файла обновления на выполнение.
  5. После установки выполняете перезагрузку.
  6. Заново запускает скрипт и выполняете этот же пункт. Если он определит, что в системе нет обновлений, которые ожидают установки, то предложит восстановить оригинальный файл, и при положительном ответе (Y) на вопрос, это выполнит.

Для гарантии успешной установки обновления, измененный файл должен присутствовать в хранилище до полного завершения процесса. Поэтому для сохранения целостности системы, после установки и перезагрузки, рекомендуется повторно запустить скрипт, который вернет этот файл в исходное состояние (в данном случае, пункт сработает как переключатель). Но ничего страшного не случится, если вы этого не сделаете. Это не исполняемый файл, не библиотека, а всего лишь обычный xml файл, который не влияет на работу системы. Только если пользователь запустит sfc /scannow, это просто укажет, на то, что файл не является оригинальным, и более ничего.

Примечание. Записи об обновлениях, установка которых производится через дисм, не отражаются в журнале Центра обновлений, так как процесс не зависит от состояния служб Центра обновлений. На конечный результат это никак не влияет. Если установка прошла успешно, то обновление будет фигурировать в списке установленных. А журнал Центра обновлений - это просто лог, который не влияет ни на что.

Интеграция в образ
Удалось также выяснить, что используя данный механизм, можно не только выполнить установку таких обновлений на живую систему, но и интегрировать их в образ. Оказалось, что если при выполнении команды установки пакетов через дисм добавить малоиспользуемый параметр "IgnoreCheck", то в сочетание с изложенным выше способом, это позволяет успешно провести процедуру интеграции. Также как и в случае с живой системой перед этим предварительно нужно интегрировать все необходимые обновления, перечисленные ниже.

"Пошаговая инструкция по интеграции"

  1. Монтируете индекс с нужной редакцией из выбранного образа.
  2. Размещаете ESU обновление (-ия) в папке скрипта (msu или cab файлы).
  3. Выполняете пункт "ESU Istaller" (подпункт "Suppression method"). Если после запуска, скрипт определит, что в системе смонтирован образ, то при выборе опции "Start install packages", он произведет интеграцию обновления в этот образ, а не на живую систему. При этом не имеет значения в какую папку вы его смонтировали, и где при этом находится сам скрипт - все операции по определению будут выполнены автоматически.
  4. При выборе же опции "Only save suppression.xml", как и в случае живой системы, будет выполнено только сохранение внесенных изменений. В этом случае, для дальнейшей интеграции, вам необходимо будет уже самостоятельно, выполнить команду дисма для интеграции пакетов с указанным выше параметром.
  5. Размонтируете подключенный образ с сохранением.

Необходимо подчеркнуть, что для успешной установки данного образа, измененный файл также должен оставаться в нем до завершения установки системы. Поэтому о его замене на исходный, для сохранения целостности системы, должен будет позаботиться сборщик, в конце установки, например через SetupComplete.cmd, или любым другим удобным ему способом.

Полуавтономный вариант.
Авторы наборов обновлений, и сборщики могут использовать также полуавтономный вариант. Например, заранее подготовив измененный для установки определенных обновлений файл, и вместе с сохраненным оригинальным файлом, использовать его в своих решениях, для установки или интеграции с помощью своих собственных скриптов или программ. Для этого перед установкой или интеграцией обновлений, достаточно будет просто скопировать измененный файл в папку в хранилище (x86_microsoft.windows.s..ation.badcomponents_31bf3856ad364e35_6.1.7600.16385_none_3868158f24725705) с заменой оригинального (получив права, а затем вернув первоначальные права, или воспользоваться сторонним файловым менеджером, запущенным с правами TrustedInstaller).
Процедуру подготовки измененного файла не обязательно проводить только на семерке, вы можете сделать это и на другой системе, например на восьмерке, или десятке. В этом случае, скрипт только сохранит нужный файл в текущую папку, без внесения каких либо изменений в самой рабочей системе.

Тестовое обновление KB4528069

Перед запуском программы Extended Security Updates, корпорация Microsoft выпустила тестовое обновление KB4528069 для проверки готовности систем к установке обновлений. В настоящее время это обновление удалено из каталога центра обновлений, но прямые ссылки на сервере для закачки по прежнему функциональны (x86, x64).
Оказалось, что версия манифеста компонентов, с которыми связана проверка системы на валидность, в данном обновлении выше, чем в выпущенных в феврале, первых обновлениях по данной программе. И если в системе уже установлено обновление KB4528069, то такая его особенность позволяет установить эти обновления уже не прибегая к другим методам обхода (их необходимо использовать только для первоначальной установки тестового обновления). Более того, для установки обновлений достаточно было внести в систему лишь те изменения, которые связаны только с компонентом проверки на валидность (манифест и необходимые для него значения реестра), без необходимости установки самого обновления KB4528069. Именно данную методику использовали авторы утилиты ByPass в своем решении для установки или интеграции ESU обновлений.
Преимущества этого подхода очевидны, но также очевиден и его главный недостаток. В случае, если в последующих обновлениях, версия манифеста данного компонента будет выше, чем в тестовом обновлении, то данный метод просто перестанет работать.

ESU Installer : SLC component method

В своей практике мне приходилось довольно часто сталкиваться с ситуациями, когда из-за тех или иных нарушений целостности системы, не удавалось установить последнее актуальное обновление. В процессе возникали ошибки, или после установки происходил откат. В то же время, не всегда, но довольно часто, на такую систему, можно было с помощью дисма "накатить" поверх обновление, которое уже было в ней установлено. Таким образом можно сказать, что для успешной установки не обязательно, чтобы проблемные компоненты в обновлении имели меньшую версию, чем та, которая присутствует в системе. Но вполне достаточно того, чтобы система считала, что их версии, просто идентичны тем, что уже в ней есть.
В отличие от метода с тестовым обновлением, когда необходимые значения можно было, например, просто экспортировать из реестра после его установки, такой подход требовал предварительной генерации данных для каждой новой версии манифеста устанавливаемого обновления. Однако он позволял, как и в случае с первым методом, выполнить успешную установку ESU обновления, в не зависимости от наличия или отсутствия в системе KB4528069 или его компонентов. Используя некоторые идеи метода с тестовым обновлением, и уже имея определенные наработки в данной области, этот способ удалось реализовать. Он был добавлен как опция в пункте меню - "ESU Installer", и включен в общий набор инструментов, наряду со всеми пунктами скрипта дополнительной очистки.

"Пошаговая инструкция по установке"

  1. Размещаете ESU обновление (-ия) в папке скрипта (msu или cab файлы).
  2. Выполняете пункт "ESU Istaller" (подпункт "SLC component method"). При выборе, на первом этапе, опции "Apply changes to system" скрипт внесет нужные, для установки выбранных обновлений, изменения в систему. При выборе, на следующем этапе, опции "Start install packages" будет выполнена автоматическая установка обновлений с помощью дисма. Как и в случае первого метода, это рекомендуемый для большинства пользователей вариант.
  3. Если на втором этапе вместо "Start install packages", выбрать опцию "Only preserve changes", то в таком случае, внесенные изменения будут сохранены в системе без установки самих обновлений. После этого вы также сможете установить обновление, для которого были внесены необходимые изменения, вручную дисмом, или запустив например, пакет msu файла обновления на выполнение. И это настоятельно рекомендуется сделать.
  4. После установки выполняете перезагрузку.
  5. При выборе, на первом этапе, опции "Only save project", будет выполнено только сохранение сгенерированных значений реестра и необходимых манифестов компонентов в текущую директорию, без установки обновлений и без внесения каких-либо изменений в саму систему. При выполнении на системах отличных от семерки - данная опция выполняется автоматически.

Интеграция в образ
Процедура автоматической интеграции по данному методу, практически идентична установке на живую систему. Если после запуска, скрипт определит, что в системе смонтирован образ, то при выборе соответствующих опций, он произведет интеграцию обновлений в этот образ или только внесет необходимые изменения в систему. В последнем случае, для дальнейшей интеграции, вам необходимо будет самостоятельно, выполнить команду дисма для интеграции пакетов с параметром "IgnoreCheck".

Полуавтономный вариант. Авторы наборов обновлений, и сборщики могут использовать полуавтономный вариант также и для этого способа. При выборе сценария сохранения с помощью опции "Only save project" в текущей директории, как уже было сказано, будут созданы reg файлы с необходимыми для интеграции значениями и скопированы манифесты нужных компонентов. Если в папке будут найдены необходимые пакеты обновлений, то для каждой разрядности будет создан свой reg файл.

"Пошаговая инструкция для этого варианта"

  1. Монтируете индекс с нужной редакцией из выбранного образа.
  2. Размещаете ESU обновление (-ия) нужных разрядностей в папке скрипта (msu или cab файлы).
  3. Выполняете пункт "ESU Istaller" (подпункт "SLC component method") и выбираете опцию "Only save project". На системах отличных от семерки - это будет сделано автоматически.
  4. Полученные файлы манифестов, для соответствующей разрядности (манифесты x86 - для 32 битной системы, и amd64 - для 64 битной) копируете в папку "папка монтирования\Windows\winsxs\Manifests" для смонтированного образа. Для этого необходимо будет получить полные права для этой папки, а после копирования вернуть исходные права (или воспользоваться сторонним файловым менеджером, запущенным с правами TrustedInstaller)
  5. Выполняете загрузку кустов реестра SOFTWARE и COMPONENTS из данного образа, с помощью команд -
    reg load "HKU\SOFTWARE" "папка монтирования\Windows\System32\config\SOFTWARE"
    reg load "HKU\COMPONENTS" "папка монтирования\Windows\System32\config\COMPONENTS"
  6. Импортируете полученный reg файл соответствующей разрядности с помощью команды -
    reg import Offline-x86.reg или reg import Offline-x64.reg
  7. Выгружаете кусты реестра с помощью команд -
    reg unload "HKU\SOFTWARE"
    reg unload "HKU\COMPONENTS"
  8. Интегрируете обновления, для которых были внесены эти изменения, в образ.
  9. Размонтируете подключенный образ с сохранением.

Этот вариант можно использовать не только для интеграции, но также и для установки на живую систему. Но для этого вам будет необходимо предварительно отредактировать полученные reg файлы, заменив в них все значения "HKEY_USERS" на "HKEY_LOCAL_MACHINE". Это сделано специально в целях обеспечения безопасности от случайного применения неподходящего для данной системы файла. Выполняющие данную процедуру должны четко понимать что они делают. В противном случае, в случае ошибки, можно столкнуться с некоторыми нежелательными последствиями. В остальном, процедура полностью идентична приведенной, единственное, при установке на живую систему достаточно загрузить только куст реестра "COMPONENTS".

ESU Installer : Permanent fix method

Вероятность того, что после выхода очередных обновлений, метод с использованием обновления KB4528069 или его компонентов, может перестать быть функциональным, существенно невелирует преимущества его использования. Тем не менее, сама идея такого перманентного решения, в ряде случаев остается довольно привлекательной. Минимальным решением проблемы могла бы стать, по крайней мере, возможность создания собственного манифеста компонента, отвечающего за проверку валидности системы на возможность установки обновлений по программе Extended Security Updates (ESU), то есть "_microsoft-windows-s..edsecurityupdatesai_" с произвольной версией. Найти способ реализовать данное решение удалось в результате продолжения проводимых мной экспериментов, и позволило эмпирическим путем получить необходимые файлы манифестов.
Однократное добавление в систему полученных файлов и внесение в реестр необходимых для них значений, позволяет, как и в случае с KB4528069, выполнять последующую установку ESU обновлений уже не прибегая к другим методам обхода, но без необходимости присутствия в системе самого этого обновления или его компонентов. Данный способ был также добавлен как опция в пункте меню - "ESU Installer", и включен в общий набор инструментов, наряду со всеми пунктами скрипта дополнительной очистки.

"Пошаговая инструкция по установке и интеграции"

  1. Выполняете пункт "ESU Istaller" (подпункт "Permanent fix method"). При выборе опции "Apply changes to system" скрипт внесет нужные изменения в систему. Если скрипт определит, что данный метод уже используется в системе, то будет предложена опция его удаления - "Remove permanent patch".
  2. Если после запуска, скрипт определит, что в системе смонтирован образ, то при выборе соответствующих опций, необходимые изменения будут внесены в данный образ.
  3. При выборе опции "Only save project", будет выполнено только сохранение сгенерированных значений реестра и необходимых манифестов компонентов в текущую директорию, без внесения каких-либо изменений в систему. Также как и в случае с предыдущим методом, данные файлы могут использоваться авторами наборов обновлений, сборщиками, или опытными пользователями, для последующей самостоятельной установки или интеграции. Процедура практически полностью соответствует инструкции, приведенной для полуавтономного варианта из "SLC component method".
  4. После этого, можете устанавливать ESU обновления тем способом, который вы всегда использовали для установки обычных обновлений. Для интеграции же обновлений в образ, как уже говорилось, необходимо исползовать команду добавления пакетов с параметром "IgnoreCheck".

Примечание. Начиная с августа 2019 года, для корректной установки или интеграции обновлений, в системе должны быть предварительно установлены обновление KB4474419, включающее поддержку SHA-2, а также последнее обновление сервисного стека, для установки которого, предварительно может понадобиться установка предыдущей версии сервисного стека KB4490628 за март 2019 г. Ссылки на все эти обновления вы можете найти в списке обновлений качества безопасности.

Вам нужно скачать файл "UpdateTools.zip" или WinSxS+.zip" (для Windows 8.1 только WinSxS+)

Скачать с Облака Mail.ru Скачать с Яндекс.Диска Скачать с Microsoft OneDrive

Добавить комментарий