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
-
- ''File Types
- CONST WING_RUNFILES = 1
- CONST WING_BUILDFILES = 2
-
- ''Bitmap ID
- CONST LOGO = 1
-
- 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 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$)
-
- INIT:
- bInstallDVA% = 0
-
- CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
- HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
-
- SetBitmap CUIDLL$, LOGO
- SetTitle "Microsoft WinG Setup"
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "wing.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
-
-
- CHECKSTATES$ = "CheckItemsIn"
- AddListItem CHECKSTATES$, "ON"
- ' AddListItem CHECKSTATES$, "OFF"
- AddListItem CHECKSTATES$, "ON"
-
- CHECK:
- sz$ = UIStartDlg(CUIDLL$, CHECK, "FCheckDlgProc", APPHELP, HELPPROC$)
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSE
- GOSUB ASKQUIT
- GOTO CHECK
- END IF
-
- CHECKSTATES$ = "CheckItemsOut"
- IF GetListItem(CHECKSTATES$, WING_RUNFILES) = "ON" THEN
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- DEST$ = GetWindowsSysDir
-
- AddSectionFilesToCopyList "runtime", 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
-
- IF GetListItem(CHECKSTATES$, WING_BUILDFILES) = "ON" THEN
- WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
- DEST$ = WINDRIVE$ + ":\WING"
- FILEDIALOG = DESTPATH2
- GOSUB GETPATH
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- CreateDir DEST$, cmoVital
-
- '' add devkit files to destination
-
- ' WinBug.exe taken out for first beta, maybe add it in later, and fix up .lyt file too!
- 'CreateDir MakePath(DEST$,"winbug"), cmoNone
- 'AddSectionFilesToCopyList "winbug", SrcDir$, MakePath(DEST$,"winbug")
-
- CreateDir MakePath(DEST$,"bin"), cmoNone
- AddSectionFilesToCopyList "runtime", SrcDir$, MakePath(DEST$,"bin")
-
- AddSectionFilesToCopyList "wing32", SrcDir$, MakePath(DEST$,"bin")
- Dest1$ = MakePath(DEST$,"bin\wing32.dll")
- Dest2$ = MakePath(DEST$,"bin\wing32.xxx")
- RenameFilePlease Dest1$,Dest2$
-
- AddSectionFilesToCopyList "bin", SrcDir$, MakePath(DEST$,"bin")
- AddSectionFilestoCopyList "readme", SrcDir$, DEST$
- CreateDir MakePath(DEST$,"include"), cmoNone
- AddSectionFilesToCopyList "include", SrcDir$, MakePath(DEST$,"include")
- CreateDir MakePath(DEST$,"help"), cmoNone
- AddSectionFilesToCopyList "help", SrcDir$, MakePath(DEST$,"help")
- CreateDir MakePath(DEST$,"lib"), cmoNone
- AddSectionFilesToCopyList "lib", SrcDir$, MakePath(DEST$,"lib")
-
- GOSUB ADDSAMPLEFILESTOLIST
- CopyFilesInCopyList
- UpdateWinG32 MakePath( DEST$, "bin" )
- GOSUB ADDGROUP
- END IF
-
- QUIT:
- ON ERROR GOTO ERRQUIT
-
- IF ERR = 0 THEN
- dlg% = EXITSUCCESS
- ELSEIF ERR = STFQUIT THEN
- dlg% = EXITQUIT
- ELSE
- dlg% = EXITFAILURE
- END IF
-
- QUITL1:
- 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
-
-
- END
-
- ERRQUIT:
- i% = DoMsgBox("Setup sources were corrupted, call 555-1212!", "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
-
-
- 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 CHECK
- ELSE
- GOSUB ASKQUIT
- GOTO GETPATH
- END IF
-
- RETURN
-
- ADDSAMPLEFILESTOLIST:
- SamplePath$ = MakePath(DEST$,"samples")
- CreateDir SamplePath$, cmoNone
-
- ' Add doggie example program
-
- sample$ = "doggie"
-
- CreateDir MakePath(SamplePath$,sample$), cmoNone
- AddSectionFilesToCopyList sample$, SrcDir$, MakePath(SamplePath$,sample$)
-
- ' Add cube example program
-
- sample$ = "cube"
-
- CreateDir MakePath(SamplePath$,sample$), cmoNone
- AddSectionFilesToCopyList sample$, SrcDir$, MakePath(SamplePath$,sample$)
-
- ' Add utils example code
-
- sample$ = "utils"
-
- CreateDir MakePath(SamplePath$,sample$), cmoNone
- AddSectionFilesToCopyList sample$, SrcDir$, MakePath(SamplePath$,sample$)
-
- ' Add timewing example program
-
- sample$ = "timewing"
-
- CreateDir MakePath(SamplePath$,sample$), cmoNone
- AddSectionFilesToCopyList sample$, SrcDir$, MakePath(SamplePath$,sample$)
-
- ' Add halftone example program
-
- sample$ = "halftone"
-
- CreateDir MakePath(SamplePath$,sample$), cmoNone
- AddSectionFilesToCopyList sample$, SrcDir$, MakePath(SamplePath$,sample$)
-
- ' Add palanim example program
-
- sample$ = "palanim"
-
- CreateDir MakePath(SamplePath$,sample$), cmoNone
- AddSectionFilesToCopyList sample$, SrcDir$, MakePath(SamplePath$,sample$)
-
- ' Other sample programs go here
-
- RETURN
-
- ADDGROUP:
- SamplePath$ = MakePath(DEST$,"samples")
- proggroup$ = "WinG SDK"
- CreateProgmanGroup proggroup$, "", cmoNone
-
- path$ = MakePath( DEST$, "help\wing.hlp" )
- CreateProgmanItem proggroup$, "WinG Help", "winhelp "+path$, "", cmoOverwrite
-
- path$ = MakePath( DEST$, "bin\wingbug.exe" )
- CreateProgmanItem proggroup$, "WinG Bug Reporting Tool", path$, "", cmoOverwrite
-
- path$ = MakePath( SamplePath$,"doggie\doggie.exe")
- CreateProgmanItem proggroup$, "Doggie", path$, "", cmoOverwrite
-
- path$ = MakePath( SamplePath$,"cube\cube.exe")
- CreateProgmanItem proggroup$, "Cube",path$,"", cmoOverwrite
-
- path$ = MakePath( SamplePath$,"timewing\timewing.exe")
- CreateProgmanItem proggroup$, "Time WinG",path$,"", cmoOverwrite
-
- path$ = MakePath( SamplePath$,"halftone\halftone.exe")
- CreateProgmanItem proggroup$, "Halftone",path$,"", cmoOverwrite
-
- path$ = MakePath( SamplePath$,"palanim\palanim.exe")
- CreateProgmanItem proggroup$, "Palette Animation",path$,"", cmoOverwrite
-
- ' Other sample programs get added here
-
- 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
-
-
- 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
- '
- 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
-