Опубликовано в Gazeta.Ru от 08-07-1999 (Выпуск No 088)
Оригинал: http://gazeta.ru/flopovod/08-07-1999_deinst.htm


Марк Блау, <dmitri@listsoft.com>
Чистота - залог здоровья. Программы-деинсталляторы


Чтобы в доме было чисто, надо убирать каждый день.
Мао Цзе-дун

Для чего они нужны

Места на жестком диске всегда не хватает. В истинности этого я убедился давным-давно, когда жесткий диск еще назывался "винчестер" и стоял не на каждом персональном компьютере. "Винчестер" емкостью 20 Мбайт казался необъятным вместилищем информации. Еще бы! Целых 56 флоппи-дисков! На всю жизнь хватит...

Но по прошествии девяти месяцев вдруг оказывалось, что жесткий диск заполнен "под завязку". Приходилось садиться за просмотр директорий и безжалостно стирать игры, чтобы освободить еще немного места для работы. Правда, ходили слухи о том, что уже появились (в США, конечно) 40 и 50 мегабайтные хард-диски. Вот уж где можно разгуляться! Но пока до нас дойдет...

С тех пор мне пришлось работать на многих персональных компьютерах. Размер жесткого диска неуклонно рос. Однако, странное дело! Приблизительно через девять месяцев, независимо от размеров, он заполнялся настолько, что приходилось принимать какие-либо радикальные меры по его очистке от накопившегося мусора. Или покупать диск большего размера. Чтобы еще через девять месяцев обнаружить, что и на новом диске свободного места почти не осталось.

В чем причина? Во-первых, конечно, в том, что увеличились размеры программ. Прошли времена, когда программисты (особенно, советские) "вылизывали" свои программы, стремясь сделать их более компактными. Как говорил Паниковский из "Золотого теленка", таких теперь нет и скоро совсем не будет.

Кроме того, при переходе с операционной системы DOS к Windows на жестком диске стало скапливаться больше мусора. Дело в том, что в Windows несколько приложений могут одновременно использовать один модуль (например, общую библиотеку, которая находится в системной директории). Такая организация уменьшает объем программ и сокращает время их разработки. Однако теперь "удаление мусора" усложнилось. В DOS и программа, и все ее вспомогательные файлы помещались в одну директорию, и для их удаления достаточно было стереть эту директорию. В операционной же системе Windows удаление директории, в которой размещено приложение, не приводит к полному удалению всех установленных файлов. Ненужные файлы накапливаются в разных местах.

Основными местами, которые прирастают в объеме при установке программ, являются следующие:
1. Директория Windows/System - системная директория, в которой хранятся файлы драйверов (с расширениями .VXD и .DRV) и динамически связываемых библиотек (с расширением .DLL), а также другие файлы, содержащие совместно используемый код. Эти файлы занимают много места. Директория Windows/System после установки нескольких программ занимает 50-100 Мбайт в Windows95 и 100-150 мегабайт в Windows98.
2. Некоторые программы (например, Dagesh) наполняют директорию Windows/Fonts собственными шрифтами.
3. Файлы регистрации. При установке добавляются строки в файлах инициализации win.ini и system.ini, а особенно в реестре Windows95/98. Многие программы оставляют свои записи в этих файлах и после удаления, от чего файлы регистрации разрастаются. В результате увеличивается время загрузки системы, в память загружаются лишние драйверы. Кроме того, если, например, какой-либо драйвер стерт, но ссылка на него осталась в файлах регистрации, то при попытке системы в ходе инициализации загрузить несуществующий (стертый) драйвер загрузка приостанавливается, и пользователь видит сообщения об ошибке (на черном или - еще хуже - на синем экране).
4. Дополнительные директории. Части установки программ могут находиться в директории Windows и ее поддиректориях, в директории Program Files и особенно в ее поддиректории Common Files.
5. Директории совместного использования. Не только инсталляция программ, но также их использование оставляет за собой много лишних файлов: просмотр страниц в Интернете оставляет тысячи файлов в директориях Cache и Cookies; Microsoft Office делает "временные" файлы, которые остаются в поддиректории Windows/Temp и директории My Documents. Многие приложения записывают временные файлы и резервные копии файлов в разных местах. После каждого "падения" системы в поддиректории Windows/Temp также остается много "файлового мусора". Он же появляется в определенных случаях при обнаружении ошибок и после работы программы ScanDisk.

В Windows 95/98 имеется программа регистрации установки и деинсталляции - InstallShield. Как и большинство утилит Windows, она работает неплохо, но не основательно. Во многих случаях программа не удаляет директории деинсталлированных аппликаций и их ярлыки в начальном меню. Хуже того - опасаясь, что при удалении какой-либо программы могут быть удалены файлы, жизненно важные для других аппликаций, деинсталлятор Microsoft по умолчанию сохраняет все системные файлы. Фирмы-разработчики программного обеспечения, не ожидая милости от Microsoft, снабжают свои программы собственными деинсталляторами, которые обеспечивают полное удаление конкретной программы. Вместе с тем, если вы хотите "почистить" диск более качественно или деинсталлировать 16-битные (для Windows 3.11) программы, вам помогут только специальные программы-деинсталляторы.

Что они делают Это звучит смешно, но для того чтобы деинсталлировать другие программы, сначала следует инсталлировать деинсталлятор. Сразу же после своей установки программа-деинсталлятор просматривает весь диск (или диски), каталогизирует все файлы и создает базу данных всех файлов и программ, находящихся на каждом диске. Благодаря этому деинсталлятор может распознать множественные файлы, ранние версии которых следует удалить. Всякий раз при запуске программа-деинсталлятор заново сканирует диск и модифицирует свою базу данных в соответствии с произведенными изменениями. Также обновляется каталог, в котором хранятся взаимные связи между аппликациями и динамическими библиотеками (.DLL), а также связи между самими этими библиотеками. Это позволяет деинсталлятору решить вопрос о том, можно или нельзя удалять данную библиотеку, не повредит ли это работе других программ?

Следует заметить, что простые программы, а также Uninstall Shield Windows 95/98 обходятся без сканирования диска, поэтому результаты их работы хуже.

При загрузке операционной системы программа-деинсталлятор запускает небольшую программу-монитор, которая работает в фоновом режиме. На линейке заданий (Task Tray) появится значок монитора.

Монитор отслеживает запуск различных программ. В случае, если запускаемая программа начинает инсталляцию (чаще всего такая программа называется Setup или Install), деинсталлятор отслеживает и записывает все производимые изменения (появление и модификация файлов, изменения в регистре и в файлах инициализации). Таким образом, при необходимости удаления установленной ранее программы и приведения системы к прежнему виду, деинсталлятор знает, какие изменения следует производить и где именно. Но, делая эти изменения, деинсталлятор дает пользователю возможность возвратиться назад, если при этом система была вдруг повреждена. Для этого производится резервное копирование (Backup) всех удаляемых файлов и строк. Если все в порядке, то через некоторое время пользователь может удалить резервную копию. Но он может и восстановить из нее раннее удаленную программу, причем не только на прежнем компьютере, но и на другом. Свойство резервного копирования делает деинсталляторы идеальным средством переноса программ между компьютерами.

Статья опубликована с любезного разрешения израильской газеты "Интерфейс"

Пишите нам: info@gazeta.ru
Copyright © Gazeta.Ru
RRU_Network
При перепечатке и цитировании ссылка на источник с указанием автора обязательна. Перепечатка без ссылки и упоминания имени автора является нарушением российского и международного законодательства, а также большим свинством.