'*####################################################################################
'*#                              Maverick                                            #
'*#				Copyright 1993 - 1995 Ray White, Steve Clark					     #
'*#                         3804 Seventh Street                                      #
'*#                        Sachse, Texas  75048                                      #
'*####################################################################################

'$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.
GLOBAL SYSDIR$      ''Windows System Directory.
GLOBAL WINDIR$      ''Windows Directory.

DECLARE SUB Install
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
DECLARE SUB ShowWindow LIB "user" (hwnd%, cmo%)


INIT:
	ShowWindow HwndFrame(), 3

    CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
    HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure

    SetBitmap CUIDLL$, LOGO
    SetTitle "Maverick Setup"

    szInf$ = GetSymbolValue("STF_SRCINFPATH")
    IF szInf$ = "" THEN
        szInf$ = GetSymbolValue("STF_CWDDIR") + "MAVERICK.INF"
    END IF
    ReadInfFile szInf$

    OPTCUR$ = "1"
    DEST$ = "C:\MAVERICK"
	SYSDIR$ = GetWindowsSysDir()
	WINDIR$ = GetWindowsDir()

'$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 WELCOME
    ELSE
        GOSUB ASKQUIT
        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, 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



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
    CreateDir DEST$ + "\Examples", cmoNone
	
	SetRestartDir SYSDIR$

    OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
    WriteToLogFile ""
    WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
    WriteToLogFile ""
    WriteToLogFile "Created the directory: " + DEST$
    WriteToLogFile "Created the directory: " + DEST$ + "\Examples"
    WriteToLogFile ""

    AddSectionFilesToCopyList "Files", SrcDir$, DEST$
    CopyFilesInCopyList
    WriteToLogFile ""

	ClearCopyList
    AddSectionFilesToCopyList "Examples", SrcDir$, DEST$ + "\Examples"
    CopyFilesInCopyList
    WriteToLogFile ""

	ClearCopyList
    AddSectionFilesToCopyList "INIFiles",     SrcDir$, WINDIR$
    AddSectionFilesToCopyList "Redistribute", SrcDir$, SYSDIR$
    CopyFilesInCopyList
    WriteToLogFile ""

    CreateProgmanGroup "Maverick", "", cmoNone
    ShowProgmanGroup   "Maverick", 1,  cmoNone
    CreateProgmanItem  "Maverick", "Maverick",         MakePath(DEST$,"maverick.exe"),                 "", cmoOverwrite
    CreateProgmanItem  "Maverick", "Maverick - Help",  "winhelp.exe "+MakePath(DEST$,"maverick.hlp"),  "", cmoOverwrite
    CreateProgmanItem  "Maverick", "Read Me",          "notepad.exe "+MakePath(DEST$,"readme.txt"),    "", cmoOverwrite
    CreateProgmanItem  "Maverick", "Maverick EasyView", MakePath(DEST$,"easy.exe"),                    "", cmoOverwrite

    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

