home *** CD-ROM | disk | FTP | other *** search
Wrap
'************************************************************************** '* MSSetup Toolkit -- Allie's Playhouse Setup '************************************************************************** '$DEFINE DEBUG ''Define for script development/debugging '$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' ''Dialog ID's 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 ''Bitmap ID CONST LOGO = 1 GLOBAL DEST$ ''Default destination directory. GLOBAL OPTCUR$ ''Option selection from option dialog. DECLARE SUB Install DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING INIT: CUIDLL$ = "mscuistf.dll" ''Custom user interface dll HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure SetBitmap CUIDLL$, LOGO SetTitle "Opcode Interactive" szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF" END IF ReadInfFile szInf$ OPTCUR$ = "1" DEST$ = "C:\ALLIE" '$IFDEF DEBUG i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal WinDrive$ = MID$(GetWindowsDir, 1, 1) IF IsDriveValid(WinDrive$) = 0 THEN i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) GOTO QUIT END IF '$ENDIF ''DEBUG WELCOME: sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO WELCOME END IF OPTION: SetSymbolValue "RadioDefault", OPTCUR$ OPTL1: sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$) OPTCUR$ = GetSymbolValue("ButtonChecked") IF sz$ = "CONTINUE" THEN UIPop(1) ELSEIF sz$ = "REACTIVATE" THEN GOTO OPTL1 ELSE GOSUB ASKQUIT GOTO OPTION 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 OPTION ELSE GOSUB ASKQUIT GOTO GETPATH END IF 'Check for avail space drive$ = MID$(DEST$, 1, 1) free& = GetFreeSpaceForDrive(drive$) IF OPTCUR$ = "1" THEN IF free& < 9180276 THEN i% = DoMsgBox("Not enough hard disk free space to install. Please make some room or try the Minimum setup.", "SETUP", MB_TASKMODAL+MB_ICONHAND+MB_OK) GOSUB OPTION END IF ELSEIF OPTCUR$ = "2" THEN IF free& < 1000000 THEN i% = DoMsgBox("Not enough hard disk free space to install. Please make some room and try again.", "SETUP", MB_TASKMODAL+MB_ICONHAND+MB_OK) GOSUB OPTION END IF END IF Install QUIT: ON ERROR GOTO ERRQUIT IF ERR = 0 THEN IF needAnim$ = "yes" THEN i% = DoMsgBox("Please restart Windows to activate the animation driver after Setup is completed.", "SETUP", MB_TASKMODAL+MB_ICONHAND+MB_OK) END IF 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, call 555-1212!", "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 'TOOBIG: ' sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "") ' IF sz$ = "REACTIVATE" THEN ' GOTO TOOBIG ' 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 '** '** Purpose: '** Builds the copy list and performs all installation operations. '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB Install STATIC SrcDir$ = GetSymbolValue("STF_SRCDIR") CreateDir DEST$, cmoNone OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0 WriteToLogFile "" WriteToLogFile " User chose as destination directory: '" + DEST$ + "'" WriteToLogFile " User chose option: '" + OPTCUR$ + "'" WriteToLogFile "" WriteToLogFile "May have had to create the directory: " + DEST$ WriteToLogFile "" ''This detects the MMP drivers and/or installs it WinDir$ = getWindowsDir() sysDir$ = getWindowsSysDir() anim% = DoesIniKeyExist(winDir$ + "system.ini","MCI","Animation") animNum% = 0 IF anim% = 0 THEN CreateIniKeyValue winDir$ + "system.ini","mci","animation", "mcimmp.drv", cmoOverwrite CreateIniKeyValue "win.ini","mci extensions","mmm","animation", cmoOverwrite needAnim$ = "yes" ELSE FOR i% = 1 to 10 STEP 1 LineExist% = DoesIniKeyExist(winDir$ + "system.ini","MCI","Animation"+str$(i%)) IF LineExist% = 1 THEN drv$ = GetIniKeyString(winDir$ + "system.ini","MCI","Animation"+str$(i%)) IF drv$ = "mcimmp.drv" THEN found$ = "true" IF animNum% = 0 THEN animNum% = i% END IF END IF ELSE IF avail$ = "" THEN avail$ = str$(i%) IF animNum% = 0 THEN animNum% = i% END IF END IF END IF NEXT i% IF found$ <> "true" THEN CreateIniKeyValue winDir$ + "system.ini", "mci", "Animation"+avail$, "mcimmp.drv", cmoOverwrite CreateIniKeyValue "win.ini","mci extensions", "mmm","animation"+avail$, cmoOverwrite needAnim$ = "yes" END IF END IF ''make sure the mci extension setting is OK mciExt$ = GetIniKeyString(winDir$ + "win.ini","mci extensions","mmm") IF mciExt$ <> ("animation" + str$(animNum%)) THEN IF animNum% = 0 THEN CreateIniKeyValue winDir$ + "win.ini","mci extensions", "mmm","animation", cmoOverwrite ELSE CreateIniKeyValue winDir$ + "win.ini","mci extensions", "mmm","animation" + str$(animNum%), cmoOverwrite END IF END IF ''IF needAnim$ = "yes" THEN myDllYear% = 1991 myDllMonth% = 9 myDllDay% = 18 myDrvYear% = 1991 myDrvMonth% = 9 myDrvDay% = 19 dllDate$ = getDateOfFile(sysDir$ + "mmp.dll") drvDate$ = getDateOfFile(sysDir$ + "mcimmp.drv") dllYear% = getYearFromDate(dllDate$) dllMonth% = getMonthFromDate(dllDate$) dllDay% = getDayFromDate(dllDate$) drvYear% = getYearFromDate(drvDate$) drvMonth% = getMonthFromDate(drvDate$) drvDay% = getDayFromDate(drvDate$) IF dllYear% < myDllYear% THEN needDllUpdate$ = "yes" ELSEIF dllYear% = myDllYear% THEN IF dllMonth% < myDllMonth% THEN needDllUpdate$ = "yes" ELSEIF dllMonth% = myDllMonth% THEN IF dllDay% < myDllDay% THEN needDllUpdate$ = "yes" END IF END IF END IF IF needDllUpdate$ = "yes" THEN IF f% = 1 THEN backupFile sysDir$ + "mmp.dll", "mmp.old" i% = DoMsgBox("Setup has found an older version of the Microsoft Movie Player DLL in your system. Updated and renamed your old file MMP.OLD", "SETUP", MB_TASKMODAL+MB_ICONEXCLAMATION+MB_OK) END IF copyFile srcDir$ + "mmp.dll", sysDir$ + "mmp.dll", cmoVital, 0 END IF IF drvYear% < myDrvYear% THEN needDrvUpdate$ = "yes" ELSEIF drvYear% = myDrvYear% THEN IF drvMonth% < myDrvMonth% THEN needDrvUpdate$ = "yes" ELSEIF drvMonth% = myDrvMonth% THEN IF drvDay% < myDrvDay% THEN needDrvUpdate$ = "yes" END IF END IF END IF IF needDrvUpdate$ = "yes" THEN f% = DoesFileExist(sysDir$ + "mcimmp.drv",femExits) IF f% = 1 THEN backupFile sysDir$ + "mcimmp.drv", "mcimmp.old" i% = DoMsgBox("Setup has found an older version of the Microsoft Movie driver in your system. Updated and renamed the old driver MCIMMP.OLD", "SETUP", MB_TASKMODAL+MB_ICONEXCLAMATION+MB_OK) END IF copyFile srcDir$ + "mcimmp.drv", sysDir$ + "mcimmp.drv", cmoVital, 0 END IF ''END IF AddSectionFilesToCopyList "Files", SrcDir$, DEST$ AddSectionKeyFileToCopyList "Options", OPTCUR$, SrcDir$, DEST$ CopyFilesInCopyList IF OPTCUR$ = "1" THEN CreateProgmanGroup "Allie's Playhouse", "", cmoNone ShowProgmanGroup "Allie's Playhouse", 1, cmoNone CreateProgmanItem "Allie's Playhouse", "Allie's Playhouse", dest$ + "\tbook.exe " + dest$ + "\playhous.tbk", dest$ + "\playhous.ico", cmoOverwrite CreateProgmanItem "Allie's Playhouse", "Uninstall", SrcDir$ + "tbook.exe " + dest$ + "\uninstal.tbk", dest$ + "\uninstal.ico", cmoOverwrite ELSE CreateProgmanGroup "Allie's Playhouse", "", cmoNone ShowProgmanGroup "Allie's Playhouse", 1, cmoNone CreateProgmanItem "Allie's Playhouse", "Allie's Playhouse", dest$ + "\tbook.exe " + srcDir$ + "playhous.tbk",dest$ + "\playhous.ico", cmoOverwrite CreateProgmanItem "Allie's Playhouse", "uninstall", SrcDir$ + "tbook.exe " + dest$ + "\uninstal.tbk",dest$ + "\uninstal.ico", cmoOverwrite END IF AddDos5Help "YOURAPP", "A brief help text for your Windows application."+chr$(10)+"It can be continued on another line with chr$(10).", cmoNone IF needAnim$ = "yes" THEN i% = DoMsgBox("A new animation driver has been installed in your system. Please restart Windows before starting Allie's Playhouse.", "SETUP", MB_TASKMODAL+MB_ICONEXCLAMATION+MB_OK) END IF CloseLogFile END SUB '** '** Purpose: '** Appends a file name to the end of a directory path, '** inserting a backslash character as needed. '** Arguments: '** szDir$ - full directory path (with optional ending "\") '** szFile$ - filename to append to directory '** Returns: '** Resulting fully qualified path name. '************************************************************************* 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