home *** CD-ROM | disk | FTP | other *** search
- '**************************************************************************
- '* WinG Setup Program
- '**************************************************************************
-
- '******$DEFINE DEBUG ''Define for script development/debugging
-
- '$INCLUDE 'setupapi.inc'
-
- ''Dialog ID's
- CONST WELCOME = 100
- CONST ASKQUIT = 200
- CONST DESTPATH = 300
- CONST DESTPATH2 = 301
- CONST EXITFAILURE = 400
- CONST EXITQUIT = 600
- CONST EXITSUCCESS = 700
- CONST APPHELP = 900
- CONST CHECK = 2500
- CONST BADPATH = 6400
- CONST RESTART = 1000
-
- CONST LOGO = 1 ''Bitmap ID
-
- GLOBAL FILEDIALOG ''File path dialog ID
- GLOBAL DEST$ ''Default destination directory.
- GLOBAL CHECKSTATES$ ''Dialog list symbol names
- GLOBAL WINDRIVE$ ''Windows drive letter.
- GLOBAL TMPDEST$ ''tmpfile destination
-
- GLOBAL bInstallDVA%
-
- DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
- DECLARE FUNCTION GetRealWindowsSysDir AS STRING
- DECLARE SUB UpdateWinG32 (szOrig$)
-
- '***** DECLARE the setup helper dll functions
- DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
- DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
- DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
- DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
- DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
- DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$)
-
- '***** Lets get to it
- INIT:
- bInstallDVA% = 0
-
- CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
- HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
-
- SetBitmap CUIDLL$, LOGO
- SetTitle "MPEG Player Setup"
-
-
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "mpegplay.inf"
- END IF
- ReadInfFile szInf$
-
- WELCOME:
- sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSE
- GOSUB ASKQUIT
- GOTO WELCOME
- END IF
-
- '***** Find out if they want to install WinG as well as the MPEG Player
-
- ' CHECKSTATES$ = "CheckItemsIn"
- ' AddListItem CHECKSTATES$, "ON"
-
- 'CHECK:
- ' sz$ = UIStartDlg(CUIDLL$, CHECK, "FCheckDlgProc", APPHELP, HELPPROC$)
- ' IF sz$ = "CONTINUE" THEN
- ' UIPop 1
- ' ELSE
- ' GOSUB ASKQUIT
- ' GOTO CHECK
- ' END IF
-
- '***** If they want WinG then we better install it
-
- ' CHECKSTATES$ = "CheckItemsOut"
- ' IF GetListItem(CHECKSTATES$, WING_RUNFILES) = "ON" THEN
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- DEST$ = GetWindowsSysDir
-
- AddSectionFilesToCopyList "wing", SrcDir$, DEST$
-
- '
- ' only use DVA on Windows 3.x
- '
- IF OnWin3x() = 1 THEN
- AddSectionFilesToCopyList "dva", SrcDir$, DEST$
- IF VflatdPresent() = 0 THEN
- CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
- bInstallDVA% = 1
- END IF
- END IF
-
- DEST$ = GetRealWindowsSysDir
-
- AddSectionFilesToCopyList "wing32", SrcDir$, DEST$
- Dest1$ = MakePath(DEST$,"wing32.dll")
- Dest2$ = MakePath(DEST$,"wing32.xxx")
- RenameFilePlease Dest1$,Dest2$
-
- CopyFilesInCopyList
-
- UpdateWinG32 GetRealWindowsSysDir()
-
- ' END IF
-
- '***** Now install the actual mpeg player files
-
- WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
- DEST$ = WINDRIVE$ + ":\WIN32APP\MPEGPLAY"
- FILEDIALOG = DESTPATH2
- GOSUB GETPATH
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- CreateDir DEST$, cmoVital
-
- AddSectionFilesToCopyList "mpegplay", SrcDir$, DEST$
- CopyFilesInCopyList
-
- '***** Make the ProgMan Group then add the icons
-
- proggroup$ = "MPEGPLAY"
- CreateProgmanGroup proggroup$, "", cmoNone
-
- path$ = MakePath( DEST$, "mpegplay.exe" )
- CreateProgmanItem proggroup$, "MPEGPLAY V1.65", path$, "", cmoOverwrite
-
- path$ = MakePath( DEST$, "mpegply.exe" )
- CreateProgmanItem proggroup$, "MPEGPLAY V1.65 NO WING", path$, "", cmoOverwrite
-
- QUIT:
- ON ERROR GOTO ERRQUIT
-
- IF ERR = 0 THEN
- dlg% = EXITSUCCESS
- ELSEIF ERR = STFQUIT THEN
- dlg% = EXITQUIT
- ELSE
- dlg% = EXITFAILURE
- END IF
-
- QUITL1:
- '**** If we installed DVA (ie it was not there before) then suggest that we restart
- if dlg% = EXITSUCCESS AND bInstallDVA% = 1 then
- sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfoDlgProc", APPHELP, HELPPROC$)
- UIPop 1
- IF sz$ = "CONTINUE" THEN
- rc% = RestartWindows
- ENDIF
- endif
-
- sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO QUITL1
- END IF
- UIPop 1
-
- '**** This is where we should end up if everything went OK.
- END
-
- '**** Blast it! Something stuffed up.
- ERRQUIT:
- i% = DoMsgBox("Setup sources were corrupted, email michael@ecel.uwa.edu.au", "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
-
- '**** Prompt the user with a dialog via which they can change the installation path
- '**** for the MPEG player.
- GETPATH:
- SetSymbolValue "EditTextIn", DEST$
- SetSymbolValue "EditFocus", "END"
-
- GETPATHL1:
- sz$ = UIStartDlg(CUIDLL$, FILEDIALOG, "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
-
- RETURN
-
- '**
- '** 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
-
-
- '**** Really....
-
- FUNCTION GetRealWindowsSysDir STATIC AS STRING
- szBuf$ = string$(260, 32)
- cbBuf% = GetRealSystemDir(szBuf$, 260)
- IF cbBuf% = 0 THEN
- ERROR STFERR
- ELSE
- IF cbBuf% > 259 THEN
- res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
- ERROR STFERR
- END IF
- szBuf$ = RTRIM$(szBuf$)
- IF MID$(szBuf$, 1, 1) = "\" THEN
- szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
- ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
- szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
- END IF
- IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
- szBuf$ = szBuf$ + "\"
- END IF
- GetRealWindowsSysDir = szBuf$
- END IF
-
- szBuf$ = ""
- END FUNCTION
-
- SUB UpdateWinG32 (szOrig$) STATIC
- '
- ' Here we check the version ourselves of wing32.dll, since
- ' we can't get version checking for Win32 apps from Win16
- ' Wow a useful comment at last!
- '
- FileNew$ = MakePath(szOrig$, "wing32.dll")
- FileOrig$ = MakePath(szOrig$, "wing32.xxx")
- IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
- RemoveFile FileOrig$, cmoForce
- ELSE
- RemoveFile FileNew$, cmoForce ' get rid of new file
- RenameFilePlease FileOrig$,FileNew$ ' put back old file
- END IF
- END SUB
-
- ' How about a decent setup kit!!
-
-