Казалось бы, две большие статьи об оптимизации папки WinSxS в Windows 8 должны были исчерпать тему. Но Microsoft внезапно решила порадовать и владельцев Windows 7, для которых я публикую этот рассказ.
Несмотря на многочисленные предостережения, обладатели Windows 7 с маленьким сами знаете чем не оставляют попыток почистить папку WinSxS кривыми способами. Вот вам свеженький пример убийства Windows 7 участником конференции OSZone под ником… xaker 7. Надеюсь, после выхода этой записи таких ужасов будет на порядок меньше.
[+] Сегодня в программе
- Как очистить папку WinSxS в Windows 7
- Как работает очистка папки WinSxS в Windows 7
- Как автоматизировать очистку папки WinSxS
- Вопросы и ответы
- Не удается скачать обновление KB2852386. Что делать?
- Удалится ли папка WinSxS после очистки?
- Что конкретно удаляется?
- Сколько места освободится? Почему у других удалилось 6GB, а у меня ничего???
- Как определить, сжимаются ли файлы в папке WinSxS в процессе оптимизации
- Почему не работает команда DISM /Online /Cleanup-Image /StartComponentCleanup?
- Дискуссия
Как очистить папку WinSxS в Windows 7
8 октября 2013 года вышло рекомендуемое обновление KB2852386 только для всех изданий Windows 7 SP1, прошедших проверку подлинности. Оно добавляет долгожданную функцию в утилиту «Очистка диска».
Совет перед очисткой
Я думаю, что вы захотите узнать, сколько места сэкономила очистка. Поэтому сейчас откройте свойства диска (а не папки winsxs) и запишите объем свободного пространства (в байтах) или просто сделайте скриншот.
Инструкции
Они предельно просты:
- Установите обновление KB2852386 посредством Windows Update (рекомендую) или скачайте в IE пакет из статьи базы знаний.
- Выполните cleanmgr в командной строке, запущенной от имени администратора (так будет быстрее).
- Найдите в списке опцию «Очистка обновлений Windows».
Примечание. Пункт очистки обновлений доступен только в том случае, когда есть файлы, которые можно удалить. - Нажмите ОК и наберитесь терпения, потому что операция займет некоторое время.
- По окончании очистки перезагрузитесь и посмотрите в свойствах диска, сколько места освободилось.
Как работает очистка папки 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 более не поддерживается…», убедитесь что:
- Для закачки используется Internet Explorer
- В Internet Explorer разрешена установка дополнений / элементов ActiveX
При соблюдении этих двух условий средство проверки подлинности не скачивается на ПК, а устанавливается в качестве надстройки браузера и выполняет валидацию.
Это — все официальные способы получения обновления, и другие здесь рассматриваться и обсуждаться не будут.
Удалится ли папка WinSxS после очистки?
Нет, но число подпапок и файлов в ней уменьшится, а следовательно и ее объем.
Что конкретно удаляется?
Неиспользуемые файлы обновлений. Эти файлы не участвуют в работе системы, потому что вместо них уже используются файлы из более свежих обновлений.
Сколько места освободится? Почему у других удалилось 6GB, а у меня ничего???
Объем удаленных файлов зависит от сочетания трех факторов:
- Дата установки SP 1 или Windows 7 с SP1, от которого в любом случае ведется учет установленных обновлений. Чем дольше установлена система, тем больше количество и объем предыдущих версий файлов в WinSxS.
- Частота обновления компонента. Например, волны ошибки 0xc0000005 связаны с тем, что файлы ядра обновлялись три месяца подряд. При этом после каждого обновления в WinSxS сохранялась предыдущие версии файлов.
- Регулярность установки обновлений. Продолжая пример, если автоматическое обновление только что включили после трехмесячного перерыва, в 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 используйте очистку диска, следуя инструкциям этой статьи.
Продолжение следует…
Дискуссия
У меня к вам примерно те же вопросы, что и после публикации аналогичной статьи о Windows 8. Но учитывая высокий процент владельцев Windows 7, я ожидаю увидеть больше ответов :)
Пожалуйста, напишите в комментариях:
- Получилось ли у вас оптимизировать папку WinSxS
- Сколько места вы сэкономили (перевести байты в гигабайты можно так)
- Как давно вы установили систему
- Подверглись ли у вас файлы в подпапках WinSxS сжатию в рамках очистки (если сжимаются, покажите скриншот TreeSize)
Если у вас возникли вопросы, я постараюсь ответить на них в комментариях и/или дополнить статью.
Владимир Каширский
Мне кажется, для SSD самым простым решением проблемы является использование символической ссылки, которая ведет на более емкий HDD.