'**************************************************************************
'*                       CBIRUN Demo Product Setup
'**************************************************************************

''$DEFINE DEBUG  	''Define for script development/debugging
''$DEFINE DISKSIZE	''Define if you want to check for disk space

'$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 DRIVESELECT	= 1100
CONST BADPATH  	= 6400

''Bitmap ID
CONST LOGO = 1

GLOBAL DEST$        	''Default destination directory.
GLOBAL OPTCUR$   	'Null for now
GLOBAL WINDRIVE$	'Used in size test

GLOBAL SrcDir$
GLOBAL WinDir$
GLOBAL WinSysDir$

GLOBAL WantedDiskSize&	''Used for disk size test

DECLARE SUB Install
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING

''DECLARE FUNCTION DoProtect LIB "PROTECT.DLL" (szDisk$) AS INTEGER

INIT:
    CUIDLL$   = "mscuistf.dll"            	''Custom user interface dll
    HELPPROC$ = "FHelpDlgProc"   	''Help dialog procedure

    SrcDir$ = GetSymbolValue("STF_SRCDIR")
    WinDir$ = GetWindowsDir()
    WinSysDir$ = GetWindowsSysDir()

    MajorVer% = GetWindowsMajorVersion()
    MinorVer% = GetWindowsMinorVersion()

    IF  MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
        i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
        END
    END IF

    SetBitmap CUIDLL$, LOGO
    SetTitle "CBI Tutorial Install ... Created with CBIquick"

    szInf$ = GetSymbolValue("STF_SRCINFPATH")

    IF szInf$ = "" THEN
	 szInf$ = GetSymbolValue("STF_CWDDIR") + "DEMORUN.INF"
    END IF
 
    ReadInfFile szInf$

    OPTCUR$ = "1"
    DEST$ = "C:\CBIRUN"

'$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:

GETPATH:
    SetSymbolValue "EditTextIn", DEST$
    SetSymbolValue "EditFocus", "END"

GETPATHL1:
    sz$   = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
    DEST$ = GetSymbolValue("EditTextOut")

    IF sz$ = "CONTINUE" THEN

	''Not checking writeability of network drives yet
	''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 WELCOME
    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 (508) 263-3030 !", "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

'**********************************************************************
'** Install
'**
'** Purpose:
'**     Builds the copy list and performs all installation operations.
'** Arguments:
'**     none.
'** Returns:
'**     none.
'*************************************************************************
SUB Install STATIC

    ''Save a copy of previous menu (if present)------------------------
    DEST_MNU$ = DEST$ + "\DEMORUN.MNU"
    OLD_MNU$   = DEST$ + "\OLD.MNU"
    i% = DoesFileExist(DEST_MNU$, femExists)

    IF i% = 1 THEN
	CopyFile DEST_MNU$, OLD_MNU$, cmoNone, 0
    END IF


    '$IFDEF DISKSIZE     ''If disk size to be checked
    	''Check the disk space - TEST THIS ON NETWORK DRIVES-----------------
    	WINDRIVE$ = MID$(DEST$, 1, 1)
    	WantedDiskSize&=5800000

    	'$INCLUDE 'DISKSIZE.INC'

 	DiskSize&=GetFreeSpaceForDrive(WINDRIVE$)

    	IF WantedDiskSize& > DiskSize& THEN
    		i% = DoMsgBox("Not enough free disk space.  Need 1.8 MB to install + 4 MB additional to run CBIquick tutorial.", "Install Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
       		END
	END IF
    '$ENDIF    ''DISKSIZE

    SrcDir$ = GetSymbolValue("STF_SRCDIR")
    CreateDir DEST$, cmoNone

    OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
    WriteToLogFile ""
    WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
    WriteToLogFile "  Installing DISK 1 to: '" + DEST$ + "'"
    WriteToLogFile ""

    AddSectionFilesToCopyList "Files1", SrcDir$, DEST$
  
    ''Add Video-For-Windows Run-Time files.............................

    AddSectionFilesToCopyList "VFW Runtime", SrcDir$, WinSysDir$
    AddSectionFilesToCopyList "AVICodecs", SrcDir$, WinSysDir$

    ''Copy the files, initialize display.........................................

    CopyFilesInCopyList

    ''Update WIN.INI and SYSTEM.INI......................................

    CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
    CreateIniKeyValue "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
    CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite

   ''no MPLAYER Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))

    Run ("profdisp")

    ''ini$ = MakePath(DEST$, "DEMORUN.INI")
    ''CreateIniKeyValue "WIN.INI", "DEMORUN Demo Run-Time For CBIquick", "Option", OPTCUR$, cmoNone
    ''CreateIniKeyValue ini$, "Section 1", "Key 1", "Value 1" , cmoNone
    ''CreateIniKeyValue ini$, "Section 2", "Key 2", "Value 2" , cmoNone
    ''CreateIniKeyValue ini$, "Section 3", "Key 3", "Value 3" , cmoNone

    CreateProgmanGroup "CBIrun", "CBIRUN.GRP", cmoNone
    ShowProgmanGroup  "CBIrun", 1, cmoNone
    ''CreateProgmanItem "CBIrun", "CBIrun", MakePath(DEST$,"CBIRUN.exe"),"", cmoOverwrite

    ''Append old .MNU menu to new
    i% = DoesFileExist(OLD_MNU$, femExists)

    IF i% = 1 THEN
	CopyFile OLD_MNU$, DEST_MNU$, cmoNone, 1
    END IF

    ''Get the icon label def created by DQ in Create Disk

    '$INCLUDE 'DEMOLABL.INC'

	''Initializing definitions for DISK1-DISK20, up to 20 install disks
	DISK1$ = ""
	DISK2$ = ""
	DISK3$ = ""
	DISK4$ = ""
	DISK5$ = ""
	DISK6$ = ""
	DISK7$ = ""
	DISK8$ = ""
	DISK9$ = ""
	DISK10$ = ""
	DISK11$ = ""
	DISK12$ = ""
	DISK13$ = ""
	DISK14$ = ""
	DISK15$ = ""
	DISK16$ = ""
	DISK17$ = ""
	DISK18$ = ""
	DISK19$ = ""
	DISK20$ = ""

	''Now use the DISKn variables set by DQ Create Disk to flag disks used
	''in this course install.  Example  DISK3 = "1" to flag disk 1 used.

    '$INCLUDE 'DISKNUM.INC'

    IF DISK2$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 2 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files2", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK3$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 3 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files3", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK4$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 4 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files4", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK5$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 5 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files5", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK6$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 6 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files6", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK7$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 7 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files7", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK8$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 8 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files8", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK9$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 9 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files9", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK10$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 10 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files10", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK11$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 11 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files11", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK12$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 12 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files12", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK13$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 13 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files13", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK14$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 14 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files14", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK15$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 15 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files15", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK16$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 16 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files16", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK17$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 17 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files17", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK18$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 18 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files18", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK19$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 19 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files19", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    IF DISK20$ = "1" THEN
	i% = DoMsgBox("Insert Disk # 20 now...", "Load Next Disk", MB_TASKMODAL+MB_ICONHAND+MB_OK)
	ClearCopyList
	AddSectionFilesToCopyList "Files20", SrcDir$, DEST$
	CopyFilesInCopyList
    END IF

    CloseLogFile

END SUB


'************************************************************************
'** MakePath
'**
'** 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

