@ECHO OFF REM ============================================================ REM MINWIN.BAT - Minimal Windows 3.1 Installation Builder REM REM Creates the smallest possible Windows 3.1 installation REM with support for GUI, serial port (COM), and audio. REM REM Usage: MINWIN REM Path to a full Windows 3.1 installation REM Destination for the minimal installation REM Application EXE filename (becomes the shell) REM REM Example: MINWIN C:\WINDOWS D:\MINWIN MYAPP.EXE REM REM Prerequisites: REM - DOS 5.0+ with HIMEM.SYS loaded in CONFIG.SYS REM - FILES=30 (or higher) in CONFIG.SYS REM - 386 or better processor REM REM After running, copy your application and its files into REM the target directory, then launch with: \WIN REM ============================================================ IF "%1"=="" GOTO USAGE IF "%2"=="" GOTO USAGE IF "%3"=="" GOTO USAGE SET SRCWIN=%1 SET SRCDIR=%1\SYSTEM SET TGTWIN=%2 SET TGTDIR=%2\SYSTEM SET APPNAME=%3 SET ERRCNT=0 REM -- Verify source directory IF NOT EXIST %SRCWIN%\WIN.COM GOTO NOSRC REM -- Create target directories IF NOT EXIST %TGTWIN%\NUL MKDIR %TGTWIN% IF NOT EXIST %TGTDIR%\NUL MKDIR %TGTDIR% ECHO. ECHO *** Minimal Windows 3.1 Installation Builder *** ECHO. ECHO Source: %SRCWIN% ECHO Target: %TGTWIN% ECHO Shell: %APPNAME% ECHO. REM ============================================================ REM Core boot files REM ============================================================ ECHO [1/7] Copying core files... CALL :COPYFILE %SRCWIN%\WIN.COM %TGTWIN%\WIN.COM CALL :COPYFILE %SRCDIR%\WIN386.EXE %TGTDIR%\WIN386.EXE CALL :COPYFILE %SRCDIR%\KRNL386.EXE %TGTDIR%\KRNL386.EXE CALL :COPYFILE %SRCDIR%\USER.EXE %TGTDIR%\USER.EXE CALL :COPYFILE %SRCDIR%\GDI.EXE %TGTDIR%\GDI.EXE CALL :COPYFILE %SRCDIR%\SHELL.DLL %TGTDIR%\SHELL.DLL REM ============================================================ REM Hardware drivers REM ============================================================ ECHO [2/7] Copying hardware drivers... CALL :COPYFILE %SRCDIR%\SYSTEM.DRV %TGTDIR%\SYSTEM.DRV CALL :COPYFILE %SRCDIR%\VGA.DRV %TGTDIR%\VGA.DRV CALL :COPYFILE %SRCDIR%\KEYBOARD.DRV %TGTDIR%\KEYBOARD.DRV CALL :COPYFILE %SRCDIR%\MOUSE.DRV %TGTDIR%\MOUSE.DRV REM ============================================================ REM Serial port driver REM ============================================================ ECHO [3/7] Copying serial port driver... CALL :COPYFILE %SRCDIR%\COMM.DRV %TGTDIR%\COMM.DRV REM ============================================================ REM Audio / Multimedia REM ============================================================ ECHO [4/7] Copying multimedia files... CALL :COPYFILE %SRCDIR%\MMSYSTEM.DLL %TGTDIR%\MMSYSTEM.DLL CALL :COPYFILE %SRCDIR%\MMSOUND.DRV %TGTDIR%\MMSOUND.DRV CALL :COPYFILE %SRCDIR%\TIMER.DRV %TGTDIR%\TIMER.DRV REM REM Sound card drivers are hardware-specific. REM Uncomment and adjust for your sound hardware: REM REM Sound Blaster 16: REM CALL :COPYFILE %SRCDIR%\SB16SND.DRV %TGTDIR%\SB16SND.DRV REM CALL :COPYFILE %SRCDIR%\VSBD.386 %TGTDIR%\VSBD.386 REM REM Sound Blaster Pro: REM CALL :COPYFILE %SRCDIR%\SBPRO.DRV %TGTDIR%\SBPRO.DRV REM REM Windows Sound System: REM CALL :COPYFILE %SRCDIR%\SNDSYS.DRV %TGTDIR%\SNDSYS.DRV REM REM MCI drivers (needed if app uses mciSendCommand/mciSendString): REM CALL :COPYFILE %SRCDIR%\MCIWAVE.DRV %TGTDIR%\MCIWAVE.DRV REM CALL :COPYFILE %SRCDIR%\MCISEQ.DRV %TGTDIR%\MCISEQ.DRV REM ============================================================ REM Fonts (minimum set for GUI rendering) REM ============================================================ ECHO [5/7] Copying fonts... CALL :COPYFILE %SRCDIR%\VGASYS.FON %TGTDIR%\VGASYS.FON CALL :COPYFILE %SRCDIR%\VGAFIX.FON %TGTDIR%\VGAFIX.FON CALL :COPYFILE %SRCDIR%\VGAOEM.FON %TGTDIR%\VGAOEM.FON REM ============================================================ REM 386 Enhanced mode display grabber REM ============================================================ ECHO [6/7] Copying display grabber... CALL :COPYFILE %SRCDIR%\VGADIB.3GR %TGTDIR%\VGADIB.3GR REM ============================================================ REM Optional but commonly needed DLLs REM Uncomment any that your application requires. REM ============================================================ REM ECHO Copying optional DLLs... REM CALL :COPYFILE %SRCDIR%\COMMDLG.DLL %TGTDIR%\COMMDLG.DLL REM CALL :COPYFILE %SRCDIR%\VER.DLL %TGTDIR%\VER.DLL REM CALL :COPYFILE %SRCDIR%\LZEXPAND.DLL %TGTDIR%\LZEXPAND.DLL REM CALL :COPYFILE %SRCDIR%\TOOLHELP.DLL %TGTDIR%\TOOLHELP.DLL REM CALL :COPYFILE %SRCDIR%\OLECLI.DLL %TGTDIR%\OLECLI.DLL REM CALL :COPYFILE %SRCDIR%\OLESVR.DLL %TGTDIR%\OLESVR.DLL REM ============================================================ REM Create minimal SYSTEM.INI REM ============================================================ ECHO [7/7] Creating configuration files... ECHO [boot]>%TGTWIN%\SYSTEM.INI ECHO shell=%APPNAME%>>%TGTWIN%\SYSTEM.INI ECHO system.drv=system.drv>>%TGTWIN%\SYSTEM.INI ECHO keyboard.drv=keyboard.drv>>%TGTWIN%\SYSTEM.INI ECHO mouse.drv=mouse.drv>>%TGTWIN%\SYSTEM.INI ECHO display.drv=vga.drv>>%TGTWIN%\SYSTEM.INI ECHO comm.drv=comm.drv>>%TGTWIN%\SYSTEM.INI ECHO sound.drv=mmsound.drv>>%TGTWIN%\SYSTEM.INI ECHO fonts.fon=vgasys.fon>>%TGTWIN%\SYSTEM.INI ECHO fixedfon.fon=vgafix.fon>>%TGTWIN%\SYSTEM.INI ECHO oemfonts.fon=vgaoem.fon>>%TGTWIN%\SYSTEM.INI ECHO 386grabber=vgadib.3gr>>%TGTWIN%\SYSTEM.INI ECHO [keyboard]>>%TGTWIN%\SYSTEM.INI ECHO type=4>>%TGTWIN%\SYSTEM.INI ECHO [386Enh]>>%TGTWIN%\SYSTEM.INI ECHO [drivers]>>%TGTWIN%\SYSTEM.INI ECHO timer=timer.drv>>%TGTWIN%\SYSTEM.INI REM REM Uncomment for your sound card (example: Sound Blaster 16): REM ECHO wave=sb16snd.drv>>%TGTWIN%\SYSTEM.INI REM ECHO midi=sb16snd.drv>>%TGTWIN%\SYSTEM.INI REM ============================================================ REM Create minimal WIN.INI REM ============================================================ ECHO [windows]>%TGTWIN%\WIN.INI ECHO Beep=yes>>%TGTWIN%\WIN.INI ECHO NullPort=None>>%TGTWIN%\WIN.INI ECHO [fonts]>>%TGTWIN%\WIN.INI ECHO [mci extensions]>>%TGTWIN%\WIN.INI REM REM Uncomment if app uses MCI for audio playback: REM ECHO wav=waveaudio>>%TGTWIN%\WIN.INI REM ECHO mid=sequencer>>%TGTWIN%\WIN.INI REM ============================================================ REM Summary REM ============================================================ ECHO. IF NOT "%ERRCNT%"=="0" ECHO WARNING: %ERRCNT% file(s) not found in source. ECHO. ECHO Installation complete. ECHO. ECHO Next steps: ECHO 1. Copy %APPNAME% (and any supporting files) into %TGTWIN% ECHO 2. If using a sound card, edit %TGTWIN%\SYSTEM.INI ECHO to add your wave/midi driver to the [drivers] section ECHO 3. From DOS, launch with: %TGTWIN%\WIN ECHO. ECHO Core files: ~1.4 MB ECHO. GOTO END REM ============================================================ REM Subroutine: copy one file with existence check REM ============================================================ :COPYFILE IF NOT EXIST %1 GOTO COPYMISS COPY %1 %2 >NUL GOTO COPYRET :COPYMISS ECHO WARNING: %1 not found SET /A ERRCNT=%ERRCNT%+1 :COPYRET GOTO :EOF REM ============================================================ REM Error: source not found REM ============================================================ :NOSRC ECHO. ECHO ERROR: Cannot find Windows 3.1 installation at %SRCWIN% ECHO WIN.COM not found in source directory. GOTO END REM ============================================================ REM Usage information REM ============================================================ :USAGE ECHO. ECHO MINWIN - Minimal Windows 3.1 Installation Builder ECHO. ECHO Usage: MINWIN source target app ECHO. ECHO source Path to a full Windows 3.1 installation ECHO target Destination for the minimal installation ECHO app Application EXE filename (becomes the shell) ECHO. ECHO Example: MINWIN C:\WINDOWS D:\MINWIN MYAPP.EXE ECHO. ECHO The application is set as the Windows shell, replacing ECHO Program Manager. No other accessories are included. ECHO. ECHO Optional DLLs (uncomment in batch file if needed): ECHO COMMDLG.DLL - File Open/Save/Print dialogs ECHO VER.DLL - Version information API ECHO LZEXPAND.DLL - File decompression ECHO TOOLHELP.DLL - Tool helper library ECHO OLECLI.DLL - OLE client support ECHO OLESVR.DLL - OLE server support GOTO END REM ============================================================ :END SET SRCWIN= SET SRCDIR= SET TGTWIN= SET TGTDIR= SET APPNAME= SET ERRCNT=