Не удаляется обновление

Как работает очистка папки WinSxS в Windows 7

Я очень подробно разбирал весь процесс применительно к Windows 8 и 8.1, поэтому не буду повторяться, а лишь отмечу несколько моментов.

Реализация

Обновление KB2852386 заменяет всего один файл — Scavengeui.dll, в котором реализована вся работа по очистке. Фактически, в утилиту «Очистка диска» добавили вызов функции DISM, доступной в более новых ОС при использовании в утилите DISM.exe параметра /StartComponentCleanup (но не дополнительного ключа /ResetBase).


Увеличить рисунок

Так, при каждом запуске утилиты «Очистка диска» в папку %LocalAppData%\Temp\{GUID} зачем-то копируется содержимое папки %WinDir%\System32\DISM (причем временная папка не удаляется после завершения операции). После чего с помощью обновленной DLL осуществляется программный вызов функции глубокой очистки непосредственно из утилиты. Впрочем, копирование папки DISM наблюдалось еще до выхода KB2852386.


Увеличить рисунок

Неясности

Есть основания полагать, что алгоритм очистки в Windows 7 не совсем такой же, как в Windows 8 и выше с ключом /StartComponentCleanup. В частности, у меня и у читателей пока не выявилось сжатия файлов, несмотря на идентичность текстового описания в утилите cleanmgr. Проверьте у себя и напишите в комментариях!

Еще один непонятный нюанс — это загадочная фраза в статье базы знаний (перевод – мой):

Therefore, after you run the Disk Cleanup wizard, you may be unable to roll back to a superseded update.
После очистки диска у вас может не быть возможности откатиться к обновлению, замененному более свежим.

И нигде не объясняется, от чего зависит эта возможность 🙂 В моем эксперименте у всех обновлений возможность удаления сохранилась, как и должно быть при использовании ключа /StartComponentCleanup в Windows 8 и новее. Возможно, со временем конкретика и появится…

Наконец, не совсем понятно, что мешало реализовать это раньше, и почему обновление появилось именно сейчас. Кстати, перенос очистки в утилиту DISM.exe Windows 7 пока не планируется, что не позволяет обрабатывать автономные образы. Возможно, такой перенос вскрывает целый пласт вопросов поддержки, связанных с обслуживанием образов.

Как автоматизировать очистку папки WinSxS

В Windows 8 очистка возложена на отдельное запланированное задание, а в крайнем случае можно воспользоваться утилитой командной строки DISM.exe. В Windows 7 единственный доступный пока способ заключается в создании настроенной конфигурации утилиты «Очистка диска» и добавления полученной команды в планировщик.

В командной строке, от имени администратора, выполните:

:: настройка очистки папки winsxs REG ADD «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Update Cleanup» /v StateFlags0088 /t REG_DWORD /d 2 /f :: (необязательно) настройка очистки временных файлов (в частности зачищает временную папку dism) REG ADD «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files» /v StateFlags0088 /t REG_DWORD /d 2 /f :: создание запланированного задания «CleanupWinSxS» schtasks /Create /TN CleanupWinSxS /RL Highest /SC monthly /TR «cleanmgr /sagerun:88»

Запланированное задание «CleanupWinSxS» будет выполняться 1го числа каждого месяца, удаляя файлы, замененные обновлением, вышедшим во второй вторник предыдущего месяца. Число и время запуска вы можете изменить в библиотеке планировщика заданий (taskschd.msc). Для успешного выполнения задания необходимо наличие у пользователя прав администратора.

Вопросы и ответы

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

Не удается скачать обновление KB2852386. Что делать?

Качать с помощью Windows Update, как я сразу советую в статье. Обновление будет в списке рекомендуемых.

Если вы пытаетесь скачать в браузере и получаете ошибку «Эта версия средства проверки Windows Geniune Advantage более не поддерживается…», убедитесь что:

  1. Для закачки используется Internet Explorer
  2. В Internet Explorer разрешена установка дополнений / элементов ActiveX

При соблюдении этих двух условий средство проверки подлинности не скачивается на ПК, а устанавливается в качестве надстройки браузера и выполняет валидацию.

Это — все официальные способы получения обновления, и другие здесь рассматриваться и обсуждаться не будут.

Удалится ли папка WinSxS после очистки?

Нет, но число подпапок и файлов в ней уменьшится, а следовательно и ее объем.

Что конкретно удаляется?

Неиспользуемые файлы обновлений. Эти файлы не участвуют в работе системы, потому что вместо них уже используются файлы из более свежих обновлений.

Сколько места освободится? Почему у других удалилось 6GB, а у меня ничего???

Объем удаленных файлов зависит от сочетания трех факторов:

  1. Дата установки SP 1 или Windows 7 с SP1, от которого в любом случае ведется учет установленных обновлений. Чем дольше установлена система, тем больше количество и объем предыдущих версий файлов в WinSxS.
  2. Частота обновления компонента. Например, волны ошибки 0xc0000005 связаны с тем, что файлы ядра обновлялись три месяца подряд. При этом после каждого обновления в WinSxS сохранялась предыдущие версии файлов.
  3. Регулярность установки обновлений. Продолжая пример, если автоматическое обновление только что включили после трехмесячного перерыва, в winsxs осядет только один набор файлов, а не три.

Я попробую объяснить на пальцах, максимально упростив технические подробности и сделав некоторые допущения. Представьте, что Microsoft выпускает раз в два месяца обновление файла asdf.dll. Рассмотрим трех пользователей:

  • Михаил установил Windows 7 с SP1 (сразу после его выхода) в феврале 2011 года и включил автоматическую установку обновлений. К октябрю 2013 года вышло 15 обновлений, заменяющих файл asdf.dll. Очистка диска удалила 14 ненужных файлов и оставила один из предыдущего обновления, сохраняя возможность отката.
  • Андрей установил в один день с Михаилом, но сразу отключил автоматическую установку обновлений. Он их ставил вручную, руководствуясь гороскопом, и к октябрю 2013 года сделал это лишь 4 раза. Очистка диска удалила 3 ненужных предыдущих версии файла.
  • Алексей регулярно переустанавливает систему, и последний раз он это сделал в августе 2013 года. К октябрю того же года успело выйти только одно обновление для файла asdf.dll. Очистка диска не удалила ничего, потому что нет предыдущего обновления, к которому можно откатиться.

Все трое в один день выполнили оптимизацию папки WinSxS. Очевидно, у Михаила она была самой большой, а очистка позволила высвободить самый значительный объем дискового пространства.

Так понятно? 🙂

Как определить, сжимаются ли файлы в папке WinSxS в процессе оптимизации

Судя по вопросам и некоторым скриншотам утилиты TreeSize, примеров анализа оказалось недостаточно. Все очень просто: в меню Scan – Select Directory и выберите C:\Windows\WinSxS.


Увеличить рисунок

Папки со сжатыми файлами помечены синим. Пока что я не видел ни одного факта сжатия в Windows 7.

Почему не работает команда DISM /Online /Cleanup-Image /StartComponentCleanup?

Потому что она для Windows 8 и новее. В Windows 7 используйте очистку диска, следуя инструкциям этой статьи.

Продолжение следует…

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

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