home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Tool Box
/
SIMS_2.iso
/
vb_prgms
/
hwab40
/
hwawins.ms_
/
hwawins.ms
Wrap
Text File
|
1994-05-26
|
8KB
|
286 lines
'$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