home *** CD-ROM | disk | FTP | other *** search
- '**************************************************************************
- '* ITSetup Demo
- '**************************************************************************
-
- '*'$DEFINE DEBUG ''Define for script development/debugging
-
-
- '$INCLUDE 'setupapi.inc'
- '$INCLUDE 'msdetect.inc'
-
- '$ifdef DEBUG
- DECLARE SUB NickErr (szApi$, szArgs$)
- '$endif ''DEBUG
-
- CONST ASKQUIT = 200
- CONST DESTPATH = 300
- CONST EXITFAILURE = 400
- CONST EXITQUIT = 600
- CONST EXITSUCCESS = 700
- CONST OPTIONS = 800
- CONST APPHELP = 900
- CONST CUSTINST = 6200
- CONST TOOBIG = 6300
- CONST BADPATH = 6400
-
- CONST LOGO = 1
-
- CONST APPFILES = 1
- CONST OPTFILES1 = 2
-
-
- GLOBAL DEST$
- GLOBAL WINSYSDIR$
- GLOBAL WINDRIVE$
- GLOBAL OPT1OPT$
-
- GLOBAL APPNEEDS$
- GLOBAL OPT1NEEDS$
- GLOBAL EXTRACOSTS$
- GLOBAL BIGLIST$
- GLOBAL ININUM%
-
- GLOBAL CHECKSTATES$
- GLOBAL STATUSTEXT$
- GLOBAL DRIVETEXT$
- GLOBAL DRIVEPATH$
- GLOBAL DIRPATH$
- GLOBAL FILEPATH$
- GLOBAL EXTPATH$
- GLOBAL STREXP$
-
- DECLARE SUB AddOptFilesToCopyList (ftype%)
- DECLARE SUB RecalcOptFiles (ftype%)
- DECLARE SUB RecalcPath
- DECLARE SUB SetDriveStatus
- DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
-
-
-
- INIT:
- CUIDLL$ = "mscuistf.dll"
- HELPPROC$ = "FHelpDlgProc"
-
- SetBitmap CUIDLL$, LOGO
- SetTitle "Inotec Setup"
-
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
- END IF
- ReadInfFile szInf$
-
- WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
- DEST$ = "C:\INOTEC"
- WINSYSDIR$ = GetWindowsSysDir
-
- RemoveIniSection "WIN.INI", "It", cmoNone
- ININUM% = 0
-
- CHECKSTATES$ = "CheckItemsState"
- STATUSTEXT$ = "StatusItemsText"
- DRIVETEXT$ = "DriveStatusText"
- FOR i% = 1 TO 3 STEP 1
- AddListItem CHECKSTATES$, "ON"
- NEXT i%
- FOR i% = 1 TO 3 STEP 1
- AddListItem STATUSTEXT$, ""
- NEXT i%
- FOR i% = 1 TO 7 STEP 1
- AddListItem DRIVETEXT$, ""
- NEXT i%
- ReplaceListItem DRIVETEXT$, 7, DEST$
-
- APPNEEDS$ = "AppNeeds"
- OPT1NEEDS$ = "Opt1Needs"
- EXTRACOSTS$ = "ExtraCosts"
- BIGLIST$ = "BigList"
- FOR i% = 1 TO 3 STEP 1
- AddListItem BIGLIST$, ""
- NEXT i%
- FOR i% = 1 TO 26 STEP 1
- AddListItem EXTRACOSTS$, "0"
- NEXT i%
-
- ''File Option Variables
-
- RecalcPath
- SetDriveStatus
-
- '$IFDEF DEBUG
- i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
- '$ENDIF ''DEBUG
-
-
-
- CUSTINST:
- sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
-
- IF sz$ = "CONTINUE" THEN
- ''Install only if it will fit.
- FOR i% = 1 TO 3 STEP 1
- IF GetListItem(BIGLIST$, i%) <> "" THEN
- GOSUB TOOBIG
- GOTO CUSTINST
- END IF
- NEXT i%
- UIPop 1
- GOTO INSTALL
- ELSEIF sz$ = "PATH" THEN
- GOTO GETPATH
- ELSEIF sz$ = "REACTIVATE" THEN
- RecalcPath
- SetDriveStatus
- GOTO CUSTINST
- ELSE
- GOSUB ASKQUIT
- GOTO CUSTINST
- END IF
-
-
-
- INSTALL:
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- CreateDir DEST$, cmoNone
- IF ININUM% = 0 THEN
- CreateDir DEST$ + "\itb", cmoNone
- CreateDir DEST$ + "\itw", cmoNone
- CreateDir DEST$ + "\itf", cmoNone
- CreateDir DEST$ + "\itr", cmoNone
- END IF
- DBDIR$ = DEST$ + "\db" + LTRIM$(STR$(ININUM%))
- CreateDir DBDIR$, cmoNone
-
- ClearCopyList
-
- IF ININUM% = 0 THEN
- AddSectionFilesToCopyList "itb", SrcDir$, DEST$ + "\itb"
- AddSectionFilesToCopyList "itw", SrcDir$, DEST$ + "\itw"
- AddSectionFilesToCopyList "itf", SrcDir$, DEST$ + "\itf"
- AddSectionFilesToCopyList "itr", SrcDir$, DEST$ + "\itr"
- AddSectionFilesToCopyList "sys", SrcDir$, WINSYSDIR$
- END IF
- AddSectionFilesToCopyList "Db", SrcDir$, DBDIR$
-
- CopyFilesInCopyList
-
- IF ININUM% = 0 THEN
- ITBDEST$ = DEST$ + "\itb\"
- ITWDEST$ = DEST$ + "\itw\"
- ITFDEST$ = DEST$ + "\itf\"
- ITRDEST$ = DEST$ + "\itr\"
- ELSE
- STREXP$ = GetIniKeyString ("WIN.INI", "IT", "Itb")
- SPLITPATH STREXP$, DRIVEPATH$, DIRPATH$, FILEPATH$, EXTPATH$
- ITBDEST$ = DRIVEPATH$ + DIRPATH$
- STREXP$ = GetIniKeyString ("WIN.INI", "IT", "Itw")
- SPLITPATH STREXP$, DRIVEPATH$, DIRPATH$, FILEPATH$, EXTPATH$
- ITWDEST$ = DRIVEPATH$ + DIRPATH$
- STREXP$ = GetIniKeyString ("WIN.INI", "IT", "Itf")
- SPLITPATH STREXP$, DRIVEPATH$, DIRPATH$, FILEPATH$, EXTPATH$
- ITFDEST$ = DRIVEPATH$ + DIRPATH$
- STREXP$ = GetIniKeyString ("WIN.INI", "IT", "Itr")
- SPLITPATH STREXP$, DRIVEPATH$, DIRPATH$, FILEPATH$, EXTPATH$
- ITRDEST$ = DRIVEPATH$ + DIRPATH$
- END IF
-
- CreateIniKeyValue "WIN.INI", "It", "Itb", ITBDEST$ + "itb.exe", cmoNone
- CreateIniKeyValue "WIN.INI", "It", "Itw", ITWDEST$ + "itw.exe", cmoNone
- CreateIniKeyValue "WIN.INI", "It", "Itf", ITFDEST$ + "itf.exe", cmoNone
- CreateIniKeyValue "WIN.INI", "It", "Itr", ITRDEST$ + "itr.exe", cmoNone
-
- INI$ = "ItbIni" + LTRIM$(STR$(ININUM%))
- INIF$ = ITBDEST$ + "itb" + LTRIM$(STR$(ININUM%)) + ".ini"
- CreateIniKeyValue "WIN.INI", "It", INI$, INIF$, cmoNone
- IF ININUM% = 0 THEN
- RemoveFile ITBDEST$ + "itb0.ini", cmoNone
- RenameFile ITBDEST$ + "itb.ini", "itb0.ini"
- ELSE
- CopyFile ITBDEST$ + "itb0.ini", INIF$, cmoNone, 0
- END IF
- RemoveIniKey INIF$, "Parameters", "dbpath", cmoNone
- CreateIniKeyValue INIF$, "Parameters", "dbpath", DBDIR$, cmoNone
- RemoveIniKey INIF$, "Parameters", "rptpath", cmoNone
- CreateIniKeyValue INIF$, "Parameters", "rptpath", DBDIR$, cmoNone
-
- INI$ = "ItwIni" + LTRIM$(STR$(ININUM%))
- INIF$ = ITWDEST$ + "itw" + LTRIM$(STR$(ININUM%)) + ".ini"
- CreateIniKeyValue "WIN.INI", "It", INI$, INIF$, cmoNone
- IF ININUM% = 0 THEN
- RemoveFile ITWDEST$ + "itw0.ini", cmoNone
- RenameFile ITWDEST$ + "itw.ini", "itw0.ini"
- ELSE
- CopyFile ITWDEST$ + "itw0.ini", INIF$, cmoNone, 0
- END IF
- RemoveIniKey INIF$, "Parameters", "dbpath", cmoNone
- CreateIniKeyValue INIF$, "Parameters", "dbpath", DBDIR$, cmoNone
-
- INI$ = "ItfIni" + LTRIM$(STR$(ININUM%))
- INIF$ = ITFDEST$ + "itf" + LTRIM$(STR$(ININUM%)) + ".ini"
- CreateIniKeyValue "WIN.INI", "It", INI$, INIF$, cmoNone
- IF ININUM% = 0 THEN
- RemoveFile ITFDEST$ + "itf0.ini", cmoNone
- RenameFile ITFDEST$ + "itf.ini", "itf0.ini"
- ELSE
- CopyFile ITFDEST$ + "itf0.ini", INIF$, cmoNone, 0
- END IF
- RemoveIniKey INIF$, "Parameters", "dbpath", cmoNone
- CreateIniKeyValue INIF$, "Parameters", "dbpath", DBDIR$, cmoNone
-
-
- INI$ = "Account" + LTRIM$(STR$(ININUM% + 1))
- CreateProgmanGroup INI$, "", cmoNone
- ShowProgmanGroup INI$, 1, cmoNone
- INIF$ = ITBDEST$ + "itb.exe -i" + LTRIM$(STR$(ININUM%))
- CreateProgmanItem INI$, "Accounter", INIF$, INIF$, cmoOverwrite
- INIF$ = ITWDEST$ + "itw.exe -i" + LTRIM$(STR$(ININUM%))
- CreateProgmanItem INI$, "Wages", INIF$, INIF$, cmoOverwrite
- INIF$ = ITFDEST$ + "itf.exe -i" + LTRIM$(STR$(ININUM%))
- CreateProgmanItem INI$, "Blank", INIF$, INIF$, cmoOverwrite
-
- 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("Setup sources were corrupted, call (095)267-6610!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
- END
-
-
-
- GETPATH:
- SetSymbolValue "EditTextIn", DEST$
- SetSymbolValue "EditFocus", "END"
- GETPATHL1:
- sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
-
- IF sz$ = "CONTINUE" THEN
- olddest$ = DEST$
- DEST$ = GetSymbolValue("EditTextOut")
-
- IF IsDirWritable(DEST$) = 0 THEN
- GOSUB BADPATH
- GOTO GETPATHL1
- END IF
- UIPop 1
-
- IF LEN(DEST$) > 23 THEN
- ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
- ELSE
- ReplaceListItem DRIVETEXT$, 7, DEST$
- END IF
-
- IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
- RecalcPath
- SetDriveStatus
- END IF
-
- olddest$ = ""
- GOTO CUSTINST
- ELSEIF sz$ = "REACTIVATE" THEN
- RecalcPath
- SetDriveStatus
- GOTO GETPATHL1
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO GETPATHL1
- ELSE
- UIPop 1
- GOTO CUSTINST
- END IF
-
-
-
-
- TOOBIG:
- sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- RecalcPath
- SetDriveStatus
- GOTO TOOBIG
- END IF
- UIPop 1
- RETURN
-
-
-
- BADPATH:
- sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- RecalcPath
- SetDriveStatus
- 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
-
-
-
- '*************************************************************************
- SUB AddOptFilesToCopyList (ftype%) STATIC
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- IF ftype% = APPFILES THEN
- IF ININUM% = 0 THEN
- AddSectionFilesToCopyList "itb", SrcDir$, DEST$
- AddSectionFilesToCopyList "itw", SrcDir$, DEST$
- AddSectionFilesToCopyList "itf", SrcDir$, DEST$
- AddSectionFilesToCopyList "itr", SrcDir$, DEST$
- END IF
- AddSectionFilesToCopyList "Db", SrcDir$, DEST$
- ELSEIF ftype% = OPTFILES1 THEN
- IF ININUM% = 0 THEN
- AddSectionFilesToCopyList "sys", SrcDir$, WINSYSDIR$
- END IF
- END IF
- SrcDir$ = ""
- END SUB
-
-
- '*************************************************************************
- SUB RecalcOptFiles (ftype%) STATIC
- CursorSave% = ShowWaitCursor()
- ClearCopyList
- AddOptFilesToCopyList ftype%
-
- IF ftype% = APPFILES THEN
- ListSym$ = APPNEEDS$
- ''Add extra cost to Windows drive for ini/progman, etc.
- ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
- ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
- ELSEIF ftype% = OPTFILES1 THEN
- ListSym$ = OPT1NEEDS$
- END IF
-
- StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
-
- cost& = 0
- FOR i% = 1 TO 26 STEP 1
- cost& = cost& + VAL(GetListItem(ListSym$, i%))
- NEXT i%
-
- IF StillNeed& > 0 THEN
- ReplaceListItem BIGLIST$, ftype%, "YES"
- ELSE
- ReplaceListItem BIGLIST$, ftype%, ""
- END IF
-
- RestoreCursor CursorSave%
- ListSym$ = ""
- END SUB
-
-
- '*************************************************************************
- SUB RecalcPath STATIC
-
- CursorSave% = ShowWaitCursor()
-
- RecalcOptFiles APPFILES
- RecalcOptFiles OPTFILES1
-
- RestoreCursor CursorSave%
- END SUB
-
-
- '*************************************************************************
- SUB SetDriveStatus STATIC
-
- drive$ = MID$(DEST$, 1, 1)
-
- IF drive$ = WINDRIVE$ THEN
- ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
- cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
- cost& = cost& + VAL(GetListItem(OPT1NEEDS$, ndrive%))
- free& = GetFreeSpaceForDrive(drive$)
- ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
- ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
- ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
-
- ReplaceListItem DRIVETEXT$, 4, ""
- ReplaceListItem DRIVETEXT$, 5, ""
- ReplaceListItem DRIVETEXT$, 6, ""
- ELSE
- ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
- cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
- free& = GetFreeSpaceForDrive(drive$)
- ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
- ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
- ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
-
- ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
- cost& = VAL(GetListItem(OPT1NEEDS$, ndrive%))
- IF cost& = 0 THEN
- ReplaceListItem DRIVETEXT$, 4, ""
- ReplaceListItem DRIVETEXT$, 5, ""
- ReplaceListItem DRIVETEXT$, 6, ""
- ELSE
- free& = GetFreeSpaceForDrive(WINDRIVE$)
- ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
- ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
- ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
- END IF
- END IF
- END SUB
-
-
- '*************************************************************************
- 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
-
- '$ifdef DEBUG
- '**************************************************************************
- SUB NickErr (szApi$, szArgs$) STATIC ''DEBUG only
-
- lpText$ = szApi$ + ": "
- if szArgs$ <> "" then
- lpText$ = lpText$ + " (" + szArgs$ + ")"
- end if
- lpCaption$ = "Nick Msg"
- res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
- '' print lpText$
- lpText$ = ""
- lpCaption$ = ""
- END SUB
- '$endif ''DEBUG
-