'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
'$INCLUDE 'msregdb.inc'

CONST WELCOME       = 100
CONST ASKQUIT       = 200
CONST DESTPATH      = 300
CONST EXITFAILURE   = 400
CONST EXITQUIT      = 600
CONST EXITSUCCESS   = 700
CONST APPHELP       = 900
CONST TOOBIG        = 6300
CONST BADPATH       = 6400

GLOBAL DEST$        ''Default destination directory.
GLOBAL DISKSPACE$   ''Flag for too small free disk space

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$, 1
    SetTitle "Crystal Caliburn 1.02"

    szInf$ = GetSymbolValue("STF_SRCINFPATH")
    IF szInf$ = "" THEN
        szInf$ = GetSymbolValue("STF_CWDDIR") + "CCWIN.INF"
    END IF
    ReadInfFile szInf$

    DEST$ = "C:\CCWIN"

WELCOME:
    sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
    IF sz$ = "CONTINUE" THEN
        UIPop 1
    ELSE
        GOSUB ASKQUIT
        GOTO WELCOME
    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
    ELSE
        GOSUB ASKQUIT
        GOTO GETPATH
    END IF

    GOSUB CHECKSPACE
    IF DISKSPACE$ <> "" THEN 
        GOTO GETPATH
    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("Setup sources were corrupted.", "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

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

CHECKSPACE:
    ClearCopyList
    DISKSPACE$ = ""
    SrcDir$ = GetSymbolValue("STF_SRCDIR")

    AddSectionFilesToCopyList "Files", SrcDir$, DEST$
    required& = GetCopyListCost("","","")
    IF (required& > 0) THEN
        GOSUB TOOBIG
        DISKSPACE$ = "NE"
    END IF
    ClearCopyList
    RETURN

TOOBIG:
    sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
        GOTO TOOBIG
    END IF
    UIPop 1
    RETURN

SUB Install STATIC

    SrcDir$ = GetSymbolValue("STF_SRCDIR")
    CreateDir DEST$, cmoNone
    AddSectionFilesToCopyList "Files", SrcDir$, DEST$
    CopyFilesInCopyList
    CreateProgmanGroup "Crystal Caliburn", "", cmoNone
    ShowProgmanGroup "Crystal Caliburn", 1, cmoNone
    CreateProgmanItem "Crystal Caliburn", "Crystal Caliburn 1.02", MakePath(DEST$,"CCWIN.EXE"), "", cmoOverwrite
    CreateRegKeyValue "pinballfile", "PINBALL Design File"
    IniFile$ = MakePath(GetWindowsDir(),"CCWIN.INI")
    IF DoesFileExist(IniFile$,femExists) = 1 THEN
        IF DoesIniKeyExist(IniFile$,"Registration","Serial") THEN
            RemoveIniKey IniFile$,"Registration","Serial",cmoVital
        ENDIF
        IF DoesIniKeyExist(IniFile$,"Registration","Name") THEN
            RemoveIniKey IniFile$,"Registration","Name",cmoVital
        ENDIF
    ENDIF
    IniFile$ = MakePath(DEST$,"CCWIN.INI")
    IF DoesFileExist(IniFile$,femExists) = 1 THEN
        IF DoesIniKeyExist(IniFile$,"Registration","Serial") THEN
            RemoveIniKey IniFile$,"Registration","Serial",cmoVital
        ENDIF
        IF DoesIniKeyExist(IniFile$,"Registration","Name") THEN
            RemoveIniKey IniFile$,"Registration","Name",cmoVital
        ENDIF
    ENDIF
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


