home *** CD-ROM | disk | FTP | other *** search
- CONST cbSymValMax = 512
- CONST MB_OK = 0
- CONST MB_ICONHAND = 16
- CONST MB_TASKMODAL = 8192
- CONST grcUserQuit = 48
- CONST STFERR = 1024
- CONST STFQUIT = 1025
- CONST scmOff = 0
- CONST scmOnIgnore = 1
- CONST scmOnFatal = 2
- CONST grcOkay = 0
- CONST grcNotOkay = 1
- CONST ynrcNo = 0
- CONST ynrcYes = 1
- CONST ynrcErr1 = 2
- CONST ynrcErr2 = 3
- CONST ynrcErr3 = 4
- CONST ynrcErr4 = 5
- CONST ynrcErr5 = 6
- CONST ynrcErr6 = 7
- CONST ynrcErr7 = 8
- CONST ynrcErr8 = 9
- CONST ynrcErr9 = 10
- CONST femExists = 0
- CONST femRead = 1
- CONST femWrite = 2
- CONST femReadWrite = 3
- CONST cmoVital = 1
- CONST cmoCopy = 2
- CONST cmoUndo = 4
- CONST cmoRoot = 8
- CONST cmoDecompress = 16
- CONST cmoTimeStamp = 32
- CONST cmoReadOnly = 64
- CONST cmoBackup = 128
- CONST cmoForce = 256
- CONST cmoRemove = 512
- CONST cmoOverwrite = 1024
- CONST cmoAppend = 2048
- CONST cmoPrepend = 4096
- CONST cmoNone = 0
- CONST cmoAll = 65535
- CONST SM_CXSCREEN = 0
- CONST SM_CYSCREEN = 1
- CONST WF_80x87 = 1024
- CONST WF_CPU186 = 128
- CONST WF_CPU286 = 2
- CONST WF_CPU386 = 4
- CONST WF_CPU486 = 8
- CONST WF_STANDARD = 16
- CONST WF_ENHANCED = 32
-
-
- DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
- DECLARE SUB SetBitmap(szDll$, Bitmap%)
- DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
- DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
- DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
- DECLARE SUB SetTitle (sz$)
- DECLARE SUB ReadInfFile (szFile$)
- DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
- DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
- DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
- DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
- DECLARE FUNCTION FDoDialog LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS INTEGER
- DECLARE SUB UIPop (n%)
- DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
- DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
- DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
- DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
- DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
- DECLARE SUB UIPopAll
- DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
- DECLARE SUB CreateDir (szDir$, cmo%)
- DECLARE FUNCTION FOpenLogFile LIB "mscomstf.dll" (szFile$, fAppend%) AS INTEGER
- DECLARE SUB OpenLogFile (szFile$, fAppend%)
- DECLARE FUNCTION FCloseLogFile LIB "mscomstf.dll" AS INTEGER
- DECLARE FUNCTION FWriteToLogFile LIB "mscomstf.dll" (sz$, fRequire%) AS INTEGER
- DECLARE SUB CloseLogFile
- DECLARE SUB WriteToLogFile (szStr$)
- DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
- DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
- DECLARE SUB CopyFilesInCopyList
- DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
- DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
- DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
- DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
- DECLARE FUNCTION GetWindowsDir AS STRING
- DECLARE FUNCTION GetWindowsSysDir AS STRING
- DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
- DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
- DECLARE FUNCTION CbGetIniKeyString LIB "msdetstf.dll" (szFile$, szSect$, szKey$, szBuf$, cbBuf%) AS INTEGER
- DECLARE FUNCTION GetIniKeyString (szFile$, szSect$, szKey$) AS STRING
- DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
- DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
- DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
- DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
- DECLARE SUB InitInstall
-
- CONST WELCOME = 100
- CONST ASKQUIT = 200
- CONST DESTPATH = 300
- CONST EXITFAILURE = 400
- CONST EXITQUIT = 600
- CONST EXITSUCCESS = 700
- CONST OPTIONS = 800
- CONST APPHELP = 900
- CONST BADPATH = 6400
-
- CONST LOGO = 1
-
- GLOBAL DEST$
-
- DECLARE SUB Install
- DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
-
- GLOBAL hSetup AS INTEGER
- GLOBAL fFrameInit AS INTEGER
- GLOBAL fInstallInit AS INTEGER
-
- TRAP CleanupTrap From "MSSHLSTF.DLL"
-
- End Trap
-
- hSetup = InitSetup(COMMAND$)
-
- ON ERROR GOTO QUIT
-
- INIT:
- CUIDLL$ = "mscuistf.dll"
- HELPPROC$ = "FHelpDlgProc"
-
- SetBitmap CUIDLL$, LOGO
- SetTitle "Help in a Dos Box Setup"
-
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "DOSHELP.INF"
- END IF
- ReadInfFile szInf$
-
- DEST$ = "C:\DOSHELP"
-
- WELCOME:
- sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSE
- GOSUB ASKQUIT
- GOTO WELCOME
- END IF
-
- GETPATH:
- SetSymbolValue "EditTextIn", DEST$
- SetSymbolValue "EditFocus", "END"
- GETPATHL1:
- sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
- DEST$ = GetSymbolValue("EditTextOut")
-
- IF sz$ = "CONTINUE" THEN
- IF IsDirWritable(DEST$) = 0 THEN
- GOSUB BADPATH
- GOTO GETPATHL1
- END IF
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO GETPATHL1
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO WELCOME
- ELSE
- GOSUB ASKQUIT
- GOTO GETPATH
- END IF
-
-
- Install
- ON ERROR GOTO JMPRDME
- RUN "Write.exe " + MakePath(DEST$, "README.WRI"), NOWAIT
- GOTO QUIT
-
- JMPRDME:
- ERR=0
-
- QUIT:
- ON ERROR GOTO ERRQUIT
-
- IF ERR = 0 THEN
- dlg% = EXITSUCCESS
- ELSEIF ERR = STFQUIT THEN
- dlg% = EXITQUIT
- ELSE
- dlg% = EXITFAILURE
- END IF
- QUITL1:
- sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO QUITL1
- END IF
- UIPop 1
- END
-
- ERRQUIT:
- i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
- END
-
- BADPATH:
- sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO BADPATH
- END IF
- UIPop 1
- RETURN
-
- ASKQUIT:
- sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
-
- IF sz$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO ASKQUIT
- ELSE
- UIPop 1
- END IF
- RETURN
-
-
- SUB Install STATIC
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- CreateDir DEST$, cmoNone
-
- OpenLogFile MakePath(DEST$, "SETUPLOG.TXT"), 0
- WriteToLogFile ""
- WriteToLogFile "Help in a Dos Box Set Up Log"
- WriteToLogFile ""
- WriteToLogFile ""
- WriteToLogFile " User chose as destination directory: '" + DEST$ + "'"
- WriteToLogFile ""
-
- AddSectionFilesToCopyList "Files", SrcDir$, DEST$
- CopyFilesInCopyList
- WriteToLogFile ""
- WriteToLogFile ""
- WriteToLogFile "This DOSHELP.INI setting is to set the initial setting of Help in a Dos Box to On"
- CreateIniKeyValue MakePath(GetWindowsDir, "DOSHELP.INI"), "Settings", "Switch", "On", cmoOverwrite
- WriteToLogFile ""
- WriteToLogFile ""
- WriteToLogFile "The next two DOSHELP.INI settings are to enable Help in a Dos Box to find its two help files."
- WriteToLogFile " Default Help File is the file used when no Help Link specified"
- CreateIniKeyValue MakePath(GetWindowsDir, "DOSHELP.INI"), "Settings", "Default Help File", "GLOSSARY.HLP", cmoOverwrite
- WriteToLogFile ""
- WriteToLogFile " Online Help is Help in a Dos Box's own help file (accessed in Control Panel)"
- CreateIniKeyValue MakePath(GetWindowsDir, "DOSHELP.INI"), "Settings", "Online Help", MakePath(DEST$, "DOSHELP.HLP"), cmoOverwrite
- WriteToLogFile ""
- WriteToLogFile ""
- WriteToLogFile "The last DOSHELP.INI setting just gets the ball rolling on the Help Links with the obvious one."
- CreateIniKeyValue MakePath(GetWindowsDir, "DOSHELP.INI"), "Help Files", "MS-DOS Prompt", "GLOSSARY.HLP", cmoAppend
- WriteToLogFile " (This is somewhat redundant since if this links MS-DOS Prompt with the default help file)"
- WriteToLogFile ""
- WriteToLogFile ""
- WriteToLogFile "This CONTROL.INI setting enables Help in a Dos Box to be loaded as a Control Panel Applet"
- CreateIniKeyValue MakePath(GetWindowsDir, "CONTROL.INI"), "MMCPL", "Help in a Dos Box", MakePath(DEST$, "DOSHELP.DLL"), cmoOverwrite
- WriteToLogFile " {This line should be removed from CONTROL.INI if removing Help in a Dos Box from your system}"
- WriteToLogFile ""
- WriteToLogFile ""
-
- LOAD$ = GetIniKeyString(MakePath(GetWindowsDir, "WIN.INI"),"windows", "load")
- nPos = INSTR(LOAD$, "LDOSHELP.EXE")
- IF nPos <> 0 THEN
- nCnt = nPos
- WHILE ((nCnt>1)*(MID$(LOAD$, nCnt,1)<>" "))
- nCnt=nCnt-1
- WEND
- IF nCnt<2 THEN
- LOAD$=MID$(LOAD$, nPos+13)
- ELSE
- LOAD$ = MID$(LOAD$,1,nCnt)+MID$(LOAD$, nPos+13)
- ENDIF
- ENDIF
-
- WriteToLogFile "This WIN.INI setting causes LDOSHELP.EXE to be run when Windows starts."
- WriteToLogFile " (If the Help in a Dos Box setting (in DOSHELP.INI) is On, LDOSHELP.EXE initialises the Help in a Dos Box DLL.)"
- CreateIniKeyValue MakePath(GetWindowsDir, "WIN.INI"), "windows", "load", MakePath(DEST$, "LDOSHELP.EXE") + " " + LOAD$, cmoOverwrite
- WriteToLogFile " {The instruction to load LDOSHELP.EXE should be removed from this line in WIN.INI"
- WriteToLogFile " if removing Help in a Dos Box from your system}"
-
- WriteToLogFile ""
- WriteToLogFile ""
- WriteToLogFile "Set Up Complete"
- CloseLogFile
-
- RUN MakePath(DEST$, "LDOSHELP.EXE")
- END SUB
-
-
- FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
- IF szDir$ = "" THEN
- MakePath = szFile$
- ELSEIF szFile$ = "" THEN
- MakePath = szDir$
- ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
- MakePath = szDir$ + szFile$
- ELSE
- MakePath = szDir$ + "\" + szFile$
- END IF
- END FUNCTION
-
- SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
- IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- FUNCTION GetWindowsSysDir STATIC AS STRING
- szBuf$ = string$(256, 32)
- cbBuf% = GetSystemDirectory(szBuf$, 256)
-
- IF cbBuf% = 0 THEN
- ERROR STFERR
- ELSE
- IF cbBuf% > 255 THEN
- res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
- ERROR STFERR
- END IF
- szBuf$ = RTRIM$(szBuf$)
- IF MID$(szBuf$, 1, 1) = "\" THEN
- szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
- ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
- szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
- END IF
- IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
- szBuf$ = szBuf$ + "\"
- END IF
- GetWindowsSysDir = szBuf$
- END IF
-
- szBuf$ = ""
- END FUNCTION
-
- FUNCTION GetWindowsDir STATIC AS STRING
- szBuf$ = string$(256, 32)
- cbBuf% = GetWindowsDirectory(szBuf$, 256)
-
- IF cbBuf% = 0 THEN
- GetWindowsDir = ""
- ERROR STFERR
- ELSE
- IF cbBuf% > 255 THEN
- res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
- ERROR STFERR
- END IF
- szBuf$ = RTRIM$(szBuf$)
- IF MID$(szBuf$, 1, 1) = "\" THEN
- 'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
- szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
- ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
- szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
- END IF
- IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
- szBuf$ = szBuf$ + "\"
- END IF
- GetWindowsDir = szBuf$
- END IF
-
- szBuf$ = ""
- END FUNCTION
-
- SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
- IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- SUB CopyFilesInCopyList STATIC
- grc% = GrcCopyFilesInCopyList (HinstFrame())
-
- IF grc% = grcUserQuit THEN
- ERROR STFQUIT
- ELSEIF grc% > 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- SUB CloseLogFile STATIC
- IF FCloseLogFile() = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- SUB WriteToLogFile (szStr$) STATIC
- IF FWriteToLogFile(szStr$, 1) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- SUB OpenLogFile (szFile$, fAppend%) STATIC
- IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- SUB CreateDir (szDir$, cmo%) STATIC
- IF FCreateDir(szDir$, cmo%) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- SUB UIPop (n%) STATIC
- IF FKillNDialogs(n%) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- SUB UIPopAll STATIC
- IF FKillNDialogs(65535) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
- IsDirWritable = FIsDirWritable(szDir$)
- END FUNCTION
-
- SUB SetSymbolValue(szSymbol$, szValue$) STATIC
- IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
- IF FDoDialog(HwndFrame(), szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) = 0 THEN
- ERROR STFERR
- ELSE
- UIStartDlg = GetSymbolValue("DLGEVENT")
- END IF
- END FUNCTION
-
- SUB SetBitmap(szDll$, Bitmap%) STATIC
- IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- SUB ReadInfFile (szFile$) STATIC
- IF FOpenInf(szFile$, 1, 0) = 0 THEN
- ERROR STFERR
- END IF
- END SUB
-
- SUB SetTitle(sz$) STATIC
- SetWindowText HwndFrame(), sz$
- END SUB
-
- FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
- szValue$ = string$(cbSymValMax,32)
- Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
- GetSymbolValue = szValue$
- IF Length% >= cbSymValMax THEN
- res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
- ERROR STFERR
- END IF
- IF szSymbol$ = "" THEN
- ERROR STFERR
- END IF
- szValue$ = ""
- END FUNCTION
-
- FUNCTION GetIniKeyString (szFile$, szSect$, szKey$) STATIC AS STRING
- cb% = 512
- szBuf$ = STRING$(cb%, 32)
- cbRet% = CbGetIniKeyString(szFile$, szSect$, szKey$, szBuf$, cb%)
- GetIniKeyString = szBuf$
- END FUNCTION
-
- FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
- fFrameInit = 0
- fInstallInit = 0
-
- i% = InitFrame(szCmdLine$)
- fFrameInit = 1
-
- InitInstall
- fInstallInit = 1
-
- InitSetup = i%
- END FUNCTION
-
- FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
- IF hSetup > 0 THEN
- ELSE
- i% = InitializeFrame(szCmdLine$)
- IF i% = -1 THEN
- END '' NOT an error - Usage (/?) or Command line copy operation
- ELSEIF i% = 0 THEN
- END
- ELSE
- InitFrame = i%
- END IF
- END IF
- END FUNCTION
-
- SUB InitInstall STATIC
- IF hSetup > 0 THEN
- ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
- END
- END IF
- END SUB
-