'**************************************************************************
'*                       SM II Setup
'*             
'*                       SM Classic Setup
'**************************************************************************


'$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   	  = 1200
CONST OPTIONS       	  = 800
CONST APPHELP       	  = 900
CONST BADPATH        	  = 6400
CONST DLG_RESTART   	  = 1000
CONST SYSTEMCOMPONENTS    = 5001
CONST DLGSYSTEMENV  	  = 1500
CONST SMOPTIONS  	  = 1300

CONST INST_CLASSIC  = 0
CONST INST_SMII     = 1

''Bitmap ID

GLOBAL DEST$        ''Default destination directory.
GLOBAL PARA$
GLOBAL SERIAL$
GLOBAL MES$
GLOBAL CHECK$

GLOBAL DEMO$
GLOBAL ROOT$
GLOBAL DRIVER$
GLOBAL MYSYS$
GLOBAL WINDIR$
GLOBAL TWAIN$

GLOBAL LOGO%
GLOBAL INSTWHAT%

DECLARE SUB Install
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
DECLARE SUB MaximizeWnd LIB "mscuistf.dll" (i%)
DECLARE SUB MinimizeWnd LIB "mscuistf.dll" (i%)
DECLARE SUB ChangeDir LIB  "mscuistf.dll"
DECLARE SUB SetInstall LIB  "mscuistf.dll" (i%)


INIT:
    CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
    HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure

    'Einstellung welche Installation durchgef�hrt werden soll
    INSTWHAT = INST_SMII 
    'INSTWHAT = INST_CLASSIC 

    'mscuistf einstellen
    SetInstall(INSTWHAT)

    if INSTWHAT=INST_SMII THEN
     LOGO%=1
     SetBitmap CUIDLL$, LOGO%
     SetTitle "Screen Machine II Software Setup"
     DEST$ = "C:\SMII"
    else
     LOGO%=101
     SetBitmap CUIDLL$, LOGO%
     SetTitle "Screen Machine IIc Software Setup"
     DEST$ = "C:\SMIIC"
    end if

    i%=HwndFrame()
    MaximizeWnd(i%)

    szInf$ = GetSymbolValue("STF_SRCINFPATH")
    IF szInf$ = "" THEN
        szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
    END IF
    ReadInfFile szInf$


'$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

DETECT:
    'GetParallelPortsList("PARA")
    'GetSerialPortsList("SERIAL")
    sz$ = UIStartDlg(CUIDLL$, SYSTEMCOMPONENTS, "FSystemDlgProc", APPHELP, HELPPROC$)

    IF sz$ = "CONTINUE" THEN
        UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO DETECT
    ELSEIF sz$ = "BACK" THEN
        UIPop 1
        GOTO WELCOME
    ELSE
        GOSUB ASKQUIT
        GOTO DETECT
    END IF

OPTIONS:
    sz$ = UIStartDlg(CUIDLL$, SMOPTIONS, "FOptionsDlgProc", APPHELP, HELPPROC$)

    IF sz$ = "CONTINUE" THEN
        UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO OPTIONS
    ELSEIF sz$ = "BACK" THEN
        UIPop 1
        GOTO DETECT
    ELSE
        GOSUB ASKQUIT
        GOTO OPTIONS
    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

	IF GetFreeSpaceForDrive(DEST$)<2400000 THEN		
	  MES$= "You need about 2 MB free space on your harddisk. Please check your harddisk ..."

   if INSTWHAT=INST_SMII then
	    i%=DoMsgBox(MES$,"SM II - Setup",MB_OK+MB_TASKMODAL+MB_ICONHAND)	
   else
	    i%=DoMsgBox(MES$,"SM IIc - Setup",MB_OK+MB_TASKMODAL+MB_ICONHAND)	
   end if

	  GOTO GETPATHL1	
 END IF
	IF DoesDirExist(DEST$)=0 THEN		
	  MES$ = "The destination path does not exists. Should it be created ?"
   if INSTWHAT=INST_SMII then
  	  i%=DoMsgBox(MES$,"SM II - Setup",MB_OKCANCEL+MB_TASKMODAL+MB_ICONHAND)	
   else
  	  i%=DoMsgBox(MES$,"SM IIc - Setup",MB_OKCANCEL+MB_TASKMODAL+MB_ICONHAND)	
   end if 
	  if i%=MB_CANCEL THEN
 	    GOTO GETPATHL1	
	  END IF
   	END IF
        UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO GETPATHL1
    ELSEIF sz$ = "BACK" THEN
        UIPop 1
        GOTO OPTIONS
    ELSE
        GOSUB ASKQUIT
        GOTO GETPATH
    END IF

    CreateIniKeyValue MakePath(WINDIR$,"win.ini"),"FAST_PROD","SMII_8","Screen Machine II",cmoOverwrite

    if DoesFileExist(MakePath(GetWindowsDir,"SMSETUP.OLD"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsDir,"SMSETUP.OLD"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsDir,"SMSETUP.INI"),femWrite)=1 then
      RenameFile MakePath(GetWindowsDir,"SMSETUP.INI"),"SMSETUP.OLD"
    end if

    ' Remove old junk
    if DoesFileExist(MakePath(DEST$,"CTL3D.DLL"),femWrite)=1 then
	     RemoveFile MakePath(DEST$,"CTL3D.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(DEST$,"PCDLIB.DLL"),femWrite)=1 then
	     RemoveFile MakePath(DEST$,"PCDLIB.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(DEST$,"VBRUN300.DLL"),femWrite)=1 then
	     RemoveFile MakePath(DEST$,"VBRUN300.DLL"),cmoForce
    end if

    if DoesFileExist(MakePath(GetWindowsDir,"MCISM.DRV"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsDir,"MCISM.DRV"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsSysDir,"SM.DLL"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsSysDir,"SM.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsSysDir,"SMIP.DLL"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsSysDir,"SMIP.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsSysDir,"SMIO.DLL"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsSysDir,"SMIO.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsSysDir,"SMJPEG.DLL"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsSysDir,"SMJPEG.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsSysDir,"VWB.DLL"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsSysDir,"VWB.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsSysDir,"VTC.DLL"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsSysDir,"VTC.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsSysDir,"VWB_CLIP.DLL"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsSysDir,"VWB_CLIP.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsSysDir,"VWB_HARD.DLL"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsSysDir,"VWB_HARD.DLL"),cmoForce
    end if
    if DoesFileExist(MakePath(GetWindowsSysDir,"VMC_API.DLL"),femWrite)=1 then
	     RemoveFile MakePath(GetWindowsSysDir,"VMC_API.DLL"),cmoForce
    end if

    Install
    ChangeDir


SYSTEMENV:
    CHECK$ = GetSymbolValue("DOSCHECKED")
    if CHECK$="TRUE" THEN

    sz$ = UIStartDlg(CUIDLL$, DLGSYSTEMENV, "FConfigDlgProc", APPHELP, HELPPROC$)

    ' continue die Config.sys wird modifiziert
    IF sz$ = "CONTINUE" THEN
        UIPop 1
    ELSEIF sz$ = "CANCEL" THEN
        UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO SYSTEMENV
    ELSEIF sz$ = "BACK" THEN
        UIPop 1
        GOTO WELCOME
    ELSE
        GOSUB ASKQUIT
        GOTO SYSTEMENV
    END IF

    'end of check
    END IF 

 	

QUIT:
    ON ERROR GOTO ERRQUIT

    IF ERR = 0 THEN
        GOTO SUCCESS
    ELSEIF ERR = STFQUIT THEN
        GOTO EXITQUITDLG
    ELSE
        GOTO EXITFAILUREDLG
    END IF

SUCCESS:
    sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FExitSuccessDlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
        GOTO SUCCESS
    END IF
    UIPop 1
    IF dlg%=EXITSUCCESS THEN
       GOSUB REST	
       UIPopAll
    END IF
    END

EXITQUITDLG:
    sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FExitQuitDlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
        GOTO EXITQUITDLG
    END IF
    UIPop 1
    END

EXITFAILUREDLG:
    sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FExitFailureDlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
        GOTO EXITFAILUREDLG
    END IF
    UIPop 1
    END

QUITL1:
    sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
        GOTO QUITL1
    END IF
    UIPop 1
    IF dlg%=EXITSUCCESS THEN
       GOSUB REST	
       UIPopAll
    END IF
    END

ERRQUIT:
    i% = DoMsgBox("Setup sources were corrupted, call +49-89-50206-111!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
    ChangeDir
    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

REST:
    sz$ = UIStartDlg(CUIDLL$,DLG_RESTART,"FRestartDlgProc", 0, "")
    CreateIniKeyValue MakePath(WINDIR$,"temp.ini"),"BOOT","SYSTEM","EXIT",cmoOverwrite
    CreateIniKeyValue MakePath(WINDIR$,"temp.ini"),"BOOT","PATH",MakePath(DEST$,""),cmoOverwrite
    if sz$="RESTART" OR sz$="REBOOT" THEN
      CreateIniKeyValue MakePath(WINDIR$,"temp.ini"),"BOOT","SYSTEM",sz$,cmoOverwrite
    END IF
  RETURN

'**
'** Purpose:
'**     Builds the copy list and performs all installation operations.
'** Arguments:
'**     none.
'** Returns:
'**     none.
'*************************************************************************
SUB Install STATIC

    SrcDir$ = GetSymbolValue("STF_SRCDIR")

    WINDIR$     = GetWindowsDir
    MYSYS$	=GetWindowsSysDir
    DRIVER$	=MakePath(DEST$,"drivers")
    TWAIN$      =MakePath(WINDIR$,"Twain")
    SAMPLE$	=MakePath(DEST$,"samples")
    ROOT$	="C:\"

    if INSTWHAT=INST_SMII then
     DEMO$	=MakePath(DEST$,"films\Wiesn")	
    else
     DEMO$	=MakePath(DEST$,"films\demo")	
    end if

    CreateDir DEST$      , cmoNone
    CreateDir DRIVER$	 , cmoNone
    CreateDir DEMO$	 , cmoNone
 

    AddSectionFilesToCopyList "sm", 		SrcDir$, DEST$
    AddSectionFilesToCopyList "demo", 		SrcDir$, DEMO$
    AddSectionFilesToCopyList "system", 	SrcDir$, MYSYS$
    AddSectionFilesToCopyList "win", 	        SrcDir$, WINDIR$
    AddSectionFilesToCopyList "mci", 		SrcDir$, MYSYS$
    AddSectionFilesToCopyList "avi", 		SrcDir$, DRIVER$
    AddSectionFilesToCopyList "mci", 		SrcDir$, DRIVER$
    AddSectionFilesToCopyList "sample",		SrcDir$, SAMPLE$
    AddSectionFilesToCopyList "driver",		SrcDir$, SAMPLE$


    CHECK$ = GetSymbolValue("AVICHECKED")
    if CHECK$="TRUE" THEN
	    AddSectionFilesToCopyList "avi", 		SrcDir$, MYSYS$
    END IF

    CHECK$ = GetSymbolValue("DOSCHECKED")
    if CHECK$="TRUE" THEN
   	AddSectionFilesToCopyList "dos", 		SrcDir$, ROOT$
    END IF

    CHECK$ = GetSymbolValue("TUNERCHECKED")
    if CHECK$="TRUE" THEN
        CreateDir TWAIN$	 , cmoNone
        AddSectionFilesToCopyList "twain",		SrcDir$, TWAIN$
        AddSectionFilesToCopyList "twain",		SrcDir$, DRIVER$
    END IF

    'Eintrag f�r INI
    CreateIniKeyValue MakePath(WINDIR$,"system.ini"),"MCI","Overlay","mcism.drv 13",cmoOverwrite
    CreateIniKeyValue MakePath(WINDIR$,"control.ini"),"drivers.desc","mcism.drv","[MCI] ///FAST Screen Machine",cmoOverwrite

    CHECK$ = GetSymbolValue("AVICHECKED")
    if CHECK$="TRUE" THEN
     if INSTWHAT=INST_SMII then
       CreateIniKeyValue MakePath(WINDIR$,"system.ini"),"drivers","msvideo","smiiavi.drv",cmoOverwrite
       CreateIniKeyValue MakePath(WINDIR$,"system.ini"),"drivers","VIDC.YUYV","yuyv.drv",cmoOverwrite
       CreateIniKeyValue MakePath(WINDIR$,"control.ini"),"drivers.desc","smiiavi.drv","///Fast Electronic SM II Video Capture Driver",cmoOverwrite
     else
       CreateIniKeyValue MakePath(WINDIR$,"system.ini"),"drivers","VIDC.YUYV","yuyv.drv",cmoOverwrite
       CreateIniKeyValue MakePath(WINDIR$,"system.ini"),"drivers","msvideo","smavi.drv",cmoOverwrite
       CreateIniKeyValue MakePath(WINDIR$,"control.ini"),"drivers.desc","smavi.drv","///Fast Electronic SM Video Capture Driver",cmoOverwrite
     end if
    END IF

    CopyFilesInCopyList


    if INSTWHAT=INST_SMII then
     CreateProgmanGroup "Screen Machine II", "", cmoNone
     ShowProgmanGroup  "Screen Machine II", 1, cmoNone
     CreateProgmanItem "Screen Machine II","SMCAM II", 	        MakePath(DEST$,"smcamii.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine II","SMTV II", 	        MakePath(DEST$,"smtvii.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine II","SMVIEW II", 	MakePath(DEST$,"smviewii.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine II","FAST Converter", 	MakePath(DEST$,"fastconv.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine II","SMII Apps HELP",	        "winhelp.exe smapps.hlp","",cmoOverwrite
     CreateProgmanItem "Screen Machine II","MCI Programmers HELP","winhelp.exe feMCI.hlp","",cmoOverwrite
     CreateProgmanItem "Screen Machine II","Read Me",	        "write.exe "+MakePath(DEST$,"readme.wri"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine II","SMII Diag",	        MakePath(DEST$,"smiidiag.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine II","SM Color Adjust",   MakePath(DEST$,"smcoladj.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine II","SM AVI Booster",    MakePath(DEST$,"smboost.exe"),"",cmoOverwrite

     CreateProgmanItem "Screen Machine II","Word 2.0 Demo",     MakePath(SAMPLE$,"worddemo.dot"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine II","Visual Basic Demo", MakePath(SAMPLE$,"smvbdemo.mak"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine II","Toolbook Demo",     MakePath(SAMPLE$,"tbk_demo.tbk"),"",cmoOverwrite

     CreateProgmanItem "Screen Machine II","SM II Setup",       MakePath(DEST$,"fevsetup.exe"),"",cmoOverwrite

     'CHECK$ = GetSymbolValue("TUNERCHECKED")
     'if CHECK$="TRUE" THEN
     '  CreateProgmanItem "Screen Machine II","TVTUNER II", 	MakePath(DEST$,"tvtele.exe"),"",cmoOverwrite
     'END IF
    else
     CreateProgmanGroup "Screen Machine IIC", "", cmoNone
     ShowProgmanGroup  "Screen Machine IIC", 1, cmoNone
     CreateProgmanItem "Screen Machine IIC","SMCAM IIC", 	MakePath(DEST$,"smcamiic.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine IIC","SMTV IIC", 	MakePath(DEST$,"smtviic.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine IIC","SMVIEW IIC",       MakePath(DEST$,"smviewc.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine IIC","FAST Converter", 	MakePath(DEST$,"fastconv.exe"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine IIC","SM Apps Help",	"winhelp.exe smapps.hlp","",cmoOverwrite
     CreateProgmanItem "Screen Machine II","MCI Programmers HELP","winhelp.exe feMCI.hlp","",cmoOverwrite
     CreateProgmanItem "Screen Machine IIC","Read Me",	        "write.exe "+MakePath(DEST$,"readmec.wri"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine IIC","SM Color Adjust",	MakePath(DEST$,"smcoladj.exe"),"",cmoOverwrite

     CreateProgmanItem "Screen Machine IIC","Word 2.0 Demo",    MakePath(SAMPLE$,"worddemo.dot"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine IIC","Visual Basic Demo",MakePath(SAMPLE$,"smvbdemo.mak"),"",cmoOverwrite
     CreateProgmanItem "Screen Machine IIC","Toolbook Demo",    MakePath(SAMPLE$,"tbk_demo.tbk"),"",cmoOverwrite

     CreateProgmanItem "Screen Machine IIC","SM IIC Setup",     MakePath(DEST$,"fevsetup.exe"),"",cmoOverwrite

     'CHECK$ = GetSymbolValue("TUNERCHECKED")
     'if CHECK$="TRUE" THEN
     '  CreateProgmanItem "Screen Machine IIC","TVTUNER IIC", 	MakePath(DEST$,"tvtele.exe"),"",cmoOverwrite
     'END IF
    end if
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




