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:

  1. The Display Driver (.DRV): The primary 16-bit driver handling screen drawing and hardware communication (e.g., VGA.DRV, S3.DRV, SVGA.DRV).
  2. 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.
  3. 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).
  4. 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= and 386grabber= 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=*vddvga or a third-party equivalent like display=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.