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

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

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

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

  • Superseded Updates - это основной пункт меню, который как раз и позволяет найти все обновления, которые более не актуальны для вашей системы и были заменены более новыми. В том числе и такие устаревшие обновления, как обновления для браузера Internet Explorer, обновления для часовых поясов и летнего времени (Daylight Saving Time and Time Zone), обновления для среды NET Framework, обновления для Adobe Flash Player (на Windows 10).
  • Adobe Flash Player - в силу определенных особенностей, на Windows 8.1 очистка обновлений для Adobe Flash Player осуществляется с помощью отдельного пункта. Кроме того, в этом случае, после удаления обновлений необходимо перезагрузиться и выполнить процедуру очистки с помощью дисма или утилиты очистки диска, так как в противном случае, устаревшие компоненты не будут удалены из хранилища (WinSxS).
  • 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 можно также попробовать переустановить, используя дисм).

Вам нужно скачать файл UpdateClean.zip

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

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


Защитный код
Обновить