За последние несколько лет были раскрыты интересные факты из истории Microsoft Windows: от того, почему стратегия графического интерфейса долгое время была фрагментированной, до множества «интересных гаджетов», спрятанных на установочном компакт-диске Windows 95, до тех непопулярных трюков, которые помогают старым компьютерам быстрее перезагружаться. Недавно другой опытный сотрудник Microsoft поделился малоизвестной историей о том, как Windows 95 справлялась с «неприятными» установщиками.

По словам Рэймонда Чена, инженера, отвечавшего за Windows в Microsoft, в эпоху Windows 95 многие сторонние установщики программного обеспечения поставлялись с пакетом распространяемых системных компонентов, чтобы гарантировать бесперебойную работу программного обеспечения на компьютере пользователя. Официальное руководство Microsoft в то время гласило: при копировании этих компонентов установщик должен сначала определить, существует ли уже компонент с таким же именем в системе и обновлена ​​ли существующая версия; только если компонент не существует в системе или версия системы более старая, его можно перезаписать и установить.

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

Столкнувшись с риском «регресса», Microsoft наконец разработала компромисс, который не был необычным, но очень практичным: поддерживать скрытый каталог резервных копий с именем C:WindowsSYSBCKUP в системном каталоге. В этом каталоге хранятся копии критически важных компонентов системы, которые чаще всего перезаписываются внешними установщиками. Когда программа установки завершит работу, Windows 95 незаметно выполнит «сравнение версий» в фоновом режиме: сравнивая текущие «новые» компоненты системы с резервными версиями в каталоге SYSBCKUP один за другим.

Если обнаружится, что установщик заменил компонент более старой версией, система заменит его более новой копией, сохраненной в SYSBCKUP, без ведома пользователя, что эквивалентно автоматической «отмене» ошибочной перезаписи. Если будет обнаружено, что программа установки действительно устанавливает более позднюю версию компонента, Windows 95 синхронно обновит соответствующий файл резервной копии в SYSBCKUP, чтобы его можно было продолжать использовать в качестве базовой версии восстановления в будущем.

Чен сказал, что с инженерной точки зрения этот подход на самом деле является относительно «сырым», но он намного лучше, чем некоторые грубые решения, которые Microsoft изначально пробовала. Например, Microsoft изначально пыталась напрямую запретить установщику перезаписывать файлы системных компонентов. Это действительно может защитить систему, но цена состоит в том, что из-за этого происходит сбой большого количества процессов установки, и пользователи могут видеть только сообщения об ошибках, но не имеют возможности их решить. Другая идея состоит в том, чтобы программа установки написала «фиктивный файл». На первый взгляд кажется, что перезапись прошла успешно, но на самом деле реальные компоненты не затрагиваются. Но это решение тоже не работает, поскольку многие программы установки также проверяют результаты записи. Если содержимое файла или проверочное значение окажется несоответствующим, появится сообщение об ошибке, требующее завершения процесса.

После того, как эти решения выявили очевидные недостатки, механизм «постфактического исправления» с использованием каталога SYSBCKUP стал на тот момент лучшим балансом между надежностью и гибкостью: он не только позволял сторонней программе установки работать нормально, но и автоматически устранял потенциальный ущерб, который она наносила ключевым компонентам системы в фоновом режиме, что значительно снижало вероятность того, что обычные пользователи «сломают Windows, просто делая вид, что устанавливают ее» при ежедневной установке программного обеспечения.