Удаление обязательных обновлений

Метки:  , , ,

Название Удаление обязательных обновлений не до конца раскрывает смысл описываемого в статье, поскольку не совсем понятно, что именно имеется в вижу под термином "обязательный". Материал можно было бы озаглавить как Удаление неудаляемых обновлений, но тогда не совсем понятно, по каким причинам они вдруг стали неудаляемыми: по воле разработчика или из-за ошибок с хранилищем компонентов. Есть еще вариант обозначить как удаление обновлений, не предназначенных для удаления, но это как-то избыточно, что ли.
Совсем недавно открыл для себя одну любопытную особенность некоторых обновлений: они не удаляются стандартными средствами операционной системы. На практике возникла ситуация, в которой я никак не мог удалить из системы "битое" обновление. По мере углубления в тематику вопроса выяснилось, что в Windows существуют разные типы обновлений, и что частный случай невозможности удаления некоторых из них вовсе не является следствием какой-либо локальной ошибки, а отражает скорее особенность. Судя по всему, объясняется это архитектурными нюансами механизма обновлений. На практике сложно создать такую систему взаимосвязей обновлений, в которой каждое обновление будет полностью автономно, то есть независимо от остальных, и, соответственно, может быть удалено без каких-либо последствий. Но еще более важно то, что некоторые обновления для системы действительно критичны, поскольку достаточно глубоко в неё интегрированы. Например сам механизм обновления (стек обслуживания) обеспечивается набором модулей (инсталлятор, библиотеки и прч), которые необходимы для установки последующих обновлений и от которых зависит работоспособность механизма в целом. Соответственно, все обновления стека обслуживания, вносящие алгоритмические изменения, не могут быть просто удалены, поскольку тогда станут недоступными некоторые особенности этих алгоритмов, при помощи которых уже были установлены последующие пакеты обновлений. Удаление подобных обновлений чревато для системы серьезными последствиями, такими как разрушение хранилища компонентов, и как следствие, потенциальные проблемы с работоспособностью самой операционной системы. На самом деле так уж всё страшно, поскольку подобных обязательных (неудаляемых) обновлений, например в системе Windows 7, насчитывается всего-то около десятка :) Но знать то об этом нюансе все же стоит, так же как и иметь понимание, как именно производить удаление обязательных обновлений.

Проблема

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

uninstall kb

тут всё тривиально. Но с обязательными обновлениями всё несколько сложнее, поскольку при аналогичных действиях мы не видим привычных элементов управления:

required update

при попытке выполнить удаление данного компонента из командной строки при помощи утилиты wusa:

wusa /uninstall /kb:2522422

выдается ошибка: Обновление для Microsoft Windows является обязательным компонентом для этого компьютера, поэтому удаление невозможно.

required component

В этом случае у специалиста возникает резонный вопрос: за что вы так со мной? :) Тот факт, что система считает некоторые обновления обязательными и не дает их удалять, вовсе не гарантирует, что эти обновления не могут повреждаться и являться причиной различного рода проблем. Поэтому, в некоторых случаях появляется необходимость удаления. Имеется ли возможность удалить подобные неудаляемые обновления из системы?

Решение

Изменения, описываемые в данном разделе, могут привести к неработоспособности хранилища компонентов!! Приводимые в разделе действия Вы выполняете на свой страх и риск!!

Поэтому действуйте крайне аккуратно, желательно сделав полный бэкап системы либо создав точку восстановления. Главное понимать, зачем Вы всё это делаете. Если Вам необходимо исправить последствия кривого обновления, то удалите обязательное обновление, а затем установите его вновь. При хорошем раскладе после удаления/переустановки неудаляемого обновления Вам удастся исправить последствия кривого обновления. Однако при худшем сценарии развития событий, Вы приведете систему в нерабочее состояние, поскольку обновление может оказаться действительно критическим. Итогом может стать повреждение хранилища компонентов с ошибкой STATUS_SXS_COMPONENT_STORE_CORRUPT.
На каком уровне обеспечивается неудаляемость подобных обязательных обновлений? На уровне параметров в конфигурационных .mum-файлах.

.mum-файл (Microsoft Update Manifest/Манифест обновления Майкрософт) - конфигурационный файл обновления Windows формата XML, содержащий параметры пакета: наименование, идентификатор, язык установки, зависимости, флаги действий и прочие. Используется в качестве идентификатора (символического имени) сервиса (стека) обслуживания с целью выполнения над пакетом операций включения/отключения/удаления посредством различных сервисных утилит (например, Диспетчера пакетов (pkgmgr)). Файл манифеста содержит в своем имени наименование обслуживаемого обновления и размещается в каталоге %WinDir%\servicing\Packages;

А где содержатся и откуда появляются в системе сами .mum-файлы? А они содержатся в .msu-файлах установки, которые приезжают в систему через Центр обновления Windows либо скачиваются и устанавливаются пользователем вручную в виде файлов с именами Windows6.1-KB2639308-x64.msu.

.msu-файл (Microsoft System Update/Пакет обновления Майкрософт) - изолированный пакет Центра обновления Microsoft, содержащий в своем составе методанные (описывающие каждой пакет обновления, содержащейся в .msu-файле), один или несколько .cab-файлов (каждый .cab-файл содержит модули отдельного обновления), .xml-файл (описывающий пакет обновления, используется Автономным установщиком обновлений Windows wusa.exe для выполнения процесса инсталляции обновления), файл свойств (файл содержит строки свойств, которые использует утилита wusa.exe.

В .mum-файле есть параметр с именем permanence, принимающий два значения: removable и permanent. Пакеты обновления, которые не желательно удалять из системы, разработчики Microsoft объявляют как "постоянный" (permanent), тогда как все остальные (обычные) пакеты обновления маркируются как "удаляемые" (removable). Поэтому, процесс изменения типа обновления с неудаляемого на удаляемое сводится к изменению данного параметра в соответствующем .mum-файле. А как уже упоминалось, после инсталляции обновления, соответствующие .mum-файлы могут быть найдены внутри каталога %Windir%\servicing\Packages\. Отсюда следует, что нам необходимо найти .mum-файл, принадлежащий обновлению и его отредактировать:

component mum file

Иногда наблюдается проблема с доступом к объектам в директории %Windir%\servicing\Packages\, поскольку разрешения на полный доступ выставляются только для пользователя TrustedInstaller. Поэтому, для внесения изменений предлагается слегка подкорректировать права для группы, в которую входит ваша учетная запись.

Редактируем его содержимое:

и ищем строку, содержащую слово permanence, заменяя значение параметра на: permanence="removable". В приведенном выше примере это строка под номером 4. После проведенных изменений сохраняем файл. Повторяем подобные изменения для всех .mum-файлов, ассоциированных с неудаляемым пакетом обновления (с некоторыми обновлениями могут быть ассоциированы два и более .mum-файлов).
В некоторых случаях изменения вступают в силу мгновенно, в некоторых может потребоваться перезагрузка.

  • Поделиться:

14 комментариев:

  1. example

    обновление KB976902 на Windows 7 SP1 удаленное данным способом, восстанавливается после перезагрузки.

    • einaare

      отлично :) не знал, значить есть зависимости, которые автоматически восстанавливаются. надо копать!!

  2. Gugenot

    Хотел удалить обновления с телеметрией из системы которая ставилась из сборки в которую были включены все последние обновления. На первом же "подопытном обновлении(KB3044374) столкнулся со следующим... Строка в которой должен быть параметр permanence выглядит так:

    и файлов mum для этого обновления не один-два, а 15:
    Package_22_for_KB3044374~31bf3856ad364e35~amd64~~6.3.1.6.mum
    еще несколько таких же, но вместо "22" в названии - 23,39,40,83,84,95,96,130,135,141,142
    Package_for_KB3044374_RTM_GM~31bf3856ad364e35~amd64~~6.3.1.6.mum
    Package_for_KB3044374_RTM~31bf3856ad364e35~amd64~~6.3.1.6.mum
    Package_for_KB3044374~31bf3856ad364e35~amd64~~6.3.1.6.mum
    Что делать в такой ситуации?

    • einaare

      так а проблема то в чем? не удаляется, нет кнопки? так определите корневой апдейт и добавьте параметр permanence="removable". Если имеются сложности с определением основного апдейта - проставьте параметр во всех перечисленных вами .mum. Больше экспериментов! :))) Я бы действовал именно по такой логике.

  3. Gugenot

    Строка выглядит так:
    package identifier="KB3044374" applicabilityEvaluation="deep" releaseType="Update" restart="possible" psfName="Windows8.1-KB3044374-x64.psf"

  4. Диана

    дд.нигде нет информации о том как удалить обязательные обновления. а что делать если perfomance нет ? кривая лицензионная win8/1 . нужно удалить подскажите что еще можно сделать

  5. Диана

    в некоторых файлах действительно есть строка изменив на removable дейсвительно получается удалить обновление. Но в некотрых вместо этой строки такая

    вопрос куда примостить параметр

  6. Диана
  7. Диана

    package identifier="KB....4" releaseType="Update" restart="possible" psfName="Windows8.1-K...-x64.psf"

    • einaare

      некоторые ответы пустые, строки не вставляются? ну а просто в конец до завершающей правой скобки? не получается? например, в приведенной выше строке в конец через пробел в формате параметр="значение" и затем завершающая скобка.

  8. Klinsman

    огромное Вам спасибо.
    Зае*ались читать везде, что удалить невозможно. Типа "сносите все обновления", или "откатывайтесь на точку восстановления до этой КБ".

    Огромно человеческое спасибо от админов из г. Мирного!

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

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