242 lines
8.7 KiB
Batchfile
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=
|