home *** CD-ROM | disk | FTP | other *** search
Wrap
'************************************************************************** '* Sampler Setup '************************************************************************** '$DEFINE DEBUG ''Define for script development/debugging '$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' '' '$INCLUDE 'msshared.inc' '' OPTION EXPLICIT DECLARE FUNCTION FIsVGA LIB "mscuistf.dll" AS INTEGER DECLARE FUNCTION FIs256Colour LIB "mscuistf.dll" AS INTEGER ''Dialog ID's CONST WELCOME = 100 CONST CUSTOMHELP = 106 CONST SPEED = 111 CONST BILLBOARD = 113 CONST ASKQUIT = 200 CONST DESTPATH = 300 CONST EXITFAILURE = 400 CONST EXITQUIT = 600 CONST EXITSUCCESS = 700 CONST OPTIONS = 800 CONST APPHELP = 900 CONST DONENEWSYSSOFT = 1100 CONST MAILMAN = 1500 CONST DONENOSYSSOFT = 1800 CONST NEWSYSTEMSOFTWARE = 2300 CONST NEWADPCM = 2600 CONST WARNNOSYSSOFT = 3100 CONST PROGMANGRP = 3742 CONST CUSTOM = 6200 CONST NOSPACE = 6300 CONST BADPATH = 6400 CONST NEED31 = 6401 CONST NOMOUSE = 6402 CONST BADVGA = 6403 CONST NOT256 = 6404 CONST POORMACHINE = 6405 CONST AWFULMACHINE = 6406 CONST PATHHELP = 6407 CONST WHIZZHELP = 6408 CONST URKADPCM = 6409 CONST ADPCMHELP = 6410 ''Bitmap ID CONST LOGO = 1 GLOBAL CURSOR% '' Old mouse cursor state GLOBAL DEST$ '' Default destination directory. GLOBAL ProdSrc$, dirCode$, dirSetup$ GLOBAL SysSrc$ GLOBAL SRCDIR$ '' Source Drive GLOBAL FussyUser$ '' "1" for express installation, "2" for custom. GLOBAL MINIMAL$ '' "ON" for minimal installation, "OFF" for normal GLOBAL PROGMAN$ '' "ON" for invoke program manager, "OFF" otherwise GLOBAL CUSTCHECK$ '' the state of all Custom dialogue check boxes GLOBAL PROGGRP$ '' Name of Program Manager Group GLOBAL PRODNAME$ '' Product Name GLOBAL COMPNAME$ '' Company Name GLOBAL WINSYSDIR$ '' Windows System Driver GLOBAL DESTDRIVE$ '' Destination drive GLOBAL WINDRIVE$ '' Windows drive (system directory) GLOBAL WinDir$ '' Windows directory GLOBAL DD% '' Integer DESTDRIVE$ GLOBAL WD% '' Integer WINDRIVE$ GLOBAL SizeReq& '' Total installation size? GLOBAL NEWSYSADPCM$ GLOBAL CrapLng% GLOBAL Junk& GLOBAL CUIDLL$ GLOBAL HELPPROC$ GLOBAL SZINF$ GLOBAL OPTCUR$ GLOBAL I% GLOBAL SZ$, Key$, SrcDrive$, SrcPengeDir$ GLOBAL VerNew$ GLOBAL VerOld$ GLOBAL ADPCMCOPY%, ADPCMINIUPDATED% GLOBAL dlg% GLOBAL INI$ GLOBAL INSTRINI$ '' Fully-qualified path to BODY.INI GLOBAL Count%, RebootMsg%, uLen% GLOBAL OLDNTH&, NEWNTH& GLOBAL OldYear%, NewYear%, OldMonth%, NewMonth%, OldDay%, NewDay% GLOBAL ExeFile$, PengeFile$, IniFile$, Section$, Moi$ DECLARE SUB Install DECLARE FUNCTION IsVersionLater (VersionOld$, VersionNew$) AS INTEGER DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING DECLARE FUNCTION IsDateLater (DateOld$, DateNew$) AS INTEGER '****************************************************************** '** Declare the funcitons in USER.EXE we need to register a '** unique message identifier and needed to post that message '** to the NSETUP.EXE program. See the Windows api documentation '** for additional information on these functions. '****************************************************************** DECLARE FUNCTION PostMessage LIB "user" (hwnd%, msg%, wparam%, lparam&) AS INTEGER DECLARE FUNCTION RegisterWindowMessage LIB "user" (szRebootMessage$) AS INTEGER INIT: Cursor% = ShowWaitCursor () dirCode$ = "SDISKPC" dirSetup$ = "SDISKPC\DKSETUP" CUIDLL$ = "mscuistf.dll" ''Custom user interface dll HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure PRODNAME$ = "Sampler Disc" COMPNAME$ = "DK Multimedia" ExeFile$ = "dkmmsduk.exe" PengeFile$ = "" IniFile$ = "" Section$ = "Sampler" Moi$ = ProdName$ + " Setup" WinSysDir$ = GetWindowsSysDir () WinDir$ = GetWindowsDir () WINDRIVE$ = MID$ (GetWindowsSysDir (), 1, 1) INSTRINI$ = MakePath(GetWindowsDir(),IniFile$) ' For TR4 // Roy 17/6/94 SrcDir$ = GetSymbolValue ("STF_SRCDIR") uLen% = Len (SrcDir$) - Len (dirSetup$) ProdSrc$ = Mid$ (SrcDir$, 1, uLen% - 1) + dirCode$ SysSrc$ = SrcDir$ SetAbout PRODNAME$, "⌐ 1994 " + COMPNAME$ CrapLng% = SetBeepingMode (1) SetBitmap CUIDLL$, LOGO SetTitle PRODNAME$ + " Setup" CrapLng% = SetDecompMode (1) szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF" END IF ReadInfFile szInf$ OPTCUR$ = "1" DEST$ = "C:\" MINIMAL$ = "OFF" PROGMAN$ = "ON" ADPCMINIUPDATED% = 0 '*************************************************************** '** Here we go registering the message so we can communicate '** with NSETUP.EXE. '*************************************************************** RebootMsg% = RegisterWindowMessage ("DKSetup") '$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: RestoreCursor (Cursor%) sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$) Cursor% = ShowWaitCursor () IF sz$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO WELCOME END IF TEST31: IF GetWindowsMajorVersion () > 3 THEN GOTO TESTVGA END IF IF GetWindowsMajorVersion () < 3 THEN GOTO GORDONBENNETT END IF IF GetWindowsMinorVersion () >= 10 THEN GOTO TESTVGA END IF GORDONBENNETT: RestoreCursor (Cursor%) sz$ = UIStartDlg (CUIDLL$, NEED31, "FInfoDlgProc", AWFULMACHINE, HELPPROC$) Cursor% = ShowWaitCursor () UIPopAll ERROR STFQUIT TESTVGA: IF GetScreenHeight () >= 480 AND GetScreenWidth () >= 640 THEN GOTO TESTMOUSE ELSE RestoreCursor (Cursor%) sz$ = UIStartDlg (CUIDLL$, BADVGA, "FInfoDlgProc", AWFULMACHINE, HELPPROC$) Cursor% = ShowWaitCursor () IF sz$ = "CONTINUE" THEN UIPop(1) GOTO TESTMOUSE ELSEIF sz$ = "REACTIVATE" THEN GOTO TESTVGA ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO WELCOME ELSE GOSUB ASKQUIT GOTO TESTMOUSE END IF END IF TESTMOUSE: IF HasMouseInstalled() > 0 THEN GOTO TESTCOLOUR ELSE RestoreCursor (Cursor%) sz$ = UIStartDlg (CUIDLL$, NOMOUSE, "FInfoDlgProc", AWFULMACHINE, HELPPROC$) Cursor% = ShowWaitCursor () IF sz$ = "CONTINUE" THEN UIPop(1) GOTO TESTCOLOUR ELSEIF sz$ = "REACTIVATE" THEN GOTO TESTMOUSE ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO WELCOME ELSE GOSUB ASKQUIT GOTO TESTCOLOUR END IF END IF TESTCOLOUR: IF FIs256Colour() > 0 THEN GOTO WHIZZO ELSE RestoreCursor (Cursor%) sz$ = UIStartDlg (CUIDLL$, NOT256, "FInfoDlgProc", POORMACHINE, HELPPROC$) Cursor% = ShowWaitCursor () IF sz$ = "CONTINUE" THEN UIPop(1) GOTO WHIZZO ELSEIF sz$ = "REACTIVATE" THEN GOTO TESTCOLOUR ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO WELCOME ELSE GOSUB ASKQUIT GOTO WHIZZO END IF END IF WHIZZO: RestoreCursor (Cursor%) sz$ = UIStartDlg(CUIDLL$, CUSTOM, "FInfoDlgProc", APPHELP, HELPPROC$) Cursor% = ShowWaitCursor () IF sz$ = "CONTINUE" THEN UIPop(1) ProgMan$ = "ON" GOTO FUSSPOT ELSEIF sz$ = "CANCEL" THEN UIPop(1) ProgMan$ = "OFF" GOTO FUSSPOT ELSEIF sz$ = "REACTIVATE" THEN GOTO WHIZZO ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO WELCOME ELSE GOSUB ASKQUIT GOTO FUSSPOT END IF FUSSPOT: SetCopyGaugePosition -1, 140 Install QUIT: ON ERROR GOTO ERRQUIT IF ERR = 0 THEN dlg% = EXITSUCCESS ELSEIF ERR = STFQUIT THEN dlg% = EXITQUIT GOTO QUITL1 ELSE dlg% = EXITFAILURE GOTO QUITL1 END IF QUITL3: dlg% = DONENEWSYSSOFT RestoreCursor (Cursor%) sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfoDlgProc", 0, "") Cursor% = ShowWaitCursor () IF sz$ = "REACTIVATE" THEN GOTO QUITL3 ELSEIF sz$ = "CONTINUE" THEN RUN "NOTEPAD.EXE" + " " + MakePath(ProdSrc$,"README.TXT"), NOWAIT GOTO QUITL3 ELSEIF sz$ = "BACK" THEN SetRestartDir DEST$ i% = PostMessage (65535, RebootMsg%, 0, 0) END IF UIPop 1 STOP END QUITL1: RestoreCursor (Cursor%) sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") Cursor% = ShowWaitCursor () IF sz$ = "REACTIVATE" THEN GOTO QUITL1 END IF UIPop 1 STOP END ERRQUIT: i% = DoMsgBox("The setup sources were corrupted. You may be able to correct the problem by using SCANDISK to fix your hard disk.", Moi$, MB_OK+MB_TASKMODAL+MB_ICONHAND) END ASKQUIT: RestoreCursor (Cursor%) sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "") Cursor% = ShowWaitCursor () 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") OpenLogFile MakePath(DEST$, "SETUP.LOG"), 0 SrcDrive$ = MID$(SrcDir$, 1, 1) uLen% = LEN (SrcDir$) - Len (dirSetup$) - 1 SrcPengeDir$ = MID$(SrcDir$, 1, uLen%-1) ''ini$ = MakePath(WinDir$, "BODY.INI") // Roy 17/6/94 '' CreateIniKeyValue "WIN.INI", "MSSetup Sample 1", "Option", OPTCUR$, cmoNone ''CreateIniKeyValue ini$, "Directory", "Data", SrcDir$ , cmoNone // Roy 17/6/94 IF PROGMAN$ = "ON" THEN PROGGRP$ = COMPNAME$ WriteToLogFile "" WriteToLogFile "Updating Program Manager." WriteToLogFile "" CreateProgmanGroup PROGGRP$, "", cmoNone ShowProgmanGroup PROGGRP$, 1, cmoNone sz$ = ",,,,"+ProdSrc$ szInf$ = MakePath (ProdSrc$,ExeFile$) CreateProgmanItem PROGGRP$, PRODNAME$, szInf$, sz$, cmoOverwrite CreateProgmanItem PROGGRP$, ProdName$ + " Read Me", "notepad.exe "+MakePath(ProdSrc$,"readme.txt"), "", cmoOverwrite END IF WriteToLogFile "" WriteToLogFile "Installation complete" WriteToLogFile "" CloseLogFile RemoveFile MakePath(DEST$, "SETUP.LOG"), cmoNone END SUB FUNCTION IsVersionLater (VersionOld$, VersionNew$) STATIC AS INTEGER IsVersionLater = 0 FOR Count% = 1 TO 4 OldNth& = GetVersionNthField (VersionOld$, Count%) NewNth& = GetVersionNthField (VersionNew$, Count%) IF OldNth& > NewNth& THEN EXIT FOR END IF IF NewNth& > OldNth& THEN IsVersionLater = 1 EXIT FOR END IF NEXT Count% END FUNCTION '************************************************************************* '** '** IsDateLater '** -------- '** Purpose: '** Compares two file dates '** Arguments: '** DateOld$ in YYYY-MM-DD-HH-MM-SS format '** DateNew$ in YYYY-MM-DD-HH-MM-SS format '** Returns: '** 1 if new date is later, 0 if new date is older or the same '************************************************************************* FUNCTION IsDateLater (DateOld$, DateNew$) STATIC AS INTEGER 'First compare year OldYear% = GetYearFromDate (DateOld$) NewYear% = GetYearFromDate (DateNew$) IF NewYear% < OldYear% THEN IsDateLater = 0 ELSEIF NewYear% = OldYear% THEN 'If year is the same, compare month OldMonth% = GetMonthFromDate (DateOld$) NewMonth% = GetMonthFromDate (DateNew$) IF NewMonth% < OldMonth% THEN IsDateLater = 0 ELSEIF NewMonth% = OldMonth% THEN 'If month is the same, compare day OldDay% = GetDayFromDate (DateOld$) NewDay% = GetDayFromDate (DateNew$) IF NewDay% <= OldDay% THEN IsDateLater = 0 ELSE IsDateLater = 1 END IF ELSE IsDateLater = 1 END IF ELSE IsDateLater = 1 ENDIF END FUNCTION '** '** 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