Пользователь Twitter @tthirtle спросил, почему установка Windows 95 проходит через три операционные системы: MS-DOS, Windows 3.1, а уже потом Windows 95. Почему не перейти от MS-DOS сразу к Windows 95?
Ещё один хороший вопрос: почему в установке Windows 95 используется три разных UI. DOS, Win3.x и Win9x?
— Thomas (@tthirtle) July 7, 2024
Установка Windows 95 может быть апгрейдом с трёх начальных точек: MS-DOS, Windows 3.1 или Windows 95. (Да, можно проапгрейдить Windows 95 до Windows 95. Это может понадобиться для того, чтобы восстановить повреждённую систему и сохранить при этом данные).
Один из вариантов решения — написать три версии установки Windows 95: одна для установки из MS-DOS, другая для установки из Windows 3.1 и третья для установки из Windows 95.
Это не очень удобный вариант, ведь, по сути, придётся трижды выполнять одну и ту же работу, но реализованную по отдельности, так что потребуется в три раза больше кода.
Вариант получше: просто написать одну версию установки Windows 95 и использовать её для всех трёх начальных точек. Так вы сможете выбирать платформу, на которой будет базироваться ваш код.
Исходная платформа |
Тип приложения |
||
---|---|---|---|
MS-DOS |
16-битный GUI |
32-битный GUI |
|
MS-DOS |
• |
|
|
Windows 3.1 |
• |
• |
|
Windows 95 |
• |
• |
• |
Если написать установку Windows 95 как приложение MS-DOS, то оно запустится на всех трёх платформах. И это отлично! Достаточно написать только одну программу-установщик. Недостаток этого заключается в том, что это будет установщик в текстовом режиме, который будет выглядеть некрасиво и оставит неприятное первое впечатление от продукта, который должен познакомить пользователя с миром совершенно нового GUI.
Вариант с другого конца спектра: можно написать установщик Windows 95 как 32-битную GUI-программу, но если пользователь начинает с MS-DOS или Windows 3.1, то придётся установить Windows 95 до того, как можно будет запустить установку Windows 95, что похоже на «Уловку-22».
Но есть и золотая середина: можно сделать так, чтобы программа-установщик для MS-DOS устанавливала минимальную версию Windows 3.1, в которой есть только ровно необходимое для 16-битной GUI-программы установки1. Эта крошечная версия достаточно мала, чтобы её можно было скопировать и установить с небольшого количества гибких дисков. После завершения её установки можно загрузить крошечную версию Windows 3.1 и запустить 16-битную GUI-программу установки.
1. Существовал реальный прецедент крошечной версии Windows, в которой было только самое необходимое для запуска одной программы. Первая версия Microsoft Excel для Windows поставлялась со средой выполнения Windows 2.1, чтобы пользователи без Windows всё равно могли работать с Excel.
Итак, теперь у нас есть три программы-установщика. Первая используется при установке из MS-DOS: она устанавливает крошечную версию Windows 3.1, а затем загружает Windows 3.1, чтобы продолжить выполнение со следующего этапа.
Вторая программа-установщик запускается как 16-битная программа Windows или в миниатюрной копии Windows 3.1 (если пользователь выполняет апгрейд с MS-DOS), или в реальной копии Windows 3.1 (если пользователь апгрейдится с Windows 3.1), или в реальной копии Windows 95 (если пользователь обновляется с Windows 95). Эта вторая программа-установщик и выполняет практически всю реальную работу: она обеспечивает первоначальное взаимодействие с пользователем для получения информации о том, как устанавливать Windows 95, например, спрашивает, какие опциональные компоненты нужно установить, а также выполняет распознавание оборудования, чтобы знать, какие драйверы устанавливать2. Затем она копирует драйверы и файлы Windows 95 в систему, выполняет миграцию старых настроек в новую операционную систему и загружает Windows 95.
2. Этот код распознавания оборудования, который используется в программе установки — на самом деле, тот же код, который выполняется при распознавании оборудования внутри самой Windows 95, так что даже этот код нужно было написать только один раз. Он проводил проверки среды выполнения, чтобы немного менять своё поведение в зависимости от того, запущен ли он в Windows 3.1 или в Windows 95, но подавляющая часть кода была одинаковой.
Третья программа-установщик запускается как 32-битное приложение Windows. Она работает в реальной системе Windows 95 и выполняет финальные шаги, требующие живой работающей системы, например, устанавливает принтеры.
Именно поэтому установка Windows 95 — это, на самом деле, цепочка из трёх программ-установщиков. Это позволяет использовать одну копию кода во всех трёх сценариях установки. Каждая программа на один шаг приближает вас к цели. И всё это реализовано только один раз.
Автор: PatientZero