MinWin/MINWIN.BAT
2026-02-23 20:32:19 -06:00

242 lines
8.7 KiB
Batchfile

@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 <source> <target> <app>
REM <source> Path to a full Windows 3.1 installation
REM <target> Destination for the minimal installation
REM <app> 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: <target>\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=