home *** CD-ROM | disk | FTP | other *** search
- '$INCLUDE 'setupapi.inc'
- '$INCLUDE 'msdetect.inc'
-
-
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- ''
- '' Constants:
- ''
- ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-
- '' Dialog IDs
- CONST WELCOME = 100
- CONST OPTHELP = 150
- CONST ASKQUIT = 200
- CONST DIRHELP = 250
- CONST DESTPATH = 300
- CONST EXITFAILURE = 400
- CONST EXITQUIT = 600
- CONST EXITSUCCESS = 700
- CONST OPTIONS = 800
- CONST APPHELP = 900
- CONST BADPATH = 6400
-
- ''Bitmap ID
- CONST LOGO = 1
-
- '' MessageBox constants
- CONST MB_ABORTRETRYIGNORE = 2
- CONST MB_YESNO = 4
- CONST MB_RETRYCANCEL = 5
- CONST MB_ICONQUESTION = 32
- CONST MB_ICONEXCLAMATION = 48
- CONST IDRETRY = 4
- CONST IDCANCEL = 2
- CONST IDIGNORE = 5
- CONST IDYES = 6
- CONST IDNO = 7
-
- '' Show Window constants
- CONST SW_SHOWMAXIMIZED = 3
-
- DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
- DECLARE FUNCTION SzDiskError (cbNeeded, szDrive$) AS STRING
- DECLARE SUB SetConfigNumFiles (cfiles%)
-
- DECLARE FUNCTION ShowWindow LIB "user" (hWnd%, style%) AS INTEGER
-
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- ''
- '' START MAIN
- ''
- ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-
- START:
- CUIDLL$ = "mscuistf.dll"
- szHWA$ = "ON"
-
- SetTitle "Help Writer's Assistant for Windows Setup"
- SetBitmap CUIDLL$, LOGO
-
- hwnd% = HwndFrame() '' window handle
- ''ShowWindow hwnd%, 3
-
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "HWAWINS.INF"
- ENDIF
-
- ReadInfFile szInf$
- szInf$ = ""
-
- 'Find Windows version
- IF GetWindowsMajorVersion() > 3 OR GetWindowsMinorVersion() > 9 THEN
- f30% = 0
- ELSE
- iT% =DoMsgBox("HWA/w requires Windows 3.1 or later", "HWA/w Setup", MB_RETRYCANCEL + MB_ICONEXCLAMATION)
- ERROR STFQUIT
- END IF
-
- WELCOME:
- sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, "FHelpDlgProc")
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSE
- GOSUB ASKQUIT
- GOTO WELCOME
- END IF
-
- GETHWAWDIR:
- SetSymbolValue "EditFocus", "ALL"
-
- SetSymbolValue "EditTextIn", "C:\HWAWIN"
-
- GETHWAWDIRL1:
- sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", DIRHELP, "FHelpDlgProc")
- szHWADir$ = GetSymbolValue("EditTextOut")
-
- IF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO GETHWAWDIR
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO WELCOME
- ELSEIF sz$ <> "CONTINUE" THEN
- GOTO GETHWAWDIRL1
- ENDIF
-
- IF IsDirWritable(szHWADir$) = 0 THEN
- iMB% = DoMsgBox( "The path you entered is not a valid pathname.", "HWA/w Setup", MB_RETRYCANCEL + MB_ICONEXCLAMATION )
- IF iMB% = IDRETRY THEN
- GOTO GETHWAWDIR
- ELSE
- UIPop 1
- ERROR STFQUIT
- END IF
- END IF
-
- UIPop 1
-
- INSTALL:
- szSrcDir$ = GetSymbolValue("STF_SRCDIR")
- szWinDir$ = GetWindowsDir
- szSystemDir$ = GetWindowsSysDir
- IF szSystemDir$ = "" THEN
- szSystemDir$ = GetWindowsDir
- END IF
-
- IF szHWA$ = "ON" THEN
- AddSectionFilesToCopyList "hwawin", szSrcDir$, szHWADir$
- AddSectionFilesToCopyList "hwawin dlls", szSrcDir$, szSystemDir
- AddSectionFilesToCopyList "hwasamp", szSrcDir$, szHWADir$
- AddSectionFilesToCopyList "tutorial", szSrcDir$, szHWADir$
- END IF
-
- ' Check for disk space, and do not proceed until there is enough.
- WHILE GetCopyListCost("", "", "needed") > 0
- iDrive = 1
- szNeeded$ = GetListItem("needed", iDrive)
- WHILE Val(szNeeded$) <= 0
- iDrive = iDrive + 1
- szNeeded$ = GetListItem("needed", iDrive)
- WEND
- iMB% = DoMsgBox(SzDiskError(Val(szNeeded$), Chr$(Asc("A") + iDrive - 1)), "HWA/w Setup", MB_RETRYCANCEL + MB_ICONEXCLAMATION )
- IF iMB% = IDCANCEL THEN
- ERROR STFQUIT
- END IF
- WEND
-
- ' Copy all files
- 'SetRestartDir szWinDir$
- t% = SetSizeCheckMode( scmOff )
- CopyFilesInCopyList
-
- ' Advise that FILES= should be at least 50
- IF szHWA$ = "ON" THEN
- IF GetConfigNumFiles() < 50 THEN
- szMessage1$ = "For best results, we recommend that the number of open files allowed by CONFIG.SYS be at least 50. "
- szMessage2$ = "Would you like for us to change this for you?"
- iMB% = DoMsgBox(szMessage1$ + szMessage2$, "HWA/w Setup" , MB_YESNO + MB_ICONQUESTION )
- szMessage1$ = ""
- szMessage2$ = ""
- IF iMB% = IDYES THEN
- ON ERROR GOTO RESUMENEXT
- SetConfigNumFiles(50)
- ON ERROR GOTO 0
- ' Should we tell them to reboot?
- END IF
- END IF
- END IF
-
- ' Create Progman group and icons
-
- CreateProgmanGroup "HWA/w", "", 0
- ShowProgmanGroup "HWA/w", 1, 0
-
- IF szHWA$ = "ON" THEN
- szHWAFile$ = MakePath (szHWADir$, "hwawin.exe")
- CreateProgmanItem "HWA/w", "Help Writer's Assistant for Windows", szHWAFile$, ",1", 0
- CreateProgmanItem "HWA/w", "HWA/w Readme", "notepad.exe " + MakePath(szHWADir$, "readme.txt"), "", 0
- END IF
-
- IF szHWA$ = "ON" THEN
- RemoveIniKey "WIN.INI", "Extensions", "rtf", 0
- CreateIniKeyValue "WIN.INI", "Extensions", "rtf", szHWAFile$ + " ^.rtf", 0
- END IF
-
- IF RestartListEmpty() = 0 THEN
- IF GetWindowsMajorVersion() > 3 OR GetWindowsMinorVersion() > 9 THEN
- ' Setup successful, but Windows must be restarted
- sz$ = UIStartDlg(CUIDLL$, EXITRESTART, "FInfo0DlgProc", 0,"")
- UIPopAll
- i% = ExitExecRestart()
- ELSE
- ' User must run c:\_mssetup.bat to complete setup
- sz$ = UIStartDlg(CUIDLL$, EXITRUNBATCH,"FInfo0DlgProc", 0,"")
- UIPopAll
- END IF
- END
- END IF
-
- QUIT:
- IF Err = 0 THEN
- Dlg% = EXITSUCCESS
- ELSEIF Err = STFQUIT THEN
- Dlg% = EXITQUIT
- ELSE
- Dlg% = EXITFAILURE
- ENDIF
-
- sz$ = UIStartDlg(CUIDLL$, Dlg%, "FInfo0DlgProc", 0, "")
- UIPopAll
-
- END
-
- RESUMENEXT:
- RESUME NEXT
-
- ASKQUIT:
- ui$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
-
- IF ui$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF ui$ = "REACTIVATE" THEN
- GOTO ASKQUIT
- ELSE
- UIPop 1
- END IF
- RETURN
-
-
-
- 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
-
-
- FUNCTION SzDiskError (cbNeeded, szDrive$) STATIC AS STRING
-
- szT$ = "You do not have enough disk space to install the selected items. You need "
- cbNeeded = (cbNeeded + 999)/1000
- szT$ = szT$ + Str$(cbNeeded) + "K more space on your " + szDrive$ + ": drive."
-
- SzDiskError = szT$
- szT$ = ""
-
- END FUNCTION
-
-
- SUB SetConfigNumFiles (cfiles%) STATIC
-
- OPEN "C:\CONFIG.SYS" FOR INPUT AS #1
- OPEN "C:\HWAWIN.~TM" FOR OUTPUT AS #2
- WHILE EOF(1) <> -1
- INPUT #1, szInput$
- szInput$ = LTRIM$(szInput$)
- IF MID$(UCASE$(szInput$), 1, 5) = "FILES" THEN
- PRINT #2, "FILES = "; cfiles%
- ELSE
- PRINT #2, szInput$
- ENDIF
- WEND
- CLOSE #1
- CLOSE #2
-
- OPEN "C:\HWAWIN.~TM" FOR INPUT AS #1
- OPEN "C:\CONFIG.SYS" FOR OUTPUT AS #2
- WHILE EOF(1) <> -1
- INPUT #1, szInput$
- PRINT #2, szInput$
- WEND
- CLOSE #1
- CLOSE #2
-
- KILL "C:\HWAWIN.~TM"
-
- END SUB
-