Longtime Microsoft software engineer Raymond Chen recently engaged with a thought-provoking inquiry from a game developer on X regarding the setup process of Windows 95. The developer sought to understand the rationale behind the three distinct user interfaces that characterized the transition from MS-DOS to Windows 3.x, culminating in the iconic Win9x GUI. Chen elucidated that this design was a strategic choice aimed at minimizing the code required for the Windows 95 configuration experience.
Unpacking the Setup Process
For seasoned PC users, the intricate relationship between MS-DOS code and the graphical user interface within the Win9x ecosystem may be familiar territory. However, Chen emphasized that the multi-OS support embedded in the Windows 95 setup program was more sophisticated than it appeared at first glance.
With over three decades of experience influencing the trajectory of Windows, Chen possesses a wealth of knowledge about the nuanced complexities of one of the globe’s most prevalent software platforms. In his blog, The Old New Thing, he explained that the Windows 95 setup was meticulously crafted to facilitate upgrades from three distinct starting points: MS-DOS, Windows 3.1, and Windows 95 itself. This requirement for compatibility across various computing environments shaped the design of the setup process.
The setup program was primarily developed as an MS-DOS application, yet it was engineered to operate across three different operating systems, each serving a unique purpose. The DOS component was essential when the setup was initiated from the MS-DOS prompt, as accessing the Win9x environment would have been unfeasible without prior installation on the hard drive.
Moreover, the MS-DOS setup component installed a streamlined version of Windows 3.1—sufficient to support the 16-bit segment of the setup tool. Once booted into this minimal Windows 3.1 environment, the 16-bit GUI setup program would commence. This application was versatile, capable of running in a full Windows 3.x environment or even within an already installed Windows 95 OS, allowing users to repair a corrupted system if necessary.
Chen highlighted that the 16-bit Windows application was the linchpin of the entire process, managing the bulk of tasks essential for the “real” Windows 95 installation. This graphical interface facilitated user interaction, gathered configuration data, determined which OS components to install, and conducted hardware detection to identify the appropriate drivers.
After successfully copying the Windows 95 files and drivers to the system, the 16-bit setup transitioned into the Win9x environment. The final stage of the setup involved a genuine Win32 application, which completed the installation by managing tasks such as printer installations and configuring other peripherals.
By interlinking these three setup programs, Microsoft effectively streamlined development, allowing for the reuse of a single codebase across all three primary installation scenarios. As Chen aptly noted, “Each program takes you one step closer to the goal. And everything got implemented only once.”