One of the reactions to my discussion of why Windows 95 setup used three operating systems (and oh there were many) was my explanation that an MS-DOS based setup program would be text-mode. But c’mon, MS-DOS could do graphics! Are you just a bunch of morons?
Yes, MS-DOS could do graphics, in the sense that it didn’t actively prevent you from doing graphics. You were still responsible for everything yourself, though. There were no graphics primitives aside from a BIOS call to plot a single pixel. Everything else was on you, and you didn’t want to use the BIOS call to plot pixels anyway because it was slow. If you wanted any modicum of performance, you had to access the frame buffer directly.
↫ Raymond Chen
And with everything the Windows 95 setup program needs that you’d have to create, you’d end up just… Developing a custom operating system in the first place. Since Microsoft already had Windows 3.x lying around, why not reuse parts of that to aid in the Windows 95 installation process? Honestly, all of it makes perfect sense, and I really don’t understand why anyone would seriously advocate for building a separate, entirely custom operating system just to install Windows 95 when Windows 3.x was right there.
Of course, these days things are a little different, but Windows still loads a different operating system during its installation. It’s called the Windows Preinstallation Environment, but it’s no longer based on Windows 3.x, obviously, and instead is a cut-down version of the Windows version you’re actually installing. The latest version of Windows PE is 10.0.26100.1, and it’s built from Windows 11 24H2. Windows PE also powers the Windows Recovery Environment, the menu you can boot into to perform various analyses, maintenance, and repair of your Windows installation.
Since Microsoft does not want Windows PE to be used a general purpose operating system, it comes with a few interesting limitations you can’t really circumvent. It has a non-configurable 72-hour time bomb, after which if will just shut off, and since PE runs entirely in memory, no changes are saved – unless you make any changes during the creation of the PE image. It also makes use of FAT32, so there’s a whole host of limitations there, and there’s a few other things Microsoft disabled. Since you an add drivers to a PE image, though, I wonder if you could sneak in a file system driver and circumvent FAT32’s limitations that way?
“Design us a neat graphical environment for install and spend heaps of time and resources to make sure no hacker can mess with it and post an annoying youtube video on how they managed to make it do something that it wasn’t intended to do.” Like run Doom. Or WINE. Or Win 3.1. Or Wayland.
I suppose that today’s modern developers have much less exposure to low level development, but a whole lot of developers in the DOS era did low level development on a regular basis. I think the difficulty & complexity of writing graphics in DOS may be a bit exaggerated. Granted devs who role their own libraries benefited less from code reuse, but still for developers of the time it wasn’t all that novel to write custom low level GUI code. One person could do it on their own and many did.
Completely understand, as I did the same at one point. But for what benefit? I only did it because the libraries that we paid for were terrible, and the other paid libraries that existed were too expensive for us to use on a low volume product. As Raymond points out, it made more sense to use win 3.1.
Bill Shooter of Bul,
I’m not sure how beneficial it would have been, only that it wouldn’t have been much fuss for microsoft to get a developer to write a windows setup for DOS. Honestly I wouldn’t have minded if they stuck with text installers. If I had the choice I kind of prefer the text bases bios UIs over today’s BIOS GUIs.
I guess for comparison. MacOS typically booted directly to MacOS for an installer. Typically, extra extensions, control panels, fonts, and even the FinderApp were removed which was very easy to do as modular as it was. There was no registry, it just booted anything you kept in the control panels/extensions/system folder. Likewise resource forks allowed easy pruning of any App or File, like removing extra fonts, Sound, and higher resolution/color depth graphics. Admittedly I am not sure what they did before system 6. I also never had to use dual media. Since CDROMs were SCSI driven, they were bootable in MacOS as soon as they became an option. I had a much different story every time I went to instal windows3.1/95/98. First boot with floppy because bios didn’t support CD, then find usable DOS driver for CDROM drive, then copy installer to C and launch from there , becuase if I run from CD the installer looses access to itself upon reboot before the windows driver was installed..
“Since you an add drivers to a PE image, though, I wonder if you could sneak in a file system driver and circumvent FAT32’s limitations that way?”
It’s been done. Might look into thinks like BartPE for historical reference on that, and. Also there are some commercial tools that leverage Pre-Execution Environment such as later versions of Norton Ghost. Despite being discontinued entirely too long ago, it’s still usable, with some limitations.
Maybe look at Hiren’s PE for an example of usage with Win11 PE.
OK I have learned. BartPE and HirensPE. Didn’t realise they were a thing. Maybe as I haven’t used Windows properly since 2004…