home *** CD-ROM | disk | FTP | other *** search
Wrap
'************************************************************************** '* MSSetup Toolkit Sample 1 '************************************************************************** ''$DEFINE DEBUG ''Define for script development/debugging '$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' PRODUCT$ = "DEMO94" REGKEY_1$ = PRODUCT$ + "UsrName" REGKEY_2$ = PRODUCT$ + "UsrOrg" TITLE$ = "Lernprogramme von PROKODA" DESTDIR$ = PRODUCT$ REGFILE$ = PRODUCT$ + ".rgt" ''Dialog ID's CONST WELCOME = 100 CONST ASKQUIT = 200 CONST DESTPATH = 300 CONST EXITFAILURE = 400 CONST EXITQUIT = 600 CONST EXITSUCCESS = 700 CONST APPHELP = 900 CONST APPHELP_1 = 1100 CONST APPHELP_2 = 1200 CONST BADPATH = 6400 CONST CDCONFIRMINFO = 7300 CONST CDGETNAMEORG = 7500 CONST CDCONFIRMNOSPACE = 8000 ''Bitmap ID CONST LOGO = 1 GLOBAL DEST$ ''Default destination directory. GLOBAL OPTCUR$ ''Option selection from option dialog. GLOBAL USRNAME$ GLOBAL USRORG$ GLOBAL REGORG$ GLOBAL FILENEED$ GLOBAL EXTRACOSTS$ DECLARE SUB Install DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING DECLARE FUNCTION PadSymbol (szString$, size) AS STRING INIT: CUIDLL$ = "mscuistf.dll" ''Custom user interface dll HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure SetBitmap CUIDLL$, LOGO SetTitle TITLE$ szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF" END IF ReadInfFile szInf$ EXTRACOSTS$ = "ExtraCosts" FOR i% = 1 TO 26 STEP 1 AddListItem EXTRACOSTS$, "0" NEXT i% WinDrive$ = MID$(GetWindowsDir, 1, 1) DEST$ = Windrive$ + ":\TUTORWIN\Demo94" '$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: MajorNo% = GetWindowsMajorVersion() MinorNo% = GetWindowsMinorVersion() IF ( MajorNo% < 3 ) THEN i% = DoMsgBox("Das Programm erfordert Windows Version 3.1 oder nachfolgende Versionen.", "Setup-Nachricht", MB_TASKMODAL+MB_ICONHAND+MB_OK) ERR = STFQUIT GOTO QUIT END IF IF ( MinorNo% < 1 ) THEN i% = DoMsgBox("Das Programm erfordert Windows Version 3.1 oder nachfolgende Versionen.", "Setup-Nachricht", MB_TASKMODAL+MB_ICONHAND+MB_OK) ERR = STFQUIT GOTO QUIT END IF sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$) UIPop 1 IF sz$ <> "CONTINUE" THEN ERR = STFQUIT GOTO QUIT END IF REGISTRATION: CONFIRM: GETPATH: SetSymbolValue "EditTextIn", DEST$ SetSymbolValue "EditFocus", "END" GETPATHL1: sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP_2, 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 REGISTRATION ELSE GOSUB ASKQUIT GOTO GETPATH END IF CHECKSPACE: CursorSave% = ShowWaitCursor() FILENEED$ = "FileNeed" SrcDir$ = GetSymbolValue("STF_SRCDIR") ClearCopyList AddSectionFilesToCopyList "Files", SrcDir$, DEST$ StillNeed& = GetCopyListCost(EXTRACOSTS$, FILENEED$, "") cost& = 0 FOR i% = 1 TO 26 STEP 1 cost& = cost& + VAL(GetListItem(FILENEED$, i%)) NEXT i% drive$ = MID$(DEST$, 1, 1) free& = GetFreeSpaceForDrive(drive$) RestoreCursor CursorSave% IF free& < cost& THEN CONFIRMTEXTIN$ = "ConfirmTextIn" FOR i% = 1 TO 10 STEP 1 AddListItem CONFIRMTEXTIN$, "" NEXT i% ReplaceListItem CONFIRMTEXTIN$, 1, STR$(cost& / 1024) + " K" ReplaceListItem CONFIRMTEXTIN$, 2, STR$(free& / 1024) + " K" sz$ = UIStartDlg(CUIDLL$, CDCONFIRMNOSPACE, "FConfirmDlgProc", APPHELP, HELPPROC$) UIPop 1 IF sz$ = "CONTINUE" THEN GOTO CHECKSPACE ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO GETPATH ELSE GOSUB ASKQUIT GOTO CHECKSPACE END IF END IF Install QUIT: '' ON ERROR GOTO ERRQUIT IF ERR = 0 THEN 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("Die Quelldateien des Setup-Programms sind beschΣdigt! Die Installation ist so nicht m÷glich.", "Setup Nachricht", 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 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 AddSectionFilesToCopyList "Files", SrcDir$, DEST$ CopyFilesInCopyList Prog$ = DEST$ + "\adwin.exe tw_demo" Other$ = ",,,," + DEST$ CreateProgmanGroup "TutorWin Lernprogramme", "", cmoNone ShowProgmanGroup "TutorWin Lernprogramme", 1, cmoNone CreateProgmanItem "TutorWin Lernprogramme", "TutorWin Demo", Prog$, Other$, cmoOverwrite 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 '** '** Purpose: '** Padding a String to size '** '** Arguments: '** szString$ - String to pad '** len_to - desired length '** Returns: '** padded String. '************************************************************************* FUNCTION PadSymbol (szString$, len_to ) STATIC AS STRING actlen = LEN(szString$) '' i% = DoMsgBox(szString$ + " " + STR$(actlen), "PadSymbol", MB_TASKMODAL+MB_ICONHAND+MB_OK) IF actlen < len_to THEN FOR i = actlen to len_to STEP 1 szString$ = szString$ + " " NEXT i END IF PadSymbol = szString$ END FUNCTION