home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
VRML Tools for 3D Cyberspace
/
VRML_Tools_For_3D_Cyberspace.iso
/
virtus
/
vwtvrml.ms_
/
vwtvrml.bin
Wrap
Text File
|
1996-07-01
|
10KB
|
436 lines
'**************************************************************************
'* Virtus WalkThrough Pro Setup
'*
'* Lovingly hand-crafted
'* and polished by John Alspaugh
'* Copyright 1993-1994 Virtus Corporation. All Rights Reserved.
'*
'**************************************************************************
'''''$DEFINE DEBUG ''Define for script development/debugging
''Bitmap ID
CONST LOGO = 1
''File Types
GLOBAL RADIOBUTTON$ ''Option selection from OptFiles1 option dialog.
GLOBAL PROGGROUP$ 'Name of the program manager group
GLOBAL ENORMOUS% ''too big -- true or false? (1 or 0)
''Dialog list symbol names
GLOBAL CHECKSTATES$
GLOBAL STATUSTEXT$
GLOBAL DRIVETEXT$
GLOBAL ERRORDLG%
''Potential error code for the magic exit
GLOBAL POTENTIALERROR%
'' includes must be in this order!
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
'$INCLUDE 'vutility.inc' '' handy utility routines
'$INCLUDE 'prolocal.inc' '' the local definitions we use
'$INCLUDE 'vsupport.inc' '' our more general routines (requires vlocal.inc)
'$ifdef PROGRAM
''Dialog ID's
CONST WELCOME_DLG = 100
CONST BILLBOARD0 = 110
CONST BILLBOARD1 = 111
CONST BILLBOARD2 = 112
CONST BILLBOARD3 = 113
CONST BILLBOARD4 = 114
CONST BILLBOARD5 = 115
CONST ASKQUIT_DLG = 200
CONST DESTPATH_DLG = 300
CONST EXITFAILURE_DLG = 400
CONST EBADSERIAL_DLG = 401
CONST ENOINSTALL_DLG = 402
CONST CORRUPT_FILES_DLG = 412
CONST EXITQUIT_DLG = 600
CONST EXITSUCCESS_DLG = 700 '' ok, and you should restart (but you don't have to)
CONST EXITSUCCESSBYE_DLG= 701 '' ok, and you will now restart
CONST WELCOMEHELP_DLG = 900
CONST CUSTINSTHELP_DLG = 901
CONST PATHHELP_DLG = 902
CONST PERSONALHELP_DLG = 903
CONST INSTALLHELP_DLG = 904
CONST INSTALL_DLG = 6100
CONST CUSTINST_DLG = 6200
CONST TOOBIG_DLG = 6300
CONST BADPATH_DLG = 6400
CONST PERSONALIZE_DLG = 7500
'$ELSE IF LIBRARY
CONST WELCOME_DLG = 150
CONST ASKQUIT_DLG = 250
CONST DESTPATH_DLG = 350
CONST NO_WIN_3_1_DLG = 410
CONST WRONG_CPU_DLG = 411
CONST CORRUPT_FILES_DLG = 412
CONST EXITFAILURE_DLG = 450
CONST EXITQUIT_DLG = 650
CONST EXITSUCCESS_DLG = 750
CONST WELCOMEHELP_DLG = 950
CONST PATHHELP_DLG = 952
CONST TOOBIG_DLG = 6350
CONST NOVRDIR_DLG = 6351
CONST LOOKFORFILE_DLG = 6352
CONST BADPATH_DLG = 6400
'$endif
INIT:
CUIDLL$ = "mscuistf.dll" 'Custom user interface dll
HELPPROC$ = "FHelpDlgProc" 'Help dialog procedure
POTENTIALERROR% = 0
VL_Initialize '' init all the local vars
VL_InitDiskCosts '' init the disk cost stuff
VL_InitDirNames '' init the directory naming stuff
VL_InitReadmeFileNames
VMaximizeFrame
SetBitmap CUIDLL$, LOGO
SetTitle PRODUCTNAME$
'' test that the system is up to our requirements. If not, Bye!
sysOk% = VIsSystemAdequate()
IF sysOk% = 0 THEN
GOTO ENDITALL '' byeeee!
END IF
'' load INF file
szInf$ = GetSymbolValue("STF_SRCINFPATH")
IF szInf$ = "" THEN
szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILENAME$
END IF
ReadInfFile szInf$
''CustInst list symbols
CHECKSTATES$ = "CheckItemsState"
STATUSTEXT$ = "StatusItemsText"
DRIVETEXT$ = "DriveStatusText"
FOR i% = 1 TO N_CHECKBOXES STEP 1
AddListItem CHECKSTATES$, "ON"
NEXT i%
FOR i% = 1 TO N_CHECKBOXES STEP 1
AddListItem STATUSTEXT$, ""
NEXT i%
FOR i% = 1 TO 7 STEP 1 '' there are 7 items in DriveStatusText. Always.
AddListItem DRIVETEXT$, ""
NEXT i%
ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
ENORMOUS% = 0
RADIOBUTTON$ = "1"
VL_RecalcPath
'$IFDEF DEBUG
i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
'$ENDIF 'DEBUG
WELCOME:
sz$ = UIStartDlg(CUIDLL$, WELCOME_DLG, "FInfoDlgProc", WELCOMEHELP_DLG, HELPPROC$)
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOSUB ASKQUIT
GOTO WELCOME
END IF
'$IFDEF OPTION
ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
IF ENORMOUS% <> 0 THEN
RADIOBUTTON$ = "2"
GOTO CUSTINST
END IF
INSTALLOPT:
SetSymbolValue "RadioDefault", RADIOBUTTON$ '' set the button
sz$ = UIStartDlg(CUIDLL$, INSTALL_DLG, "FRadioDlgProc", INSTALLHELP_DLG, HELPPROC$)
RADIOBUTTON$ = GetSymbolValue("ButtonChecked")
ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
IF sz$ = "CONTINUE" THEN
UIPop 1
IF RADIOBUTTON$ = "1" THEN
GOSUB GETPATH
GOTO INSTALL
ELSE
GOTO CUSTINST
END IF
ELSEIF sz$ = "REACTIVATE" THEN
GOTO INSTALLOPT
ELSEIF sz$ = "EXIT" THEN
GOSUB ASKQUIT
GOTO INSTALLOPT
ELSE
UIPop 1
GOTO CUSTINST
END IF
CUSTINST:
''Start up the custom installation dialog box
sz$ = UIStartDlg(CUIDLL$, CUSTINST_DLG, "FCustInstDlgProc", CUSTINSTHELP_DLG, HELPPROC$)
i% = VL_DoCheckItems(sz$)
IF i% = 1 THEN
ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
GOTO CUSTINST
END IF
IF sz$ = "CONTINUE" THEN
''Install only if it will fit.
IF ENORMOUS% <> 0 THEN
GOSUB TOOBIG
GOTO CUSTINST
ENDIF
UIPop 1 ''Kill the dialog box
GOTO INSTALL
ELSEIF sz$ = "PATH" THEN
GOTO GETPATH
ELSEIF sz$ = "REACTIVATE" THEN
VL_RecalcPath
ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
GOTO CUSTINST
ELSEIF sz$ = "BACK" THEN
UIPop 1
GOTO INSTALLOPT
ELSE
GOSUB ASKQUIT
GOTO CUSTINST
END IF
'$ENDIF 'OPTION
GETPATH:
'$IFDEF LIBRARY
i% = VFindExe(EXEFILENAME$, DATAFILEEXT$, DESTDIRNAME$)
NOEXE:
IF i% = 0 THEN
DESTDIRNAME$ = WINDRIVE$ + ":\" + DEFDIRNAME$ '' fallback
sz$ = UIStartDlg(CUIDLL$, NOVRDIR_DLG, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO NOEXE
END IF
UIPop 1
END IF
'$ENDIF 'LIBRARY
VL_RecalcPath
SetSymbolValue "EditTextIn", DESTDIRNAME$
SetSymbolValue "EditFocus", "END"
GETPATHL1:
sz$ = UIStartDlg(CUIDLL$, DESTPATH_DLG, "FEditDlgProc", PATHHELP_DLG, HELPPROC$)
IF sz$ = "CONTINUE" THEN
olddest$ = DESTDIRNAME$
DESTDIRNAME$ = GetSymbolValue("EditTextOut")
''Validate new path.
IF IsDirWritable(DESTDIRNAME$) = 0 THEN
GOSUB BADPATH
GOTO GETPATHL1
END IF
UIPop 1
'Truncate display if too long.
IF LEN(DEST$) > 23 THEN
ReplaceListItem DRIVETEXT$, 7, MID$(DESTDIRNAME$, 1, 23)+"..."
ELSE
ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
END IF
''Recalc if path changed.
IF (olddest$ <> DESTDIRNAME$) AND (olddest$ <> DESTDIRNAME$+"\") AND (olddest$+"\" <> DESTDIRNAME$) THEN
VL_RecalcPath
ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
END IF
olddest$ = ""
'$IFDEF OPTION
IF RADIOBUTTON$ = "1" THEN '' this is the quicky option, right?
'' check that the new path does not make us need too much disk space
IF ENORMOUS% <> 0 THEN
GOSUB TOOBIG '' not enough disk space
RADIOBUTTON$ = "2"
GOTO CUSTINST '' custom install necessary.
END IF
ELSE
GOTO CUSTINST '' return to the custom install
END IF
'$ELSE
IF ENORMOUS% <> 0 THEN
GOSUB TOOBIG '' not enough disk space
GOTO GETPATHL1 '' try again
END IF
'$ENDIF '' OPTION
GOTO INSTALL
ELSEIF sz$ = "REACTIVATE" THEN
'' VL_RecalcPath
'' ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
GOTO GETPATHL1
ELSEIF sz$ = "EXIT" THEN
GOSUB ASKQUIT
GOTO GETPATHL1
ELSEIF sz$ = "BACK" THEN
UIPop 1
'$IFDEF OPTION
IF (RADIOBUTTON$ = "1") AND (ENORMOUS% = 0) THEN
GOTO INSTALLOPT
ELSE
GOTO CUSTINST
END IF
'$ELSE
GOTO WELCOME
'$ENDIF '' OPTION
ELSE
GOTO GETPATHL1
END IF
INSTALL:
VL_DoTheInstall
'$IFDEF PROGRAM
IF VL_ShouldWeSerialize() = 1 THEN
GOSUB SERIALIZE
END IF
'$ENDIF 'PROGRAM
VL_MakeTheAppIcons
VL_MakeTheReadmeIcons
QUIT:
ON ERROR GOTO ERRQUIT
IF ERR = 0 THEN
Restart% = RestartListEmpty()
IF Restart% = 0 THEN
ERRORDLG% = EXITSUCCESSBYE_DLG
ELSE
ERRORDLG% = EXITSUCCESS_DLG
END IF
ELSEIF ERR = STFQUIT THEN
ERRORDLG% = EXITQUIT_DLG
ELSEIF ERR = ENOINSTALL THEN
ERRORDLG% = ENOINSTALL_DLG
ELSE
ERRORDLG% = EXITFAILURE_DLG
END IF
QUITL1:
sz$ = UIStartDlg(CUIDLL$, ERRORDLG%, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO QUITL1
END IF
UIPop 1
IF ERR = 0 THEN
VL_ShowIconsOkay
END IF
GOTO ENDITALL
ERRQUIT:
sz$ = UIStartDlg(CUIDLL$, CORRUPT_FILES_DLG, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO ERRQUIT
END IF
UIPop 1
GOTO ENDITALL
ENDITALL:
END ''That's all, folks!
TOOBIG:
sz$ = UIStartDlg(CUIDLL$, TOOBIG_DLG, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
VL_RecalcPath
ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
GOTO TOOBIG
END IF
UIPop 1
RETURN
BADPATH:
sz$ = UIStartDlg(CUIDLL$, BADPATH_DLG, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
VL_RecalcPath
ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
GOTO BADPATH
END IF
UIPop 1
RETURN
ASKQUIT:
sz$ = UIStartDlg(CUIDLL$, ASKQUIT_DLG, "FQuitDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPopAll
ERROR STFQUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO ASKQUIT
ELSE
UIPop 1
END IF
RETURN
SERIALIZE:
SetSymbolValue "ProgramLocation", VMakePath(DESTDIRNAME$,EXEFILENAME$)
'$ifdef SERIAL
sz$ = UIStartDlg(CUIDLL$, PERSONALIZE_DLG, "FInitDlgProc", PERSONALHELP_DLG, HELPPROC$)
IF sz$ = "EXIT" THEN
POTENTIALERROR% = EBADSERIAL
GOSUB ASKQUIT
POTENTIALERROR% = 0
GOTO SERIALIZE
ELSEIF sz$ = "REACTIVATE" THEN
GOTO SERIALIZE
ELSEIF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
POTENTIALERROR% = EBADSERIAL
ERROR EBADSERIAL
END IF
'$ENDIF 'SERIAL
RETURN