home *** CD-ROM | disk | FTP | other *** search
Wrap
'' DEMORUN.MST '************************************************************************** '* DEMORUN Demo Product Setup '************************************************************************** ''$DEFINE DEBUG ''Define for script development/debugging ''$DEFINE DISKSIZE ''Define if you want to check for disk space '$INCLUDE 'defines.inc' '$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 WORKFILE$ ''Used in SHOWRUN.ZIP test GLOBAL SrcDir$ GLOBAL WinDir$ GLOBAL WinSysDir$ GLOBAL WINdirectory$ GLOBAL MajorVer% GLOBAL MinorVer% GLOBAL WinCheck95$ GLOBAL HasWin95% GLOBAL WinCheckNT$ GLOBAL HasWinNT% GLOBAL NEWDEST$ GLOBAL PRODUCT$ GLOBAL VFW% ''=1 if VFW Run Time previous install GLOBAL PRO% GLOBAL OKWRITE% GLOBAL OKWRITE1% GLOBAL OKWRITE2% GLOBAL OKWRITE3% GLOBAL Install_VFW% GLOBAL WIN_Sys_Write% GLOBAL WantedDiskSize& ''Used for disk size test GLOBAL WantedDataSize& ''Used for disk size test frin INC file 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() Install_VFW% = 1 ''default is to install VFW drivers WIN_Sys_Write% = 1 ''default...can write to WIN SYS directory 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 WinCheck95$ = WinSysDir$+"IOSUBSYS" HasWin95% = DoesDirExist(WinCheck95$) WinCheckNT$ = WinDir$+"SYSTEM32" HasNT% = DoesDirExist(WinCheckNT$) '$IFDEF DEMOQUICK PRODUCT$ = "DEMOQUICK" '$ELSEIFDEF VHELP PRODUCT$ = "VHELP" '$ELSEIFDEF PRODDE PRODUCT$ = "PRODDE" '$ELSEIFDEF CBIQUICK PRODUCT$ = "CBIQUICK" '$ELSEIFDEF CBIPRO PRODUCT$ = "CBIPRO" '$ELSE i% = DoMsgBox("Product type not defined.", "Define product", MB_OK+MB_TASKMODAL+MB_ICONHAND) END '$ENDIF WinSysDir$ = GetWindowsSysDir() ''Avoid the OnWindowsNT() call due to extra space IF (HasNT%) OR ((MajorVer% = 3) AND (MinorVer% = 95)) THEN Install_VFW% = 0 END IF SetBitmap CUIDLL$, LOGO IF (PRODUCT$="DEMOQUICK") OR (PRODUCT$="VHELP") OR (PRODUCT$="PRODDE") THEN SetTitle "Demo/Tutorial Install ... Created with DEMOquick" ELSE SetTitle "LabWindows/CVI Demo Setup" ENDIF szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "DEMORUN.INF" END IF ReadInfFile szInf$ OPTCUR$ = "1" IF (PRODUCT$="DEMOQUICK") OR (PRODUCT$="VHELP") OR (PRODUCT$="PRODDE") THEN DEST$ = "C:\DEMORUN" ELSE DEST$ = "C:\CVIDEMO" ENDIF WELCOME: GETPATH: SetSymbolValue "EditTextIn", DEST$ SetSymbolValue "EditFocus", "END" GETPATHL1: sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$) DEST$ = GetSymbolValue("EditTextOut") SetRestartDir DEST$ 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 WELCOME END IF ''------------------------------------------------------------------ OKWRITE% = IsDirWritable(WinDir$) OKWRITE1% = IsDirWritable(WinSysDir$) OKWRITE2% = IsFileWritable(MakePath(WinDir$, "SYSTEM.INI")) OKWRITE3% = IsFileWritable(MakePath(WinDir$, "WIN.INI")) IF ((OKWRITE% <> 1) OR (OKWRITE1% <> 1) OR (OKWRITE2% <> 1) OR (OKWRITE3% <> 1)) THEN i% = DoMsgBox("Can't access WINDOWS directory...VFW Video drivers will not be installed. Continuing the install.", "Setup Will Continue...", MB_OK+MB_TASKMODAL+MB_ICONINFORMATION) i% = DoMsgBox("Your system administrator will need to load Microsoft Video-For-Windows 1.1a drivers if not already present.", "Video-For-Windows Drivers", MB_OK+MB_TASKMODAL+MB_ICONINFORMATION) Install_VFW% = 0 ''Don't install drivers WIN_Sys_Write% = 0 ENDIF 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("Problem with SEETUP files, 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 ''-------------------------------------------------------------------- ''Check the disk space - TEST THIS ON NETWORK DRIVES----------------- WINDRIVE$ = MID$(DEST$, 1, 1) ''Define a minimum default size WantedDiskSize&=4000000 ''Get the size from create disk '$INCLUDE 'DEMOSIZE.INC' ''Add amount for software overhead WantedDiskSize& = WantedDataSize& + 1600000 DiskSize&=GetFreeSpaceForDrive(WINDRIVE$) IF WantedDiskSize& > DiskSize& THEN i% = DoMsgBox("Not enough free disk space. Please free some space and try again", "Insufficient Disk Space", MB_OK+MB_TASKMODAL+MB_ICONHAND) END END IF ''----------------------------------------------------------------------- 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$ CopyFilesInCopyList ClearCopyList ''Add Video-For-Windows Run-Time files------------------------------ ''See if we can install VFW on system IF Install_VFW% = 1 THEN AddSectionFilesToCopyList "VFW Runtime", SrcDir$, WinSysDir$ AddSectionFilesToCopyList "AVICodecs", SrcDir$, WinSysDir$ AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WinSysDir$ AddSectionFilesToCopyList "Profile", SrcDir$, WinSysDir$ IF OKWRITE% <> 1 THEN i% = DoMsgBox("Can't access WINDOWS directory. Drivers not installed. Install continuing.", "Video-For-Windows Drivers", MB_OK+MB_TASKMODAL+MB_ICONINFORMATION) ClearCopyList ELSE ''Check windrive diskspace SizeReq& = GetCopyListCost ("","", "") IF SizeReq& <> 0 THEN i% = DoMsgBox("The WINDOWS directory does not have enough disk space. VFW Drivers will need to be installed if not already present.", "Can't Install Video-For-Windows Drivers", MB_OK+MB_TASKMODAL+MB_ICONHAND) ClearCopyList Install_VFW% = 0 ELSE CopyFilesInCopyList ENDIF ENDIF ENDIF ''Update WIN.INI and SYSTEM.INI...................................... IF Install_VFW% = 1 THEN CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite PRO% = DoesFileExist(MakePath(WinSysDir$, "PROFDISP.EXE"), femExists) IF (PRO% = 1) THEN Run ("profdisp") ENDIF ENDIF PRO% = DoesFileExist(MakePath(DEST$, "SHOWGO.EXE"), femExists) IF (PRO% = 1) THEN CHDRIVE DEST$ ''This is REQUIRED CHDIR DEST$ WORKFILE$ = MakePath(DEST$, "SHOWGO.EXE") ''i% = DoMsgBox(WORKFILE$, "Running SHOWGO From here", MB_OK+MB_TASKMODAL+MB_ICONINFORMATION) Run (WORKFILE$) ENDIF PRO% = DoesFileExist(MakePath(DEST$, "DEMORUN.EXE"), femExists) IF (PRO% = 1) THEN WORKFILE$ = MakePath(DEST$, "DEMORUN.EXE") + " /UNZIPSHOW" '' Run (WORKFILE$) ENDIF PRO% = DoesFileExist(MakePath(DEST$, "DR_PRO.EXE"), femExists) IF (PRO% = 1) THEN WORKFILE$ = MakePath(DEST$, "DR_PRO.EXE") + " /UNZIPSHOW" '' Run (WORKFILE$) ENDIF PRO% = DoesFileExist(MakePath(DEST$, "CBIRUN.EXE"), femExists) IF (PRO% = 1) THEN WORKFILE$ = MakePath(DEST$, "CBIRUN.EXE") + " /UNZIPSHOW" '' Run (WORKFILE$) ENDIF PRO% = DoesFileExist(MakePath(DEST$, "CR_PRO.EXE"), femExists) IF (PRO% = 1) THEN WORKFILE$ = MakePath(DEST$, "CR_PRO.EXE") + " /UNZIPSHOW" '' Run (WORKFILE$) ENDIF ''Setup DDELINK.INI and DDELINK.EXE in Windows dir if needed ---------------------------------- ''i% = DoMsgBox("Checking for \ ...DEST$ = "+ DEST$, "DDELINK.INI SETUP", MB_OK+MB_TASKMODAL+MB_ICONHAND) IF MID$(DEST$, LEN(DEST$), 1) = "\" THEN NEWDEST$ = MID$(DEST$, 1, LEN(DEST$)-1) ''i% = DoMsgBox("Found \...NEWDEST$ = "+ NEWDEST$ + " DEST$ = "+ DEST$, "DDELINK.INI SETUP", MB_OK+MB_TASKMODAL+MB_ICONHAND) ELSE NEWDEST$ = DEST$ ''i% = DoMsgBox("NO Found \...NEWDEST$ = "+ NEWDEST$ + "DEST$ = "+ DEST$, "DDELINK.INI SETUP", MB_OK+MB_TASKMODAL+MB_ICONHAND) ENDIF WINdirectory$ = GetWindowsDir() IF ((PRODUCT$ = "VHELP") OR (PRODUCT$ = "PRODDE")) THEN ''Make .INI files with default path CreateIniKeyValue MakePath(DEST$,"ddelink.ini"), "DDELINK", "PATH", NEWDEST$, cmoOverwrite IF WIN_Sys_Write% = 1 THEN CreateIniKeyValue MakePath(WINdirectory$,"ddelink.ini"), "DDELINK", "PATH", NEWDEST$, cmoOverwrite CopyFile MakePath(DEST$,"ddelink.exe"), MakePath(WINdirectory$,"ddelink.exe"), cmoNone, 0 ENDIF ELSEIF (PRODUCT$ = "CBIPRO") THEN CreateIniKeyValue MakePath(DEST$,"cbilink.ini"), "CBILINK", "PATH", NEWDEST$, cmoOverwrite IF WIN_Sys_Write% = 1 THEN CreateIniKeyValue MakePath(WINdirectory$,"cbilink.ini"), "CBILINK", "PATH", NEWDEST$, cmoOverwrite CopyFile MakePath(DEST$,"cbilink.exe"), MakePath(WINdirectory$,"cbilink.exe"), cmoNone, 0 ENDIF ENDIF IF (PRODUCT$="DEMOQUICK") OR (PRODUCT$="VHELP") OR (PRODUCT$="PRODDE") THEN CreateProgmanGroup "DEMOrun", WinDir$+"DEMORUN.GRP", cmoNone ShowProgmanGroup "DEMOrun", 1, cmoNone ELSE ENDIF ''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 '$IFDEF DEMOQUICK '$INCLUDE 'DEMOLABL.INC' '$ELSEIFDEF VHELP '$INCLUDE 'DM_LAB_D.INC' '$ELSEIFDEF PRODDE '$INCLUDE 'DM_LAB_D.INC' '$ELSEIFDEF CBIQUICK '$INCLUDE 'DEMOLABL.INC' '$ELSEIFDEF CBIPRO '$INCLUDE 'DM_LAB_D.INC' '$ELSE i% = DoMsgBox("Product type not defined.", "Define product", MB_OK+MB_TASKMODAL+MB_ICONHAND) END '$ENDIF ''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 ClearCopyList ''Do RESTART if needed-------------------------------------------- IF RestartListEmpty() = 0 THEN i% = DoMsgBox("Windows will now be exited and restarted.", "Setup Complete", MB_OK+MB_ICONINFORMATION) err: i% = ExitExecRestart() i% = DoMsgBox("Windows cannot be restarted because MS-DOS applications are active. Close all MS-DOS applications and then click on OK.", "Setup Complete", MB_OK+MB_ICONSTOP) goto err ENDIF 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