Скрипт дополнителной очистки обновлений Windows.

При каждой установке обновлений, в систему добавляются актуальные версии компонентов, заменяя системные файлы более новыми. Чтобы обеспечить возможность произвести откат в случае возникновения каких-либо проблем, предыдущие версии компонентов продолжают сохраняться в папке WinSxS. Как известно существует механизм, позволяющий выполнить очистку системы от устаревших обновлений, что в свою очередь позволяет несколько уменьшить размер папки WinSxS. В Windows 7 эта возможность появилась после выхода обновления KB2852386. Данное обновление добавляет пункт "Очистка обновлений Windows" в меню утилиты очистки диска (cleanmgr), запущенной от имени администратора. Начиная с Windows 8, для выполнения очистки обновлений, кроме утилиты очистки диска, вы можете воспользоваться инструментами, которые предоставляет дисм.

Однако есть ряд обновлений, которые не удаляются стандартной утилитой очистки диска (или дисмом). Поэтому, мною был написан специальный скрипт, который существенно расширяет возможности поиска устаревших обновлений и фактически способен заменить стандартную процедуру очистки, позволяя существенно упростить и ускорить этот процесс. Алгоритм его работы выглядит следующим образом. Используя сведения, из системного реестра, скрипт определяет актуальные обновления, установленные в системе для всех имеющихся компонентов и формирует список устаревших обновлений, которые можно безопасно удалить. Затем с помощью дисма производится удаление данных обновлений, за исключением тех, которые были добавлены в исключения и являются актуальными. Количество удаляемых обновлений будет тем больше, чем дольше система была установлена и в зависимости от того как регулярно она обновлялась. В некоторых случаях выигрыш может быть довольно существенным и позволит освободить определенное количество дискового пространства.

В меню скрипта включены следующие пункты:

  • Get Packages List - при выполнении этого пункта в папке где расположен этот батник, будет создан файл "Packages.txt", который будет содержать список всех установленных в системе пакетов. Список может быть разделен на таблицы в зависимости от свойств данных обновлений. При наличие обновлений с определенными комбинациями этих свойств, в нем может быть представлено до четырех таких таблиц : "Обычные пакеты", "Перманентные пакеты", "Скрытые пакеты", и одновременно "Перманентные и скрытые пакеты".
  • Superseded Updates - это основной пункт меню, который как раз и позволяет найти все обновления, которые более не актуальны для вашей системы и были заменены более новыми. В том числе и такие устаревшие обновления, как обновления для браузера Internet Explorer, обновления для часовых поясов и летнего времени (Daylight Saving Time and Time Zone), обновления для среды NET Framework, обновления для Adobe Flash Player (на восьмерке и выше). Если вы хотите добавить какие-то из них в исключения, то вам необходимо внести имя такого обновления в виде "KB*******", в соответствующий файл исключений - "~Exclude-6.1.txt" для семерки, или "~Exclude-6.3.txt" - для восьмерки.
  • Microsoft Office - в скрипт также добавлена возможность очистки устаревших обновлений для продуктов Microsoft Office.

Примечание. Скрипт позволяет удалить устаревшие обновления, помеченные как постоянные (permanent) - в основном это обновления стэка. Если в процессе поиска устаревших обновлений, будут найдены обновления такого типа, то будет выведен запрос об их разблокировке. Если вы ответите утвердительно, то они будут разблокированы и удалены, в противном случае они будут пропущены. Кроме того, на системах начиная с Windows 8.1 и выше, скрипт также позволяет удалять обновления, которые были "впечатаны" в образ после очистки с применением параметра "ResetBase" с помощью дисма.

Очистка хранилища. На семерке, если вы выполнили удаление устаревших обновлений с помощью скрипта, то очистка компонентов в хранилище (папка WinSxS) не происходит сразу, а идет в фоновом процессе, во время простоя системы. Поэтому, для этого нужно дать время, примерно 20 -30 минут. Однако, на системах, начиная с восьмерки и выше, ситуация несколько иная. Здесь, очистка хранилища компонентов не произойдет до тех пор, пока не будет выполнена соответствующая команда. В принципе, задача очистки прописана в планировщике задач и должна периодически происходить. Но в любом случае, вы можете не ждать и запустить ее самостоятельно, выполнив в командной строке, запущенной от имени администратора, команду: Dism /Online /Cleanup-Image /StartComponentCleanup

Not Present и Staged. Так как в некоторых случаях, в списке установленных пакетов обновлений могут присутствовать обновления с некорректным статусом установки, то в скрипт также была добавлена возможность для их удаления. Как уже говорилось выше, при выборе пункта меню "Get Packages List", в папке где расположен этот батник, будет создан файл "Packages.txt", который будет содержать список всех установленных в системе пакетов. Значения, которые обозначают состояние установки для каждого пакета в списке, будут находиться во второй колонке "State" данного файла. Это могут быть следующие значения :

  1. Installed (Установлен) - так маркируются нормально установленные обновления.
  2. Superseded (Заменен) - так маркируются устаревшие обновления, которые были заменены более новыми. Эти обновления можно удалить с помощью стандартной утилиты "Очистки диска".
  3. Not Present (Отсутствует) - механизм появления данных обновлений не ясен. В норме такие обновления не должны присутствовать в списке установленных пакетов. Вероятно, их наличие может быть связано с не совсем корректным функционированием ряда механизмов обслуживания системы при поиске, установке или удалении обновлений. Часто, в случае с обновлениями с таким статусом, в списке могут присутствовать так же и все их подпакеты, которых в норме просто не должно быть, так как список обычно состоит только из имен основных пакетов, а все подпакеты являются скрытыми. Причем в некоторых случаях их количество может достигать более половины от всех пакетов в списке.
  4. Staged (Промежуточное состояние) - так маркируются обновления, которые по какой-то причине, образно говоря, застряли в промежуточном состоянии при их установке или удалении, то есть они как бы или не до конца установлены, или не совсем удалены.

Наличие пакетов со статусом Staged и Not Present по всей видимости может вызывать определенные проблемы в системе, и в частности негативно сказываться на работе Центра обновления при поиске и установке обновлений. Поэтому такие обновления желательно удалить. Однако выполнить это стандартными способами невозможно - ни расширенная очистка, ни восстановление хранилища компонентов, ни восстановление системных файлов будут не эффективны, и не способны изменить их состояние. Поэтому для их удаления вы можете воспользоваться соответствующими пунктами меню данного скрипта (в некоторых случаях, обновления со статусом Staged можно также попробовать переустановить, используя дисм).

Advanced Options - данный пункт меню содержит некоторые опции, в расширенном меню, которые могут использовать более опытные пользователи.

  • Actual Components and Structure - это информационный пункт, позволяющий получить структуру пакетов, компонентов и их взаимокомпоновку для выбранных обновлений. При выполнении этого пункта в папке со скриптом появится файл "~CustomUpdates.txt", в который можно вписать имена обновлений, для которых вы хотите получить информацию об их структуре, в виде "KB*******". После нажатия любой клавиши, скрипт продолжит выполнение и в подпапку "Structs" будут добавлены соответствующие файлы с именами и версиями этих обновлений, содержащие требуемые сведения.
  • Change Custom Updates Property - пункт, позволяющий менять некоторые свойства выбранных пакетов обновлений, такие как видимость пакета, перманентность и статус установки. Например, если если вы не хотите, чтобы стандартная утилита очистки удаляла какое-то обновление, то вы можете сделать его перманентным (изменение вносятся в реестр, а не в mum файлы). Также как и в первом случае, после выполнения этого пункта в папке со скриптом появится файл "~CustomUpdates.txt", в который можно вписать имена обновлений, свойства которых вы хотите поменять. Если в папке уже присутствует файл "~CustomUpdates.txt" со списком обновлений, то эта операция будет произведена автоматически. Для того, чтобы эффективно проконтролировать внесенные изменения, вы можете использовать пункт Get Packages List для получения списка пакетов, в котором как раз и будут отражены, в соответствующих таблицах, данные изменения в зависимости от заданных свойств этих обновлений.
  • Delete Custom Updates - позволяет удалить те обновления, в том числе и актуальные, которые выбрали вы сами. При выборе этого пункта в папке со скриптом появится файл "~Delete.txt", в котрый необходимо вписать имя обновления, которое вы хотите удалить в виде "KB*******". После нажатия любой клавиши, скрипт продолжит выполнение и произведет его удаление. Если в папке уже присутствует файл "~Delete.txt" со списком обновлений, то эта операция также будет произведена автоматически.
Если вы не причисляете себя к категории продвинутых пользователей, то рекомендую использовать эти два последних пункта с осторожностью (или вообще не использовать).


Установщик Extended Security Updates для Windows 7

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 для проверки готовности систем к установке обновлений. В настоящее время это обновление удалено из каталога центра обновлений, но прямые ссылки на сервере для закачки по прежнему функциональны.
Оказалось, что версия манифеста компонентов, с которыми связана проверка системы на валидность, в данном обновлении выше, чем в выпущенных в феврале, первых обновлениях по данной программе. И если в системе уже установлено обновление 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. Если после запуска, скрипт определит, что в системе смонтирован образ, то при выборе соответствующих опций, необходимые изменения будут внесены в данный образ.
  4. При выборе опции "Only save project", будет выполнено только сохранение сгенерированных значений реестра и необходимых манифестов компонентов в текущую директорию, без внесения каких-либо изменений в систему. Также как и в случае с предыдущим методом, данные файлы могут использоваться авторами наборов обновлений, сборщиками, или опытными пользователями, для последующей самостоятельной установки или интеграции. Процедура практически полностью соответствует инструкции, приведенной для полуавтономного варианта из "SLC component method".
  5. После этого, можете устанавливать ESU обновления тем способом, который вы всегда использовали для установки обычных обновлений. Для интеграции же обновлений в образ, как уже говорилось, необходимо исползовать команду добавления пакетов с параметром "IgnoreCheck".

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