6 января 2012 г.

WinsxsLite: попытка уменьшить размер Windows

Windows во все времена представляла по своим свойствам некое подобие газа - какой-бы объем жесткого диска ей не предоставить, она все-равно стремится занять его весь и попросить ещё. Ну или если будут уместны аналогии из животного мира, то Windows представляется мне в виде хряка, которого можно кормить всякими помоями, а он будет быстро расти и набирать вес, и даже если эту сволочь вообще не кормить, то оно будет само ходить по двору и съедать все что попадается на глаза.
В свое время я установил Windows 7 на раздел жесткого диска и отвел под систему и необходимые программы 30 Гб. Тогда мне наивно думалось что этого хватит на саму ОС и на необходимые программы. Как бы не так - теперь Windows 7 самолично занимает 13 Гб, и это просто возмутительно если сравнивать с размерами папки Program Files, которая занимает каких-то 2 Гб (как какой-нибудь фильм). Кроме папки Windows, сама ОС очень любит создавать файлы в каталоге Users, где хранятся пользовательские данные. Теперь эта папка представляет собой страшную помойку, заглядывать в которую просто страшно, а разгребать и того труднее (сродни подвигу Геракла, который разгребал какие-то там конюшни).
WinsxsLite v1.87 за работой
Не буду о грустном. Сегодня я предпринял попытку получить чуть-чуть свободного пространства на жестком диске. Для этого я воспользовался магическим скриптом под названием WinsxLite. Не буду давать ссылку на официальный сайт скрипта, потому-что он бесполезен, зато вот ссылка на статью, где подробно описано что это за скрипт.
Версия скрипта немного изменилась, да и появилась новая версия утилиты ln.exe (которая и будет делать основную работу по созданию hardlinks), поэтому архив представленный в статье немножко не актуальный. Я собрал новый архив и выложил его здесь. Чтобы скрипт заработал, утилиту ln.exe необходимо скопировать в каталог Windows.
Работа скрипта во время второй фазы.
Скрипт работает довольно долго (сканирует каталоги и рассчитывает md5 каждого файла), у меня он работал около двух с половиной часов (просто режим [w]insx работает чуть быстрее). Всю эту работу можно было бы делать гораздо быстрее, в несколько десятков раз быстрее (она очень хорошо поддается параллельным вычислениям), но для этого нужен опытный программист, который бы полностью переписал этот скрипт в одну программу.
Свершилось ли чудо? На первый взгляд да - свободное место появилось. К сожалению это не 6 Гб, а более скромное значение, но все-равно приятно. Стоит ли это 6 часов напряженной работы компьютера? Не думаю. А проблему разросшейся Windows 7 можно решить и более радикально - переустановкой.

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

  1. Скопировал LN.exe в C:\WINDOWS\SYSTEM32, затем загрузился в безопасном режиме от имени администратора и запустил батник.

    Сначала выбрал Phase1 нажав 1 и Scan нажав S. Скрипт отработал два часа и снова спросил что делать.

    Выбрал Phase1 нажав 1 и Apply нажав A. Скрипт ещё что-то посчитал и сказал что он запланировал некоторые действия выполнить во время перезагрузки.

    Перезагрузился - ничего. В корне диска C есть папка $, я так понимаю именно она ответственна за действия производимые при перезагрузке. После нескольких перезагрузок папка не изчезает. Если скрипт запустить снова, то он не будет предлагать выбрать фазу 1 или фазу 2, а скажет что запланированы 4 действия и нужно перезагрузиться.

    Что не так?

    ОтветитьУдалить
  2. Автору спасибо за адаптацию к windows 7. А насчет переустановки эт зря. Времени потеряете еще больше, чем при оптимизации winsxs.

    ОтветитьУдалить
  3. Два раза пытался почистить и оба раза неудачно: первый раз перестали работать почти все приложения, включая и чертова Касперского, который при применении(a) считает, что в системе орудует червь и убивает батник. Второй раз Каспера при операции применения выгружал, но все равно он заглючил, исправить не удалось, сколько не бился. А потом обнаружил, что ещё несколько программ, включая даже второй браузер SRWare Iron глючат или вообще, как браузер, не работают.
    Поэтому отпрыгнул на созданный бекап, жаль, конечно освободилось три с лишним ГБ, почти 4, по проводнику(он,конечно, не очень точный, но всё же). Пользовался версией 1.86, попробую ещё новой версией, бог любит троицу. Спасибо за сборку.

    ОтветитьУдалить
  4. Спасибо за способ.
    Освободил полтора гига.
    Что делать:
    1. выбираем пункт 1 ("1" ввод) - потом скан, после Апплай.
    2. Перезагрузка

    3. выбираем пункт 2 ("2" ввод) - потом скан, после Апплай.
    4. Перезагрузка

    У меня остались 3 неперемащаемых елемента - нажал "удалить" - после всего.

    Внимательно читайте сообщения программы.

    ОтветитьУдалить
  5. Спасибо за скрипт

    ОтветитьУдалить
  6. Перестала работать winsxslite 1.87.
    Давно и удачно пользовался, сжимал на сотни мегабайт установленную систему Windows 7 "компактный" вариант (и так не тяжелый). После какого-то из обновлений Windows 7 - скрипт перестал работать. То есть сжимать - сжимает, но после этого система не запускается с ошибкой "343 not found comctl32.dll". Windows восстановлению не поддаётся, только из бэкапа доставать.
    Сначала махнул рукой, но впоследствии наткнулся на такое обходное решение:
    1. Запускаю фазу 1, scan. Программа отрабатывает, создается файл Todo1.txt.
    2. Нажимаю еще раз фазу 1. Получаю вопрос: [S]can, [A]pply? И ПЕРЕД тем, как нажать [A]pply - ручками правлю в Todo1.txt, а именно - удаляю строчки, в которых замечаю comctl32.dll (в моем случае 4 штуки), сохраняю измененный файл, затем возвращаюсь в окно WinsxsLite, нажимаю [a] и [Enter].
    3. Аналогично поступаю и с фазой 2. Сначала [2], [S]can, затем [2], редактирование Todo2.txt (удаление строк, содержащих comctl32.dll), его сохранение, возврат в окно с WinsxsLite, [a], [Enter]

    В итоге функционал отрабатывает (освобождены 500-600 МБ), Windows 7 грузится и работает успешно.

    ОтветитьУдалить