'**************************************************************************
'*                       MSSetup Toolkit Sample 1
'**************************************************************************

'$DEFINE DEBUG  ''Define for script development/debugging

'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'

''Dialog ID's
CONST WELCOME       = 100
CONST TRYMODELESS   = 101    
CONST ASKQUIT       = 200
CONST DESTPATH      = 300
CONST EXITFAILURE   = 400
CONST EXITQUIT      = 600
CONST GOODBYE       = 601
CONST EXITSUCCESS   = 700
CONST OPTIONS       = 800
CONST WELCOMEHELP   = 900 
CONST OPTIONHELP    = 901
CONST PATHHELP      = 902 
CONST PRIMARYHELP   = 903 
CONST MASTERHELP    = 904 
CONST SHOWCONFIGHELP= 905 
CONST SHOWAUTOHELP  = 906 
CONST CONFIGHELP    = 907 
CONST AUTOHELP      = 908 
CONST GOODBYEHELP   = 909
CONST CDLETTER      = 1900
CONST AUTOEXEC      = 1020
CONST CONFIG        = 1010
CONST BADPATH       = 6400
CONST SHOWCONFIG    = 1011
CONST SHOWAUTOEXEC  = 1012
CONST MASTERSLAVE   = 801
CONST PRIMSEC       = 802

''Bitmap ID
CONST LOGO = 1

GLOBAL DEST$        ''Default destination directory.
GLOBAL OPTCUR$      ''Option selection from option dialog.
GLOBAL PRIMARY$
GLOBAL MASTER$
GLOBAL CONFIGSHOW$
GLOBAL LETTER$      ''CD-ROM driver letter.    
GLOBAL FILESTRING$
GLOBAL LASTDRIVE$
GLOBAL DRIVE$        
GLOBAL CONFIGSYS$
GLOBAL DRIVERCHECK
GLOBAL LASTDRIVECHECK
GLOBAL WINDOWSSYSDIR$
GLOBAL WINDOWSDIR$
DIM List(7) AS STRING
DIM Totalletters(26) AS STRING
DIM Drivers(7) AS STRING

DECLARE SUB Install
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
DECLARE FUNCTION LoadBitmap LIB "kernel" (szhandle$, szbitmap$) AS INTEGER


INIT:
    CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
    HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure

    SetBitmap CUIDLL$, LOGO
    SetTitle "NEC Simple Start 1.0"

    szInf$ = GetSymbolValue("STF_SRCINFPATH")
    IF szInf$ = "" THEN
	szInf$ = GetSymbolValue("STF_CWDDIR") + "Simple.INF"
    END IF
    ReadInfFile szInf$
    
    LASTDRIVECHECK = 0
    NECCDRCHECK = 0
    MACHECK = 0
    OPTCUR$ = "1"
    DEST$ = "C:\CDROM"                      
    LETTER$ = "D"
    LASTDRIVE$ = "Lastdrive = "
    PRIMARY$= "4"
    MASTER$ = "3"
    Totalletters(0)="A"
    Totalletters(1)="B"
    Totalletters(2)="C"
    Totalletters(3)="D"
    Totalletters(4)="E"
    Totalletters(5)="F"
    Totalletters(6)="G"
    Totalletters(7)="H"
    Totalletters(8)="I"
    Totalletters(9)="J"
    Totalletters(10)="K"
    Totalletters(11)="L"
    Totalletters(12)="M"
    Totalletters(13)="N"
    Totalletters(14)="O"
    Totalletters(15)="P"
    Totalletters(16)="Q"
    Totalletters(17)="R"
    Totalletters(18)="S"
    Totalletters(19)="T"
    Totalletters(20)="U"
    Totalletters(21)="V"
    Totalletters(22)="W"
    Totalletters(23)="X"
    Totalletters(24)="Y"
    Totalletters(25)="Z"

'$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", WELCOMEHELP, HELPPROC$)
    IF sz$ = "CONTINUE" THEN
	WINDOWSDIR = GetWindowsDir()
	WINDOWSSYSDIR = GetWindowsSysDir()
	UIPop 1
    ELSE
	GOSUB ASKQUIT
	GOTO WELCOME
    END IF


OPTION:
    SetSymbolValue "RadioDefault", OPTCUR$
OPTL1:
    sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", OPTIONHELP, HELPPROC$)
    OPTCUR$ = GetSymbolValue("ButtonChecked")

    IF sz$ = "CONTINUE" THEN
	UIPop(1)
	IF OPTCUR$ = "1" THEN
		GOSUB  COPYFILES
		GOTO DEFAULTSETUP
	END IF
    
    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", PATHHELP, 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 OPTION
    ELSE
	GOSUB ASKQUIT
	GOTO GETPATH
    END IF

GETPRIMARY:
    SetSymbolValue "RadioDefault", PRIMARY$
GETPRIMARY1:
    sz$ = UIStartDlg(CUIDLL$, PRIMSEC, "FRadioDlgProc", PRIMARYHELP, HELPPROC$)
    PRIMARY$ = GetSymbolValue("ButtonChecked")

    IF sz$ = "CONTINUE" THEN
	UIPop(1)
    ELSEIF sz$ = "REACTIVATE" THEN
	GOTO GETPRIMARY1
    ELSEIF sz$ = "BACK" THEN
	UIPop 1
	GOTO GETPATH
    ELSE
	GOSUB ASKQUIT
	GOTO GETPATH
    END IF

GETMASTERSLAVE:
    SetSymbolValue "RadioDefault", MASTER$
GETMASTERSLAVE1:
    sz$ = UIStartDlg(CUIDLL$, MASTERSLAVE, "FRadioDlgProc", MASTERHELP, HELPPROC$)
    MASTER$ = GetSymbolValue("ButtonChecked")

    IF sz$ = "CONTINUE" THEN
	IF PRIMARY = "5" AND MASTER = "3" THEN
		CONFIGSHOW$ = "device=" + DEST$ + "\NEC_IDE.SYS /D:MSCD001 /P:1F0 /I:14 /V "
	ELSEIF PRIMARY = "4" AND MASTER = "3" THEN
		CONFIGSHOW$ = "device=" + DEST$ + "\NEC_IDE.SYS /D:MSCD001 /P:170 /I:15 /V "
	ELSEIF PRIMARY = "5" AND MASTER = "2" THEN
		CONFIGSHOW$ = "device=" + DEST$ + "\NEC_IDE.SYS /D:MSCD001 /P:1F0s /I:14 /V "
	ELSEIF PRIMARY = "4" AND MASTER = "2" THEN
		CONFIGSHOW$ = "device=" + DEST$ + "\NEC_IDE.SYS /D:MSCD001 /P:170s /I:15 /V "
	ENDIF
	UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
	GOTO GETMASTERSLAVE1
    ELSEIF sz$ = "BACK" THEN
	UIPop 1
	GOTO GETPRIMARY
    ELSE
	GOSUB ASKQUIT
	GOTO GETPATH
    END IF

SHOWCONFIGLINES:
    SetSymbolValue "EditTextIn", CONFIGSHOW$
SHOWCONFIGLINES1:
    sz$ = UIStartDlg(CUIDLL$, SHOWCONFIG, "FEditDlgProc", SHOWCONFIGHELP, HELPPROC$)

    IF sz$ = "CONTINUE" THEN
	UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
	GOTO GETPATHL1
    ELSEIF sz$ = "BACK" THEN
	UIPop 1
	GOTO GETMASTERSLAVE
    ELSE
	GOSUB ASKQUIT
	GOTO GETPATH
    END IF

SHOWAUTOLINES:
    SetSymbolValue "EditTextIn", DEST$ + "\mscdex /d:MSCD001 /m:10" 
SHOWAUTOLINES1:
    sz$ = UIStartDlg(CUIDLL$, SHOWAUTOEXEC, "FEditDlgProc", SHOWAUTOHELP, HELPPROC$)

    IF sz$ = "CONTINUE" THEN
	UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
	GOTO GETPATHL1
    ELSEIF sz$ = "BACK" THEN
	UIPop 1
	GOTO SHOWCONFIGLINES
    ELSE
	GOSUB ASKQUIT
	GOTO GETPATH
    END IF

COPYFILES:
    SrcDir$ = GetSymbolValue("STF_SRCDIR")
    CreateDir DEST$, cmoNone

''    OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
''    WriteToLogFile ""
''    WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
''    WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
''    WriteToLogFile ""
''    WriteToLogFile "May have had to create the directory: " + DEST$
''    WriteToLogFile ""

    AddSectionFilesToCopyList "Files", SrcDir$, DEST$
''    AddSectionKeyFileToCopyList "Options", OPTCUR$, SrcDir$, DEST$
    CopyFilesInCopyList
    CopyFile DEST$ + "\mcicda.drv", WINDOWSSYSDIR + "mcicda.drv", cmoOverwrite, 0
''    CloseLogFile

    IF OPTCUR$ = "1" THEN
	GOTO  DEFAULTSETUP
    END IF



CONFIG:
    sz$ = UIStartDlg(CUIDLL$, CONFIG, "FInfoDlgProc", CONFIGHELP, HELPPROC$)
    IF sz$ = "CONTINUE" THEN
	UIPop 1
	DRIVE$ = GetConfigLastDrive()
	IF DRIVE$ < LETTER$ THEN
		DRIVE$ = LETTER$
	END IF
	DRIVE$ = "Z"
	CopyFile "c:\config.sys", "c:\config.nec",cmoOverwrite,0
	OPEN "c:\config.nec" FOR INPUT AS #1 
	OPEN "c:\config.sys" FOR OUTPUT AS #2
	WHILE NOT(EOF(1))
		LINE INPUT #1, FILESTRING$
		IF  INSTR(UCASE$(FILESTRING$), "NEC_IDE") THEN
			IF DRIVERCHECK = 0 THEN
				PRINT #2, CONFIGSHOW$
				DRIVERCHECK = 1
			ENDIF

		  ELSEIF  INSTR(UCASE$(FILESTRING$), "LASTDRIVE") THEN                
			IF LASTDRIVECHECK = 0 THEN
				PRINT #2, "Lastdrive = " + DRIVE$
				LASTDRIVECHECK = 1
			ENDIF
		  
		  ELSE  
					PRINT #2, FILESTRING$
					FILESTRING$ = ""       
		  ENDIF

	WEND
	IF DRIVERCHECK = 0 THEN
		PRINT #2, CONFIGSHOW$
		DRIVERCHECK = 1
	END IF
	IF LASTDRIVECHECK = 0 THEN
		PRINT #2, "Lastdrive = " + DRIVE$
		LASTDRIVECHECK = 1
	END IF
	CLOSE #1
	CLOSE #2
    
'    ELSE
'        GOSUB ASKQUIT
'        GOTO CONFIG
     END IF
    
AUTOEXEC:
    sz$ = UIStartDlg(CUIDLL$, AUTOEXEC, "FInfoDlgProc", AUTOHELP, HELPPROC$)
    IF sz$ = "CONTINUE" THEN
	UIPop 1
	CopyFile "c:\autoexec.bat", "c:\autoexec.nec",cmoOverwrite,0
	OPEN "c:\autoexec.nec" FOR INPUT AS #1 
	OPEN "c:\autoexec.bat" FOR OUTPUT AS #2
	PRINT #2,DEST$ + "\mscdex /d:MSCD001 /m:10" 
	WHILE NOT(EOF(1))
		LINE INPUT #1, FILESTRING$
		IF INSTR(UCASE$(FILESTRING$), "MSCDEX") THEN
			
		ELSE
			PRINT #2, FILESTRING$
		END IF
	WEND
	CLOSE #1
	CLOSE #2
'    ELSE
'        GOSUB ASKQUIT
'        GOTO AUTOEXEC
    END IF
    Install
    GOTO QUIT

DEFAULTSETUP:
    CONFIGSHOW$ = "device=" + DEST$ +"\NEC_IDE.SYS /D:MSCD001 /V"
    FOR I=4 TO 25 STEP 1
    IF IsDriveValid(Totalletters(I)) THEN
	DRIVE$ = Totalletters(I)    
	I = 30
    END IF
    NEXT I    
	DRIVE$ = "Z"
	CopyFile "c:\config.sys", "c:\config.nec",cmoOverwrite,0
	OPEN "c:\config.nec" FOR INPUT AS #1 
	OPEN "c:\config.sys" FOR OUTPUT AS #2
	WHILE NOT(EOF(1))
		LINE INPUT #1, FILESTRING$
		IF  INSTR(UCASE$(FILESTRING$), "NEC_IDE") THEN
			IF DRIVERCHECK = 0 THEN
				PRINT #2, CONFIGSHOW$
				DRIVERCHECK = 1
			ENDIF                  

		  ELSEIF  INSTR(UCASE$(FILESTRING$), "LASTDRIVE") THEN                
			IF LASTDRIVECHECK = 0 THEN        
				PRINT #2, "Lastdrive = " + DRIVE$
				LASTDRIVECHECK = 1
			ENDIF
		  ELSE  
					PRINT #2, FILESTRING$
					FILESTRING$ = ""       
		  ENDIF

	WEND
	IF DRIVERCHECK = 0 THEN
		PRINT #2, CONFIGSHOW$
		DRIVERCHECK = 1
	END IF
	IF LASTDRIVECHECK = 0 THEN
		PRINT #2, "Lastdrive = " + DRIVE$
		LASTDRIVECHECK = 1
	END IF
	CLOSE #1
	CLOSE #2
	CopyFile "c:\autoexec.bat", "c:\autoexec.nec",cmoOverwrite,0
	OPEN "c:\autoexec.nec" FOR INPUT AS #1 
	OPEN "c:\autoexec.bat" FOR OUTPUT AS #2
	PRINT #2,DEST$ + "\mscdex /d:MSCD001 /m:10"
	WHILE NOT(EOF(1))
		LINE INPUT #1, FILESTRING$
		IF INSTR(UCASE$(FILESTRING$), "MSCDEX") THEN
			
		ELSE
			PRINT #2, FILESTRING$
		END IF
	WEND
	CLOSE #1
	CLOSE #2
	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 1-800-388-8888!", "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


''    CreateIniKeyValue "WIN.INI", "NEC Simple Start", "Option", OPTCUR$, cmoNone
''    CreateIniKeyValue ini$, "Section 1", "Key 1", "Value 1" , cmoNone
''    CreateIniKeyValue ini$, "Section 2", "Key 2", "Value 2" , cmoNone
    CreateIniKeyValue WINDOWSDIR + "system.ini", "mci", "CDAudio", "mcicda.drv" , cmoNone

    CreateProgmanGroup "NEC Simple Start", "", cmoNone
    ShowProgmanGroup  "NEC Simple Start", 1, cmoNone
    CreateProgmanItem "NEC Simple Start", "Questions and Answers", "winhelp.exe "+MakePath(DEST$,"q&a.hlp"), "", cmoOverwrite
    CreateProgmanItem "NEC Simple Start", "Glossary of Terms", "winhelp.exe "+MakePath(DEST$,"glossary.hlp"), "", cmoOverwrite
''    CreateProgmanItem "NEC Simple Start", "Simple Start Setup", MakePath(DEST$,"setup.exe"), "", cmoOverwrite
    CreateProgmanItem "NEC Simple Start", "CD-ROM Test", MakePath(DEST$,"nectest.exe"), "", cmoOverwrite

''    AddDos5Help "YOURAPP", "A brief help text for your Windows application."+chr$(10)+"It can be continued on another line with chr$(10).", cmoNone


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

