Как удалить сборку Win32 и очистить WinSxS?

После большого количества проб и ошибок (в основном из-за отсутствия документации и примеров) мне удалось создать установщики MSI, которые устанавливают пользовательские библиотеки DLL в WinSxS как бок о бок. Существует только одна проблема: удаление всех файлов (DLL, манифестаций и каталогов) в каталоге WinSxS. Как я могу лучше всего это очистить? Я точно знаю, что больше ничего не ссылается на него.

Я где-то читал, что WinSxS имеет процесс самообучения, который очищается с течением времени, но я не мог найти больше информации об этом. Можете ли вы вручную вызвать это, чтобы очистить материал?

Единственный другой способ, который я вижу, - это вручную удалить эти биты. Сначала вы должны изменить владельца всех файлов (сборка, каталог, манифест и их соответствующий каталог) из SYSTEM на учетную запись администратора, настроить разрешения и удалить их. В реестре также есть фрагменты (я думаю, что HKLM\COMPONENTS\DerivedData\Components может быть одним местом), но поскольку WinSxS следует рассматривать как непрозрачный, сложно найти какую-либо информацию.

Ответ 1

Вот статья это своего рода полное руководство по WinSxS.

Итак, в ближайшее время вы можете удалить некоторые компоненты (все их версии находятся в этой папке), и вы можете запустить служебную программу для смены моста Service Pack (в Vista она называется VSP1CLN.EXE и поставляется с пакетом обновления 1). Обратите внимание, что после выполнения вы не сможете удалить SP или любые компоненты, чтобы указать до даты выпуска SP.

Ответ 2

Очистка не раскрывается нигде, о которой я знаю. Я даже не уверен, когда его автоматически запускают. Может быть, при удалении пакета обновления? Может быть, некоторые администраторы могут работать? Я действительно забываю.

В любом случае, мое предложение - не бороться с ним. Там так много крутых поворотов, что просто не стоит пытаться вернуть дисковое пространство. После удаления бит, все еще находящийся в кеше SxS, не будет активирован, поэтому они просто теряют пространство.

Это немой дизайн, но обвинять Microsoft и не пытаться перекомпенсировать.

Ответ 3

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

Был длинный "обсуждение" проблемы с технологией.

Нет документации по формату или каких-либо инструкций по удалению ненужных файлов. Кажется, что MS считает, что дисковое пространство дешево. Существует функция самообучения, но никто не убежден, что она работает, или, если это так, очень консервативно (как вы надеетесь, поскольку вы не хотите, чтобы она нарушила вашу ОС)

Вы можете сказать, что мусорщик работает, проверяя "C:\Windows\winsxs\Temp\PendingDeletes"., так как это файлы перемещаются при обновлении Windows или их установщик перемещает их - мусорщик просто удаляет файлы здесь.

Ответ 4

Вы заметите, что после того, как вы удалите сборку, пока файлы все еще там, они больше не могут быть связаны - поэтому они просто "поставлены" или кэшированы, но не установлены.

Rob и gbjbaanb верны - вы не можете вручную вызывать утилизацию самостоятельно. Не пытайтесь сами удалять файлы - в реестре есть несколько мест, где они зарегистрированы, DerivedData\Components - это только одна из многих ссылок.

Я думаю, что правило для Vista - это очистка от службы TrustedInstaller после 10 минут бездействия машины после последней операции обслуживания (пакет обновления, исправление и т.д.). Но он очень непостоянный, поэтому он работает не так часто, как должен. Так что будьте терпеливы, и файлы исчезнут сами по себе.

Ответ 5

Ну, у меня были некоторые проблемы, так как у меня SSD на 80 ГБ для моих окон, а в папке WinSxs было около 12 ГБ

Я искал сеть, и я нашел эту команду:

DISM.exe/онлайн/Очистка-изображение/spsuperseded

И теперь мои WinSxs - 7gb, которые были замечательными новостями.

Ответ 6

Существует несколько обновлений, касающихся метода очистки, применимого к более новой ОС. Проверьте http://www.karafilis.net/winsxs-cleanup