How Windows 3.11 SETUP.EXE Installed Display Drivers
In Microsoft Windows 3.11, installing and configuring display drivers
relied primarily on the SETUP.EXE utility, which operated
either from within the graphical Windows environment or directly from
MS-DOS. The process involved reading driver definition files, copying
and decompressing the appropriate driver components from installation
disks, and updating the core Windows configuration file,
SYSTEM.INI. This mechanism allowed users to switch
resolutions, color depths, and video chipsets without reinstalling the
operating system.
The Dual Roles of SETUP.EXE
Windows 3.11 included two versions of SETUP.EXE. Running
the utility from within Windows launched a 16-bit graphical application
called Windows Setup (located in the Main program group). Running
SETUP.EXE from the MS-DOS prompt inside the Windows
directory invoked a text-mode, character-based installer.
While the Windows-based version could queue changes, installing
third-party drivers or recovering from an incompatible video
configuration often required running the DOS-based
SETUP.EXE. The DOS interface bypassed the existing
graphical driver entirely, ensuring that a user with a corrupted or
black-screen display configuration could safely reset their video
adapter to standard VGA (640x480, 16 colors).
Driver Configuration via INF Files
The installation process was directed by setup information files,
primarily SETUP.INF for native drivers and
OEMSETUP.INF for third-party or hardware-manufacturer
drivers. These plain-text files contained indexed lists of supported
video adapters, selectable resolutions, color palettes, and the specific
files required for each mode.
When a user selected "Change System Settings" and chose "Display,"
SETUP.EXE parsed these .INF files to populate
the menu of available display modes. If the user selected "Other display
(Requires disk from OEM)...", SETUP.EXE searched the
provided floppy disk or directory for an OEMSETUP.INF file
to read the new hardware definitions.
File Extraction and Component Installation
Once a display setting was selected, SETUP.EXE prompted
the user to insert the relevant Windows installation disks or
third-party driver media. Video drivers in Windows 3.11 were not single,
self-contained files; they required a coordinated set of components:
- The Display Driver (
.DRV): The primary 16-bit driver handling screen drawing and hardware communication (e.g.,VGA.DRV,S3.DRV,SVGA.DRV). - Virtual Display Device (
.386): For 386 Enhanced Mode, a corresponding virtual device driver (VDD) was needed to manage virtualized video access for DOS applications running in the background. - Screen Fonts (
.FON): Display drivers required specific fixed-pitch and proportional system fonts tailored to the selected resolution (such as small or large fonts for 800x600, 1024x768, or higher). - Grabber Files (
.2GR/.3GR): Handled cut, copy, and paste routines between DOS windows and the Windows clipboard.
Files stored on original Microsoft disks were often compressed using
the LZ compression format, indicated by an underscore in the file
extension (e.g., VGA.DR_). SETUP.EXE contained
an internal expansion routine (equivalent to the command-line
EXPAND.EXE utility) that decompressed and wrote the active
files into the C:\WINDOWS\SYSTEM directory.
Updating SYSTEM.INI
The final stage of the installation was updating the core system
parameters inside SYSTEM.INI. SETUP.EXE
modified key entries to bind the new driver to the operating system:
Under the
[boot]section:display.drv=was updated to point to the new driver file (e.g.,display.drv=s3.drv).286grabber=and386grabber=were updated with the appropriate screen grabber files.- System font mappings (
fonts.fon,oemfonts.fon,fixedfon.fon) were modified to match the chosen DPI and resolution.
Under the
[386Enh]section:display=was configured to load the corresponding virtual display driver (e.g.,display=*vddvgaor a third-party equivalent likedisplay=vs3.386).
After making these modifications, SETUP.EXE prompted the
user to restart Windows. Upon initialization, the core subsystem
(KRNL386.EXE, USER.EXE, and
GDI.EXE) loaded the newly defined .DRV
specified in SYSTEM.INI, bringing up the desktop in the
newly configured resolution and color depth.