Ветеран компании Microsoft, инженер-программист Рэймонд Чен, в последние несколько лет часто делится ностальгическими историями об операционной системе Windows, в основном рассказывая о Windows 95. В новом материале серии статей «Старое и новое» Рэймонд Чен рассказал, как разработчикам приходилось бороться со сторонними установщиками программного обеспечения, которые ломали работу операционной системы.
Во времена Windows 95 многие системные файлы были свободно распространяемыми. Это означает, что установщики программного обеспечения могли включать копии этих компонентов и обновлять их на персональном компьютере. В Microsoft надеялись, что такие инсталляторы в процессе работы будут сравнивать версии файлов и начинать перезапись только в том случае, если устанавливаемый файл имеет более высокий номер версии.
На деле всё обстояло иначе. Многие установщики часто игнорировали это правило и заменяли последние версии системных файлов более старыми, что в свою очередь приводило к различным сбоям в работе операционной системы.
В итоге создателям Windows 95 пришлось придумать довольно остроумный механизм решения проблемы. Резервные копии перезаписываемых файлов хранились в скрытой папке C:\Windows\SYSBCKUP. Это позволяло системе проверять, были ли перезаписаны какие-либо файлы после установки.
«В этом случае, если у заменяющего файла номер версии выше, чем у файла в каталоге SYSBCKUP, то заменяющий файл копировался в каталог SYSBCKUP для сохранения. И наоборот, если у заменяющего файла номер версии ниже, чем у файла в каталоге SYSBCKUP, то копия из SYSBCKUP копировалась поверх некорректного заменяющего файла», — рассказал Рэймонд Чен.
И хотя блокировка прав доступа установщиков может показаться более простым решением этой проблемы, Чен отметил, что это вызвало больше проблем — могли наблюдаться перебои в работе самих инсталляторов. Кроме того, некоторые разработчики пытались использовать хитрые приемы, например, перезагрузку и перезапись файлов из пакетного скрипта.
Поэтому компания Microsoft решила остановиться на решении, которое позволяет установщикам выполнять свою работу, а затем незаметно проверять и исправлять повреждения.