home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1995-09-27 | 62.0 KB | 1,622 lines
'** '* Vermeer Technologies Setup '** ''$DEFINE DEBUG '$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' ''Dialog ID's CONST WELCOME = 100 CONST ASKQUIT = 200 CONST ASKWIN32OLDER = 250 CONST ASKWIN32NONE = 260 CONST DESTPATH = 300 CONST DESTPATH2 = 301 CONST FILESLOW = 302 CONST BADSHARE = 303 CONST BADCONTENT = 304 CONST BADNT = 305 CONST EXITFAILURE = 400 CONST EXITQUIT = 600 CONST EXITSUCCESS = 700 CONST EXITSUCCESS_NOWIN32 = 710 CONST OPTIONS = 800 CONST APPHELP = 900 CONST CUSTINST = 6200 CONST TOOBIG = 6300 CONST BADPATH = 6400 CONST HELPWELCOME = 1000 CONST VERPATH = 1100 CONST EXITFAILNOTWIN31 = 1200 CONST EXITFAILNOTENH = 1300 CONST EXITFAILNOTPAGING = 1325 CONST EXITFAILNOTINTEL = 1350 CONST EXITFAILRUNAPP = 1360 CONST FREECELLINST = 1400 CONST FREECELLINSTNOWIN32S = 1450 CONST FREECELLPATH = 1500 CONST HELPFREECELL = 1600 ''Bitmap ID CONST LOGO = 1 ''File Types CONST APPFILES = 1 ''Vermeer Files CONST ALISAFILES = 2 ''PWS Files CONST PWSDOCFILES = 3 ''PWS Doc Files CONST EXTENDERFILES = 4 CONST EXT_MINI = 5 ''GetTempFileName flags CONST TF_FORCEDRIVE = 128 GLOBAL DESTWIN$ ''Windows directory. GLOBAL DESTSYS$ ''Windows\System directory. GLOBAL DEST32S$ ''Windows\System\Win32s directory GLOBAL OP_SYS$ ''Indicator of system we're installing on GLOBAL OLE_PROTECT% ''Indicates whether ole2 dlls were protected from being '' copied. GLOBAL OLE_OLEBOOT% GLOBAL VERNUM$ '' Win32s Version Number (i.e., for v1.25 VERNUM$="125" GLOBAL VERMEERINSTALLED% GLOBAL DEST$ ''Default destination directory. GLOBAL VVERMEER$ ''Vermeer root directory GLOBAL VBIN$ ''Vermeer \bin directory GLOBAL VWEBS$ ''Vermeer \webs directory GLOBAL VPAGES$ ''Vermeer \pages directory GLOBAL ALISADEST$ ''Vermeer Alisa directory GLOBAL CONTENTDEST$ ''Vermeer Content directory GLOBAL WINDRIVE$ ''Windows drive letter. ''CustInst list symbol names GLOBAL APPNEEDS$ ''List costs per drive GLOBAL PWSDOCNEEDS$ GLOBAL ALISANEEDS$ GLOBAL EXTENDERNEEDS$ GLOBAL EXT_MINI_NEEDS$ GLOBAL EXTRACOSTS$ ''List of extra costs to add per drive GLOBAL BIGLIST$ ''List of option files cost calc results (boolean) ''Dialog list symbol names GLOBAL CHECKSTATES$ GLOBAL STATUSTEXT$ GLOBAL DRIVETEXT$ GLOBAL CONTENTEXISTS$ DECLARE SUB PWSConfigUpdate DECLARE SUB AddOptFilesToCopyList (ftype%) DECLARE SUB RecalcOptFiles (ftype%) DECLARE SUB RecalcPath DECLARE SUB SetDriveStatus DECLARE SUB CreateVermeerDirectoryStructure DECLARE SUB SetVermeerDirectoryStructure DECLARE SUB CreatePWSDirStructure 'PWS = Personal Web Server DECLARE SUB CopyPWSFileSections DECLARE SUB CreatePWSDOCDirStructure DECLARE SUB CopyPWSDOCFileSections DECLARE SUB Install_Vermeer DECLARE FUNCTION MakePath(szDir$, szFile$) AS STRING DECLARE FUNCTION AdjustCost(drv%) AS LONG DECLARE FUNCTION ValidateDir(Path$, State%) AS STRING DECLARE SUB Install_With_Win32s(OLEONLY%, OLE2_32%, OLE2_16%, OLE2AUTO_16%, OLE16RUNAPP%) DECLARE SUB UpdateSystemIni DECLARE SUB RecoverFromCopy(szFileName$) DECLARE FUNCTION RebootSystem(OLEONLY%) AS INTEGER DECLARE FUNCTION MakeSystemIni LIB "INIUPD.DLL" (arg1$, arg2$) AS INTEGER DECLARE FUNCTION RestartWindows LIB "INIUPD.DLL" AS INTEGER DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER DECLARE FUNCTION PagingEnabled LIB "INIUPD.DLL" AS INTEGER DECLARE FUNCTION ShareEnabled LIB "INIUPD.DLL" AS INTEGER DECLARE FUNCTION IsWin32sLoaded LIB "INIUPD.DLL" (arg1$) AS INTEGER DECLARE FUNCTION IsRunningApp LIB "INIUPD.DLL" AS INTEGER DECLARE FUNCTION SetCuiFlags LIB "MSCUISTF.DLL" (arg1%, arg2%) AS INTEGER DECLARE FUNCTION SearchForShare LIB "MSCUISTF.DLL" AS INTEGER DECLARE FUNCTION VermeerUpdateRegistry LIB "MSCUISTF.DLL" (arg1$) AS INTEGER DECLARE FUNCTION FindDocumentRoot LIB "MSCUISTF.DLL" (arg1$, arg2$) AS INTEGER DECLARE SUB Unix_slashTo_dos LIB "MSCUISTF.DLL" (arg1$) DECLARE FUNCTION ExitWindowsExec LIB "USER.EXE" (arg1$, arg2$) AS INTEGER DECLARE FUNCTION GetModuleHandle LIB "KRNL386.EXE" (arg1$) AS INTEGER DECLARE FUNCTION LoadLibrary LIB "KRNL386.EXE" (arg1$) AS INTEGER DECLARE SUB FreeLibrary LIB "KRNL386.EXE" (arg1%) DECLARE FUNCTION SetErrorMode LIB "KRNL386.EXE" (arg1%) AS INTEGER DECLARE FUNCTION GetTempFileName LIB "KRNL386.EXE" (drive%, prefix$, u%, filename$) AS INTEGER DECLARE SUB WriteLine LIB "INIUPD.DLL" (filename$, text$) DECLARE FUNCTION GetTempFileAt(szDir$, szPrefix$) as string INIT: SetAbout "FrontPage 1.00.0", "Copyright(C) 1995, Vermeer Technologies, Inc." CUIDLL$ = "mscuistf.dll" ''user interface dll HELPPROC$ = "FHelpDlgProc" ''Help dialog proc szOldVer$ ="1.00.000 " '' Space for version WIN32ENABLED% = 0 VERMEERINSTALLED% = 0 OLEONLY% = 0 OLE2_16% = 0 OLE2AUTO_16% = 0 OLE16RUNAPP% = 0 OLE_PROTECT% = 0 OLE_OLEBOOT% = 0 ON ERROR GOTO ERRNORMAL SetBitmap CUIDLL$, LOGO SetTitle "Vermeer FrontPage Setup" SrcDir$ = GetSymbolValue("STF_SRCDIR") szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "FP.INF" END IF ReadInfFile szInf$ WIN32SVER$ = MID$(GetSectionKeyVersion("WindowsSystem", "win32s16"), 1, 4) VERNUM$ = MID$(WIN32SVER$, 1, 1) + MID$(WIN32SVER$, 3 , 2) DESTWIN$ = GetWindowsDir() DESTSYS$ = GetWindowsSysDir() DEST32S$ = DESTSYS + "WIN32S\" WINDRIVE$ = MID$(GetWindowsDir, 1, 1) DEST$ = WINDRIVE$ + ":\VERMEER" VVERMEER$ = DEST$ CONTENTDEST$ = WINDRIVE$ + ":\CONTENT" OpenLogFile MakePath(DESTWIN$, "vinstall.log"), 1 '0=overwrite, 1=append WriteToLogFile "FP-Read .inf file successfully." ''CustInst list symbols CHECKSTATES$ = "CheckItemsState" STATUSTEXT$ = "StatusItemsText" DRIVETEXT$ = "DriveStatusText" CONTENTEXISTS$ = "CheckContentExists" FOR i% = 1 TO 4 STEP 1 AddListItem CHECKSTATES$, "ON" NEXT i% FOR i% = 1 TO 7 STEP 1 AddListItem STATUSTEXT$, "" NEXT i% FOR i% = 1 TO 9 STEP 1 AddListItem DRIVETEXT$, "" NEXT i% FOR i% = 1 TO 1 STEP 1 AddListItem CONTENTEXISTS$, "NO" NEXT i% ''Disk cost list symbols APPNEEDS$ = "AppNeeds" PWSDOCNEEDS$ = "PWSDocNeeds" ALISANEEDS$ = "AlisaNeeds" EXTENDERNEEDS$ = "ExtenderNeeds" EXT_MINI_NEEDS$ = "Ext_mini_Needs" EXTRACOSTS$ = "ExtraCosts" BIGLIST$ = "BigList" FOR i% = 1 TO 5 STEP 1 AddListItem BIGLIST$, "" NEXT i% FOR i% = 1 TO 26 STEP 1 AddListItem EXTRACOSTS$, "0" NEXT i% CHECK: '' Can not run on versions less than 3.10. IF GetWindowsMajorVersion < 3 THEN WriteToLogFile "FP-FAIL: Windows version < 3.10, exiting." ExitCode% = EXITFAILNOTWIN31 GOTO QUIT END IF IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 10 THEN WriteToLogFile "FP-FAIL: Windows version < 3.10, exiting." ExitCode% = EXITFAILNOTWIN31 GOTO QUIT END IF '' Check that we are not running on Chicago, including pre-released '' Chicago versions. IF GetWindowsMajorVersion * 100 + GetWindowsMinorVersion > 350 THEN OP_SYS$ = "win95" WriteToLogFile "FP-Operating System: Windows 95." ExitCode% = EXITSUCCESS WIN32ENABLED% = 1 GOTO WELCOME END IF IF GetWindowsMode < 2 THEN IF OnWindowsNT() THEN WriteToLogFile "FP-FAIL: NT Risc machine, exiting." ExitCode% = EXITFAILNOTINTEL '' Running on Windows NT (on RISC) ELSE WriteToLogFile "FP-FAIL: Standard Mode Windows, exiting." ExitCode% = EXITFAILNOTENH '' Standard Mode Windows END IF GOTO QUIT END IF IF OnWindowsNT() THEN OP_SYS$ = "winnt" IF (DoesFileExist( DESTWIN$ + "system32\riched32.dll", femExists) = 0) THEN WINNT: sz$ = UIStartDlg(CUIDLL$, BADNT, "FCustInstDlgProc", 0, "") IF sz$ = "REACTIVATE" THEN UIPop 1 GOTO WINNT ELSEIF sz$ = "EXIT" THEN UIPop 1 GOSUB ASKQUIT ELSE UIPop 1 ENDIF END IF WriteToLogFile "FP-Operating System: Win NT." ExitCode% = EXITSUCCESS WIN32ENABLED% = 1 GOTO WELCOME END IF ExitCode% = EXITSUCCESS if IsRunningApp() <> 0 THEN WriteToLogFile "FP-FAIL: 32bit App running, exiting." ExitCode% = EXITFAILRUNAPP GOTO QUIT END IF OP_SYS$ = "win32" '' Get version of Win32s to be installed from version info in INF file szNewVer$ = GetSectionKeyVersion("WindowsSystem", "win32s16") WriteToLogFile "FP-Win32s version to be installed: " + szNewVer$ IF DoesFileExist( DESTSYS$ + "win32s16.dll", femExists ) THEN 'a version of Win32s is installed '' Get version of Win32s installed from windows\system directory szOldVer$ = GetVersionOfFile(DESTSYS$ + "win32s16.dll") WriteToLogFile "FP-Win32s version already installed: " + szOldVer$ '$IFDEF DEBUG i% = DoMsgBox("Win32s OldVer:"+szOldVer$+" NewVer:"+szNewVer$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) '$ENDIF ''DEBUG IF szNewVer > szOldVer THEN WriteToLogFile "FP-Have newer version of Win32s, installing it." WIN32OLD: sz$ = UIStartDlg(CUIDLL$, ASKWIN32OLDER, "FQuitDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPop 1 UIPopAll ERROR STFQUIT ELSEIF sz$ = "REACTIVATE" THEN GOTO WIN32OLD ELSE UIPop 1 END IF ELSE WriteToLogFile "FP-Have version of Win32s <= installed version, NOT installing it." ExitCode% = EXITSUCCESS WIN32ENABLED% = 1 GOTO WELCOME END IF ELSE 'No Win32s detected WriteToLogFile "FP-No version of Win32s was detected." WIN32NONE: sz$ = UIStartDlg(CUIDLL$, ASKWIN32NONE, "FQuitDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPop 1 UIPopAll ERROR STFQUIT ELSEIF sz$ = "REACTIVATE" THEN GOTO WIN32NONE ELSE UIPop 1 END IF END IF '' See if OLE included. OLEINCLUDED% = DoesFileExist( GetSymbolValue("STF_SRCDIR") + "OLE2THK.DL_", femExists ) IF OLEINCLUDED% = 1 THEN '' See whether one of the OLE 16 bit components is loaded. IF GetModulehandle("compobj") <> 0 THEN OLE16RUNAPP% = 1 GOTO GetOleVersion END IF IF GetModuleHandle("ole2") <> 0 THEN OLE16RUNAPP% = 1 GOTO GetOleVersion END IF IF GetModuleHandle("ole2prox") <> 0 THEN OLE16RUNAPP% = 1 GOTO GetOleVersion END IF IF GetModuleHandle("ole2conv") <> 0 THEN OLE16RUNAPP% = 1 GOTO GetOleVersion END IF IF GetModuleHandle("storage") <> 0 THEN OLE16RUNAPP% = 1 GOTO GetOleVersion END IF IF GetModuleHandle("ole2nls") <> 0 THEN OLE16RUNAPP% = 1 GOTO GetOleVersion END IF IF GetModuleHandle("ole2disp") <> 0 THEN OLE16RUNAPP% = 1 GOTO GetOleVersion END IF IF GetModuleHandle("typelib") <> 0 THEN OLE16RUNAPP% = 1 GOTO GetOleVersion END IF GetOleVersion: szOleNewVer$ = GetSectionKeyVersion("OleWindowsSystemWin32s", "ole2thk") '' Get version of currently installed OLE32 from version info of '' ole2thk file szOleOldVer$ = GetVersionOfFile( DESTSYS$ + "WIN32S\OLE2THK.DLL" ) szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "COMPOBJ.DLL" ) szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "compobj") IF (szOle16NewVer$ > szOle16OldVer$) THEN OLE2_16% = 1 END IF szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2.DLL" ) szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2") IF (szOle16NewVer$ > szOle16OldVer$) THEN OLE2_16% = 1 END IF szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2PROX.DLL" ) szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2prox") IF (szOle16NewVer$ > szOle16OldVer$) THEN OLE2_16% = 1 END IF szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "STORAGE.DLL" ) szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "storage") IF (szOle16NewVer$ > szOle16OldVer$) THEN OLE2_16% = 1 END IF szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2CONV.DLL" ) szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2conv") IF (szOle16NewVer$ > szOle16OldVer$) THEN OLE2_16% = 1 END IF szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2NLS.DLL" ) szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2nls") IF (szOle16NewVer$ > szOle16OldVer$) THEN OLE2AUTO_16% = 1 END IF szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2DISP.DLL" ) szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2disp") IF (szOle16NewVer$ > szOle16OldVer$) THEN OLE2AUTO_16% = 1 END IF szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "TYPELIB.DLL" ) szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "typelib") IF (szOle16NewVer$ > szOle16OldVer$) THEN OLE2AUTO_16% = 1 END IF END IF OLE2_32% = OLEINCLUDED% '' Check if Win32s is partially installed sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "Win32s", "Setup") '' If WIN32S.INI specifies Win32s Setup=0, then force complete Win32s file overwrite IF sz$ = "0" THEN WriteToLogFile "FP-User has partially installed Win32s, reinstall." GOTO WELCOME END IF '' If WIN32S.INI is missing, try and reinstall Win32s files/recreate WIN32S.INI IF sz$ <> "1" THEN WriteToLogFile "FP-Win32s.ini is missing, reinstall." GOTO WELCOME END IF '' If Win32s is already installed, get running version number '' Revisit this section of code. i% = DoesFileExist( DESTSYS$ + "W32SYS.DLL", femExists ) IF i% = 1 THEN i% = IsWin32sLoaded( szOldVer$ ) ENDIF IF i% = 0 THEN GOTO WELCOME END IF IF szNewVer$ > szOldVer$ THEN GOTO WELCOME END IF IF OLEINCLUDED% = 1 THEN OLE2_32% = 0 IF (szNewVer$ = szOldVer$) OR (szNewVer$ < szOldVer$) THEN '' Compare OLE32 version and versions of each of OLE16 libraries. sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "OLE", "Setup") '' If WIN32S.INI specifies OLE2 Setup=0, then force OLE2 file overwrite IF ((sz$ <> "1") OR (szOleNewVer$ > szOleOldVer$)) THEN OLEONLY% = 1 OLE2_32% = 1 GOTO WELCOME END IF IF OLE2_16% OR OLE2AUTO_16 THEN OLEONLY% = 1 GOTO WELCOME END IF END IF END IF WIN32ENABLED% = 1 WELCOME: Temp$ = GetIniKeyString(DESTWIN$+"vermeer.ini", "FrontPage", "FrontPageRoot") Temp$ = ValidateDir(Temp$, 0) IF Temp$ <> "" THEN VVERMEER$ = Temp$ DEST$ = Temp$ END IF Temp$ = GetIniKeyString(DESTWIN$+"vermeer.ini", "Port 80", "serviceContentDir") Temp$ = ValidateDir(Temp$, 0) IF Temp$ <> "" THEN IF ((LEN(DEST$) < 18) AND (OP_SYS="win32")) THEN CONTENTDEST$ = Temp$ ReplaceListItem CONTENTEXISTS$, 1, "YES" ELSEIF ((OP_SYS="winnt") OR (OP_SYS="win95")) THEN CONTENTDEST$ = Temp$ ReplaceListItem CONTENTEXISTS$, 1, "YES" ENDIF END IF ReplaceListItem STATUSTEXT$, 4, VVERMEER$ ReplaceListItem STATUSTEXT$, 7, CONTENTDEST$ SetVermeerDirectoryStructure i% = SetCuiFlags(OLEONLY%, OLE16RUNAPP%) WriteToLogFile "FP-Welcome dialog." sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN UIPop 1 ELSE UIPop 1 GOSUB ASKQUIT GOTO WELCOME END IF CUSTINST: WriteToLogFile "FP-Displaying FrontPage/Alisa dialog." RecalcPath SetDriveStatus sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN IF ((GetListItem(CHECKSTATES$, APPFILES) <> "ON") AND (GetListItem(CHECKSTATES$, ALISAFILES) <> "ON") AND (GetListItem(CHECKSTATES$, EXTENDERFILES) <> "ON")) THEN i% = DoMsgBox("Please select a FrontPage component for installation.", "Selection Required", MB_OK+MB_TASKMODAL+MB_ICONHAND) GOTO CUSTINST END IF ''Install only if it will fit. FOR i% = 1 TO 5 STEP 1 IF GetListItem(BIGLIST$, i%) <> "" THEN GOSUB TOOBIG GOTO CUSTINST END IF NEXT i% UIPop 1 GOTO GETWIN32SPATH ELSEIF sz$ = "PATH" THEN Temp$ = "FPPath" GOTO GETPATH ELSEIF sz$ = "CHK1" THEN RecalcOptFiles APPFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK2" THEN RecalcOptFiles ALISAFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK4" THEN RecalcOptFiles EXTENDERFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "BTN1" THEN 'BTN1 = PWS options GOTO PWSOPTIONS ELSEIF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus GOTO CUSTINST ELSE GOSUB ASKQUIT GOTO CUSTINST END IF GETPATH: IF Temp$ = "FPPath" THEN DEST$ = VVERMEER$ ELSE DEST$ = CONTENTDEST$ END IF SetSymbolValue "EditTextIn", DEST$ SetSymbolValue "EditFocus", "END" GETPATHL1: WriteToLogFile "FP-Changing install directory." IF Temp$ = "FPPath" THEN WriteToLogFile "FP-Changing install path of FrontPage to:" sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$) ELSE WriteToLogFile "FP-Changing install path of PWS to:" sz$ = UIStartDlg(CUIDLL$, DESTPATH2, "FEditDlgProc", APPHELP, HELPPROC$) END IF IF sz$ = "CONTINUE" THEN olddest$ = DEST$ DEST$ = GetSymbolValue("EditTextOut") ''Validate new path. IF IsDirWritable(ValidateDir(DEST$,1)) = 0 THEN DEST$ = olddest$ UIPop 1 GOSUB BADPATH GOTO GETPATHL1 END IF UIPop 1 ''Recalc if path changed. IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN RecalcPath SetDriveStatus END IF olddest$ = "" IF Temp$ = "FPPath" THEN VVERMEER$ = DEST$ SetVermeerDirectoryStructure ''Truncate display if too long. IF LEN(DEST$) > 23 THEN ReplaceListItem STATUSTEXT$, 4, MID$(DEST$, 1, 23)+"..." ELSE ReplaceListItem STATUSTEXT$, 4, DEST$ END IF WriteToLogFile "FP-New Directory = '" + VVERMEEER$+ "'" GOTO CUSTINST ELSE 'REVIEW CONTENTDEST$ = DEST$ IF ((LEN(DEST$) > 18) AND (OP_SYS="win32")) THEN i% = DoMsgBox("Content Path must be less than 18 characters.", "Vermeer Setup", MB_OK+MB_TASKMODAL+MB_ICONHAND) GOTO GETPATHL1 ELSE ReplaceListItem STATUSTEXT$, 7, DEST$ END IF WriteToLogFile "FP-New Directory = '" + CONTENTDEST$+ "'" GOTO PWSOPTIONS END IF ELSEIF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus UIPop 1 GOTO GETPATHL1 ELSEIF sz$ = "EXIT" THEN UIPop 1 GOSUB ASKQUIT GOTO GETPATHL1 ELSE UIPop 1 IF Temp$ = "FPPath" THEN WriteToLogFile "FP-New Directory = '" + VVERMEEER$+ "'" GOTO CUSTINST ELSE WriteToLogFile "FP-New Directory = '" + CONTENTDEST$+ "'" GOTO PWSOPTIONS END IF END IF PWSOPTIONS: sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FCustInstDlgProc2", APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN IF sz$ = "CHK3" THEN 'REVIEW RecalcOptFiles PWSDOCFILES SetDriveStatus END IF UIPop 1 GOTO CUSTINST ELSEIF sz$ = "PATH" THEN Temp$="Content_Path" GOTO GETPATH ELSEIF sz$ = "CHK3" THEN GOTO PWSOPTIONS ELSEIF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus GOTO PWSOPTIONS ELSEIF sz$ = "EXIT" THEN GOSUB ASKQUIT GOTO PWSOPTIONS ELSE UIPop 1 GOTO CUSTINST END IF GETWIN32SPATH: IF WIN32ENABLED% = 1 THEN GOTO INSTALL END IF WriteToLogFile "FP-Verifying Win32s directory with user." IF PagingEnabled() = 0 THEN i% = DoMsgBox("Use the Control Panel 386 Enhanced icon and configure Windows using the Virtual Memory option.", "Win32s requires Virtual Memory", MB_TASKMODAL+MB_ICONHAND+MB_OK) ExitCode% = EXITFAILURE '' Enhanced mode but not paging WriteToLogFile "FP-Windows using enhanced mode but not paging." GOTO QUIT END IF IF ShareEnabled() = 0 THEN i% = DoMsgBox( "File-sharing must be enabled. Run SHARE.EXE before starting Windows or add SHARE.EXE to your AUTOEXEC.BAT file.", "Win32s Setup: SHARE.EXE is not loaded", MB_TASKMODAL+MB_ICONEXCLAMATION+MB_OK) END IF SetSymbolValue "EditTextIn", DESTSYS$ SetSymbolValue "EditFocus", "END" GETPATHL1_W32: sz$ = UIStartDlg(CUIDLL$, VERPATH, "FDispDlgProc", HELPWELCOME, HELPPROC$) IF sz$ = "CONTINUE" THEN IF IsDirWritable(DESTSYS$) = 0 THEN GOSUB BADPATH GOTO GETPATHL1_W32 END IF UIPop 1 ELSEIF sz$ = "REACTIVATE" THEN UIPop 1 GOTO GETPATHL1_W32 ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO WELCOME ELSE UIPop 1 GOSUB ASKQUIT GOTO GETPATHL1_W32 END IF COPYFILES: IF OLEONLY% = 0 THEN CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite END IF IF OLE2_32% = 1 THEN CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Setup", "0", cmoOverwrite END IF '' Indicate Win32s install failure until all files known copied. ExitCode% = EXITFAILURE ERR = 0 CreateDir DEST32S$, cmoNone Install_With_Win32s OLEONLY%, OLE2_32%, OLE2_16%, OLE2AUTO_16%, OLE16RUNAPP% UpdateSystemIni '' Terminate if unhandled fatal error IF ERR <> 0 THEN WriteToLogFile "FP-Unhandled fatal error in install with win32s, exiting." GOTO QUIT END IF IF OLEONLY% = 0 THEN CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "1", cmoOverwrite CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Version", szNewVer$, cmoOverwrite CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Nls", "AnsiCP", "1252", cmoOverwrite END IF IF OLE2_32% = 1 THEN CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Setup", "1", cmoOverwrite CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Version", szOleNewVer, cmoOverwrite END IF '' Indicate Win32s correctly copied and installed. ExitCode% = EXITSUCCESS INSTALL: IF VERMEERINSTALLED = 0 THEN ''ie. vermeer not installed with Win32s (W32 not needed) WriteToLogFile "FP-Installing FrontPage, no Win32." ClearCopyList Install_Vermeer CopyFilesInCopyList END IF IF ERR = STFQUIT THEN GOTO QUIT END IF CreateIniKeyValue DESTWIN$ + "Vermeer.ini", "FrontPage", "FrontPageRoot", VVERMEER$, cmoOverwrite IF ((GetConfigNumFiles < 40) AND (OP_SYS="win32")) THEN sz$ = UIStartDlg(CUIDLL$, FILESLOW, "FInfo0DlgProc", 0, "") UIPop 1 END IF IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN WriteToLogFile "FP-Creating FrontPage Program group." CreateProgmanGroup "Vermeer", "", cmoNone CreateProgmanItem "Vermeer", "FrontPage Explorer", MakePath(VBIN$,"fpexplor.exe"), "", cmoOverwrite CreateProgmanItem "Vermeer", "FrontPage Editor", MakePath(VBIN$,"fpeditor.exe"), "", cmoOverwrite CreateIniKeyValue DESTWIN$ + "Vermeer.ini", "FrontPage", "FrontPageBin", VBIN$, cmoOverwrite CreateIniKeyValue DESTWIN$ + "Vermeer.ini", "FrontPage", "WebWizardsDir", VWEBS$, cmoOverwrite CreateIniKeyValue DESTWIN$ + "Vermeer.ini", "FrontPage", "PageWizardsDir", VPAGES$, cmoOverwrite i% = VermeerUpdateRegistry(VVERMEER$) END IF IF GetListItem(CHECKSTATES$, ALISAFILES) = "ON" THEN PWSConfigUpdate WriteToLogFile "FP-Calling Alisedit." Temp$ = ALISADEST$ + "\CONF\ALISEDIT.EXE " + ALISADEST$ + " " + CONTENTDEST$ + " " + DEST$ RUN Temp$ WriteToLogFile "FP-Creating PWS program item." CreateProgmanGroup "Vermeer", "", cmoNone IF OP_SYS$ = "win32" THEN Temp$ = "httpd.exe -d " + ALISADEST$ + " -l " + ALISADEST$ + "\vt10l16.dll" ELSE Temp$ = "vhttpd32.exe -d " + ALISADEST$ END IF CreateProgmanItem "Vermeer", "Personal Web Server", MakePath(ALISADEST$, Temp$), "", cmoOverwrite IF OP_SYS$ = "win32" THEN IF ShareEnabled() = 0 THEN sz$ = UIStartDlg(CUIDLL$, BADSHARE, "FInfo0DlgProc", 0, "") UIPop 1 ELSE Temp$ = GetVersionOfFile(DESTSYS$+"ver.dll") IF Temp$ < "3.11" THEN IF SearchForShare() = 0 THEN sz$ = UIStartDlg(CUIDLL$, BADSHARE, "FInfo0DlgProc", 0, "") UIPop 1 END IF END IF END IF END IF 'Setup default service IF WIN32ENABLED% = 1 THEN WriteToLogFile "FP-Setting up default service." Temp$ = VBIN$ + "\fpsrvadm.exe -t vermeer -c " + CONTENTDEST$ RUN Temp$ ELSE WriteToLogFile "FP-Creating icon for fpsrvadm.exe." CreateIniKeyValue DESTWIN$ + "win.ini", "FrontPage Server Admin", "CommandLine", "-t vermeer -c " + CONTENTDEST$, cmoOverwrite Temp$ = GetIniKeyString(DESTWIN$ + "win.ini", "windows", "run") CreateIniKeyValue DESTWIN$ + "win.ini", "windows", "run", Temp$+" "+VBIN$ + "\fpsrvadm.exe", cmoOverwrite END IF END IF IF ((GetListItem(CHECKSTATES$, ALISAFILES) = "ON") OR (GetListItem(CHECKSTATES$, EXTENDERFILES) = "ON")) THEN CreateProgmanItem "Vermeer", "Server Administrator", MakePath(VBIN$, "fpsrvadm.exe"), "", cmoOverwrite END IF IF ((GetListItem(CHECKSTATES$, ALISAFILES) = "ON") OR (GetListItem(CHECKSTATES$, EXTENDERFILES) = "ON") OR (GetListItem(CHECKSTATES$, APPFILES) = "ON")) THEN CreateProgmanItem "Vermeer", "Check Installation", MakePath(VBIN$,"fpchk.exe"), "", cmoOverwrite CreateProgmanItem "Vermeer", "FrontPage TCP/IP Test", MakePath(VBIN$,"tcptest.exe"), "", cmoOverwrite END IF QUIT: '' error handler for final message box routines ON ERROR GOTO ERRQUIT IF ERR = 0 THEN dlg% = ExitCode% ELSEIF ERR = STFQUIT THEN IF (OLE_PROTECT% = 1) THEN '' Free all previously loaded libraries FreeLibrary GetModuleHandle("compobj") FreeLibrary GetModuleHandle("ole2") FreeLibrary GetModuleHandle("ole2prox") FreeLibrary GetModuleHandle("ole2conv") FreeLibrary GetModuleHandle("storage") FreeLibrary GetModuleHandle("ole2nls") FreeLibrary GetModuleHandle("ole2disp") FreeLibrary GetModuleHandle("typelib") END IF dlg% = EXITQUIT ExitCode% = EXITQUIT ELSE dlg% = EXITFAILURE ExitCode% = EXITQUIT END IF QUITL1: IF WIN32ENABLED% = 1 THEN IF ExitCode% = EXITSUCCESS THEN sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS_NOWIN32, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN UIPop 1 GOTO QUITL1 END IF UIPop 1 CloseLogFile END END IF END IF sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN UIPop 1 GOTO QUITL1 END IF UIPop 1 IF ExitCode% = EXITSUCCESS THEN IF RebootSystem(OLEONLY% and not OLE_OLEBOOT%) = 0 THEN CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite IF OLE2_32% = 1 THEN CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Setup", "0", cmoOverwrite END IF i% = DoMsgBox("Win32s is not properly configured and Setup must be run again.", "Unable to Restart Windows", MB_ICONEXCLAMATION+MB_OK+MB_TASKMODAL) END IF ENDIF CloseLogFile END '' Fatal error handler for error message routine ERRQUIT: i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND) CloseLogFile END '' Bypass run-time errors. Let final dialog box display fatal error message. ERRNORMAL: '' Check if user cancelled setup IF ERR = STFQUIT THEN GOTO QUIT END IF RESUME NEXT TOOBIG: sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus GOTO TOOBIG END IF UIPop 1 RETURN BADPATH: sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus GOTO BADPATH END IF UIPop 1 RETURN ASKQUIT: sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPop 1 UIPopAll ERROR STFQUIT ELSEIF sz$ = "REACTIVATE" THEN GOTO ASKQUIT ELSE UIPop 1 END IF RETURN SUB AddOptFilesToCopyList (ftype%) STATIC IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN SrcDir$ = GetSymbolValue("STF_SRCDIR") IF ftype% = APPFILES THEN '' Vermeer AddSectionFilesToCopyList "AppFiles", SrcDir$, VBIN$ AddSectionFilesToCopyList "images", SrcDir$, VVERMEER$+"\images" AddSectionFilesToCopyList "data", SrcDir$, VVERMEER$+"\data" AddSectionFilesToCopyList "WebExtender_WinSystem_mini", SrcDir$, DESTSYS$ 'Add Webs here AddSectionFilesToCopyList "Webs_custsupp", SrcDir$, VWEBS$+"\custsupp.tem" AddSectionFilesToCopyList "Webs_custsupp_image", SrcDir$, VWEBS$+"\custsupp.tem\images" AddSectionFilesToCopyList "Webs_empty", SrcDir$, VWEBS$+"\empty.tem" AddSectionFilesToCopyList "Webs_homepage", SrcDir$, VWEBS$+"\homepage.tem" AddSectionFilesToCopyList "Webs_normal", SrcDir$, VWEBS$+"\normal.tem" AddSectionFilesToCopyList "Webs_project", SrcDir$, VWEBS$+"\project.tem" AddSectionFilesToCopyList "Webs_project_image", SrcDir$, VWEBS$+"\project.tem\images" AddSectionFilesToCopyList "Webs_vtipres", SrcDir$, VWEBS$+"\vtipres.wiz" AddSectionFilesToCopyList "Webs_vtidisc", SrcDir$, VWEBS$+"\vtidisc.wiz" AddSectionFilesToCopyList "Webs_vtitut1", SrcDir$, VWEBS$+"\vtitut1.tem" 'Add Pages here AddSectionFilesToCopyList "Page_confirm", SrcDir$, VPAGES$+"\confirm.tem" AddSectionFilesToCopyList "Page_normal", SrcDir$, VPAGES$+"\normal.tem" AddSectionFilesToCopyList "Page_biblio", SrcDir$, VPAGES$+"\biblio.tem" AddSectionFilesToCopyList "Page_empdir", SrcDir$, VPAGES$+"\empdir.tem" AddSectionFilesToCopyList "Page_empdir_image", SrcDir$, VPAGES$+"\empdir.tem\images" AddSectionFilesToCopyList "Page_faq", SrcDir$, VPAGES$+"\faq.tem" AddSectionFilesToCopyList "Page_feedback", SrcDir$, VPAGES$+"\feedback.tem" AddSectionFilesToCopyList "Page_glossary", SrcDir$, VPAGES$+"\glossary.tem" AddSectionFilesToCopyList "Page_guestbk", SrcDir$, VPAGES$+"\guestbk.tem" AddSectionFilesToCopyList "Page_hdocpage", SrcDir$, VPAGES$+"\hdocpage.tem" AddSectionFilesToCopyList "Page_hdocpage_image", SrcDir$, VPAGES$+"\hdocpage.tem\images" AddSectionFilesToCopyList "Page_hotlist", SrcDir$, VPAGES$+"\hotlist.tem" AddSectionFilesToCopyList "Page_jobopp", SrcDir$, VPAGES$+"\jobopp.tem" AddSectionFilesToCopyList "Page_jobopp_image", SrcDir$, VPAGES$+"\jobopp.tem\images" AddSectionFilesToCopyList "Page_lecture", SrcDir$, VPAGES$+"\lecture.tem" AddSectionFilesToCopyList "Page_offdir", SrcDir$, VPAGES$+"\offdir.tem" AddSectionFilesToCopyList "Page_pressdir", SrcDir$, VPAGES$+"\pressdir.tem" AddSectionFilesToCopyList "Page_pressrel", SrcDir$, VPAGES$+"\pressrel.tem" AddSectionFilesToCopyList "Page_proddesc", SrcDir$, VPAGES$+"\proddesc.tem" AddSectionFilesToCopyList "Page_regform", SrcDir$, VPAGES$+"\regform.tem" AddSectionFilesToCopyList "Page_reguser", SrcDir$, VPAGES$+"\reguser.tem" AddSectionFilesToCopyList "Page_search", SrcDir$, VPAGES$+"\search.tem" AddSectionFilesToCopyList "Page_seminar", SrcDir$, VPAGES$+"\seminar.tem" AddSectionFilesToCopyList "Page_survey", SrcDir$, VPAGES$+"\survey.tem" AddSectionFilesToCopyList "Page_swdata", SrcDir$, VPAGES$+"\swdata.tem" AddSectionFilesToCopyList "Page_swdata_image", SrcDir$, VPAGES$+"\swdata.tem\images" AddSectionFilesToCopyList "Page_toc", SrcDir$, VPAGES$+"\toc.tem" AddSectionFilesToCopyList "Page_vtiform", SrcDir$, VPAGES$+"\vtiform.wiz" AddSectionFilesToCopyList "Page_vtihome", SrcDir$, VPAGES$+"\vtihome.wiz" AddSectionFilesToCopyList "Page_whatsnew", SrcDir$, VPAGES$+"\whatsnew.tem" 'Various Obsolete files to be removed AddSectionFilesToCopyList "VermeerObsolete", SrcDir$, VBIN$ AddSectionFilesToCopyList "VermeerSystemObsolete", SrcDir$, DESTWIN$ IF OP_SYS$ = "win32" THEN ''Copy the right version of mfc*.dll AddSectionFilesToCopyList "16bitMFC", SrcDir$, DESTSYS$ ELSEIF OP_SYS$ = "winnt" THEN AddSectionFilesToCopyList "32bitMFC", SrcDir$, DESTWIN$ + "system32\" END IF ELSEIF ftype% = ALISAFILES THEN ''Personal Web Server CopyPWSFileSections 'Various WebExtenter files AddSectionFilesToCopyList "images", SrcDir$, VVERMEER$+"\images" AddSectionFilesToCopyList "WebExtender_WinSystem_mini", SrcDir$, DESTSYS$ AddSectionFilesToCopyList "WebExtender_WinSystem_full", SrcDir$, DESTSYS$ AddSectionFilesToCopyList "WebExtender_Bin", SrcDir$, VBIN$ AddSectionFilesToCopyList "WebExtender", SrcDir$, VVERMEER$+"\_vti_bin" AddSectionFilesToCopyList "WebExtender_aut", SrcDir$, VVERMEER$+"\_vti_bin\_vti_aut" AddSectionFilesToCopyList "WebExtender_adm", SrcDir$, VVERMEER$+"\_vti_bin\_vti_adm" IF (GetListItem(CHECKSTATES$, PWSDOCFILES) = "ON") THEN AddSectionFilesToCopyList "Content_DOC", SrcDir$, CONTENTDEST$ AddSectionFilesToCopyList "Content_vtipvt_DOC", SrcDir$, CONTENTDEST$+"\_vti_pvt" ELSE AddSectionFilesToCopyList "Content_NODOC", SrcDir$, CONTENTDEST$ AddSectionFilesToCopyList "Content_vtipvt_NODOC", SrcDir$, CONTENTDEST$+"\_vti_pvt" ENDIF AddSectionFilesToCopyList "Content_jpg", SrcDir$, CONTENTDEST$ IF OP_SYS$ = "win32" THEN ''Copy the right version of mfc*.dll AddSectionFilesToCopyList "16bitMFC", SrcDir$, DESTSYS$ ELSEIF OP_SYS$ = "winnt" THEN AddSectionFilesToCopyList "32bitMFC", SrcDir$, DESTWIN$ + "system32\" END IF ELSEIF ((ftype% = PWSDOCFILES) AND (GetListItem(CHECKSTATES$, ALISAFILES) = "ON")) THEN ''Personal Web Server Documentation CopyPWSDocFileSections ELSEIF ftype% = EXTENDERFILES THEN 'Various WebExtenter files AddSectionFilesToCopyList "images", SrcDir$, VVERMEER$+"\images" AddSectionFilesToCopyList "WebExtender_WinSystem_mini", SrcDir$, DESTSYS$ AddSectionFilesToCopyList "WebExtender_WinSystem_full", SrcDir$, DESTSYS$ AddSectionFilesToCopyList "WebExtender_Bin", SrcDir$, VBIN$ AddSectionFilesToCopyList "WebExtender", SrcDir$, VVERMEER$+"\_vti_bin" AddSectionFilesToCopyList "WebExtender_aut", SrcDir$, VVERMEER$+"\_vti_bin\_vti_aut" AddSectionFilesToCopyList "WebExtender_adm", SrcDir$, VVERMEER$+"\_vti_bin\_vti_adm" IF OP_SYS$ = "win32" THEN ''Copy the right version of mfc*.dll AddSectionFilesToCopyList "16bitMFC", SrcDir$, DESTSYS$ ELSEIF OP_SYS$ = "winnt" THEN AddSectionFilesToCopyList "32bitMFC", SrcDir$, DESTWIN$ + "system32\" END IF END IF 'ftype SrcDir$ = "" END IF END SUB SUB RecalcOptFiles (ftype%) STATIC CursorSave% = ShowWaitCursor() ClearCopyList IF ftype% < 5 THEN AddOptFilesToCopyList ftype% ELSE SrcDir$ = GetSymbolValue("STF_SRCDIR") AddSectionFilesToCopyList "WebExtender_WinSystem_mini", SrcDir$, DESTSYS$ ENDIF fExtra% = 0 IF ftype% = APPFILES THEN ListSym$ = APPNEEDS$ IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN ''Add extra cost to Windows drive for ini/progman, etc. ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1 ReplaceListItem EXTRACOSTS$, ndrive%, "10240" fExtra% = 1 END IF ELSEIF ftype% = PWSDOCFILES THEN ListSym$ = PWSDOCNEEDS$ ELSEIF ftype% = ALISAFILES THEN ListSym$ = ALISANEEDS$ ELSEIF ftype% = EXTENDERFILES THEN ListSym$ = EXTENDERNEEDS$ ELSEIF ftype% = EXT_MINI THEN ListSym$ = EXT_MINI_NEEDS$ END IF StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "") cost& = 0 FOR i% = 1 TO 26 STEP 1 cost& = cost& + VAL(GetListItem(ListSym$, i%)) NEXT i% 'REVIEW: ' Not currently displaying size for each checkbox item, might want to do it ' in the future, need to fix up dialog 'ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K" IF StillNeed& > 0 THEN ReplaceListItem BIGLIST$, ftype%, "YES" ELSE ReplaceListItem BIGLIST$, ftype%, "" END IF IF fExtra% THEN ReplaceListItem EXTRACOSTS$, ndrive%, "0" END IF RestoreCursor CursorSave% ListSym$ = "" END SUB SUB RecalcPath STATIC CursorSave% = ShowWaitCursor() RecalcOptFiles APPFILES RecalcOptFiles ALISAFILES RecalcOptFiles PWSDOCFILES RecalcOptFiles EXTENDERFILES RecalcOptFiles EXT_MINI RestoreCursor CursorSave% END SUB SUB SetDriveStatus STATIC drive$ = MID$(ucase$(DEST$), 1, 1) content_drive$ = MID$(ucase$(CONTENTDEST$), 1, 1) ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1 cost& = AdjustCost(ndrive%) free& = GetFreeSpaceForDrive(drive$) ReplaceListItem DRIVETEXT$, 1, drive$ + ":" ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K" ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K" IF drive$ = WINDRIVE$ THEN ReplaceListItem DRIVETEXT$, 4, "" ReplaceListItem DRIVETEXT$, 5, "" ReplaceListItem DRIVETEXT$, 6, "" ELSE ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1 cost& = AdjustCost(ndrive%) IF cost& = 0 THEN ReplaceListItem DRIVETEXT$, 4, "" ReplaceListItem DRIVETEXT$, 5, "" ReplaceListItem DRIVETEXT$, 6, "" ELSE free& = GetFreeSpaceForDrive(WINDRIVE$) ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":" ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K" ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K" END IF END IF IF ((content_drive$ = drive$) OR (content_drive$ = WINDRIVE$)) THEN ReplaceListItem DRIVETEXT$, 7, "" ReplaceListItem DRIVETEXT$, 8, "" ReplaceListItem DRIVETEXT$, 9, "" ELSE cdrive% = ASC(ucase$(content_drive$)) - ASC("A") + 1 cost& = AdjustCost(cdrive%) IF cost& = 0 THEN ReplaceListItem DRIVETEXT$, 7, "" ReplaceListItem DRIVETEXT$, 8, "" ReplaceListItem DRIVETEXT$, 9, "" ELSE free& = GetFreeSpaceForDrive(content_drive$) ReplaceListItem DRIVETEXT$, 7, content_drive$ + ":" ReplaceListItem DRIVETEXT$, 8, STR$(cost& / 1024) + " K" ReplaceListItem DRIVETEXT$, 9, STR$(free& / 1024) + " K" END IF END IF END SUB SUB CreateVermeerDirectoryStructure STATIC CreateDir VVERMEER$, cmoNone CreateDir VVERMEER$ + "\images", cmoNone CreateDir VVERMEER$ + "\_vti_bin", cmoNone CreateDir VVERMEER$ + "\_vti_bin\_vti_aut", cmoNone CreateDir VVERMEER$ + "\_vti_bin\_vti_adm", cmoNone CreateDir VVERMEER$ + "\data", cmoNone CreateDir VVERMEER$ + "\temp", cmoNone CreateDir VBIN$, cmoNone CreateDir VWEBS$, cmoNone CreateDir VWEBS$+"\VTIPRES.WIZ", cmoNone CreateDir VWEBS$+"\homepage.tem", cmoNone CreateDir VPAGES$, cmoNone CreateDir VPAGES$ + "\normal.tem", cmoNone CreateDir VPAGES$ + "\vtihome.wiz", cmoNone CreateDir VPAGES$ + "\whatsnew.tem", cmoNone END SUB SUB SetVermeerDirectoryStructure STATIC VBIN$ = VVERMEER$ + "\BIN" VWEBS$ = VVERMEER$ + "\WEBS" VPAGES$ = VVERMEER$ + "\PAGES" ALISADEST$ = VVERMEER$ + "\HTTPD" END SUB SUB CreatePWSDirStructure STATIC DENNY$ = VVERMEER$ + "\httpd" CreateDir DENNY$, cmoNone DENNYSUB$ = VVERMEER$ + "\httpd\conf" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = VVERMEER$ + "\httpd\logs" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = VVERMEER$ + "\httpd\conf\maps" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = VVERMEER$ + "\httpd\support" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = VVERMEER$ + "\httpd\support\htpasswd" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = VVERMEER$ + "\httpd\support\logcycle" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = VVERMEER$ + "\httpd\support\shutsrvr" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = VVERMEER$ + "\httpd\support\sighttpd" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = VVERMEER$ + "\httpd\icons" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\_vti_pvt" CreateDir DENNYSUB$, cmoNone END SUB SUB CreatePWSDOCDirStructure STATIC DENNYSUB$ = CONTENTDEST$ + "\winhttpd\cgi-dos" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\cgi-src" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\cgi-src\imagemap" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\cgi-win" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\demo" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\demo\demotree" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\demo\demotree\goodies" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\demo\images" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\images" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\info" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\auth" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\auth\bydomain" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\auth\bydomexc" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\auth\bypasswd" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\auth\bypwmult" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\info\cgi" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\info\forms" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\access" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\admin" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\httpd" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\scripts" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\srm" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\images" CreateDir DENNYSUB$, cmoNone DENNYSUB$ = CONTENTDEST$ + "\winhttpd\icons" CreateDir DENNYSUB$, cmoNone END SUB SUB CopyPWSFileSections STATIC SrcDir$ = GetSymbolValue("STF_SRCDIR") DENNY$ = VVERMEER$ + "\httpd" AddSectionFilesToCopyList "httpd", SrcDir$, DENNY$ DENNYSUB$ = VVERMEER$ + "\httpd\conf" AddSectionFilesToCopyList "httpd_conf", SrcDir$, DENNYSUB$ DENNYSUB$ = VVERMEER$ + "\httpd\conf\maps" AddSectionFilesToCopyList "httpd_conf_maps", SrcDir$, DENNYSUB$ DENNYSUB$ = VVERMEER$ + "\httpd\support" AddSectionFilesToCopyList "whttpd14_support", SrcDir$, DENNYSUB$ DENNYSUB$ = VVERMEER$ + "\httpd\support\htpasswd" AddSectionFilesToCopyList "whttpd14_support_htpasswd", SrcDir$, DENNYSUB$ DENNYSUB$ = VVERMEER$ + "\httpd\support\logcycle" AddSectionFilesToCopyList "whttpd14_support_logcycle", SrcDir$, DENNYSUB$ DENNYSUB$ = VVERMEER$ + "\httpd\support\shutsrvr" AddSectionFilesToCopyList "whttpd14_support_shutsrvr", SrcDir$, DENNYSUB$ DENNYSUB$ = VVERMEER$ + "\httpd\support\sighttpd" AddSectionFilesToCopyList "whttpd14_support_sighttpd", SrcDir$, DENNYSUB$ DENNYSUB$ = VVERMEER$ + "\httpd\icons" AddSectionFilesToCopyList "whttpd14_icons", SrcDir$, DENNYSUB$ END SUB SUB CopyPWSDOCFileSections STATIC SrcDir$ = GetSymbolValue("STF_SRCDIR") AddSectionFilesToCopyList "whttpd14_vbrun300", SrcDir$, DESTSYS$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd" AddSectionFilesToCopyList "whttpd14", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\_vti_shm" AddSectionFilesToCopyList "whttpd14_vti_shm", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\_vti_txt\default.wti" AddSectionFilesToCopyList "whttpd14_vti_txt", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\images" AddSectionFilesToCopyList "whttpd14_images", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\cgi-dos" AddSectionFilesToCopyList "whttpd14_cgi-dos", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\cgi-src" AddSectionFilesToCopyList "whttpd14_cgi-src", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\cgi-src\imagemap" AddSectionFilesToCopyList "whttpd14_cgi-src_imagemap", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\cgi-win" AddSectionFilesToCopyList "whttpd14_cgi-win", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs" AddSectionFilesToCopyList "whttpd14_htdocs", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\demo" AddSectionFilesToCopyList "whttpd14_htdocs_demo", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\demo\demotree" AddSectionFilesToCopyList "whttpd14_htdocs_demo_demotree", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\demo\demotree\goodies" AddSectionFilesToCopyList "whttpd14_htdocs_demo_demotree_goodies", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\demo\images" AddSectionFilesToCopyList "whttpd14_htdocs_demo_images", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\images" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_images", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\info" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_info", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\auth\bydomain" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_auth_bydomain", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\auth\bydomexc" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_auth_bydomexc", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\auth\bypasswd" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_auth_bypasswd", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\auth\bypwmult" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_auth_bypwmult", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\info\cgi" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_info_cgi", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\info\forms" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_info_forms", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_setup", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\access" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_setup_access", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\admin" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_setup_admin", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\httpd" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_setup_httpd", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\scripts" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_setup_scripts", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\httpddoc\setup\srm" AddSectionFilesToCopyList "whttpd14_htdocs_httpddoc_setup_srm", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\htdocs\images" AddSectionFilesToCopyList "whttpd14_htdocs_images", SrcDir$, DENNYSUB$ DENNYSUB$ = CONTENTDEST$ + "\winhttpd\icons" AddSectionFilesToCopyList "whttpd14_icons", SrcDir$, DENNYSUB$ END SUB SUB PWSConfigUpdate STATIC IF DoesFileExist(ALISADEST$ + "\conf\srm.cnf", femExists ) THEN WriteToLogFile "FP - srm.cnf exists." ELSE RenameFile ALISADEST$+"\conf\srm.org" , "srm.cnf" END IF IF DoesFileExist(ALISADEST$ + "\conf\httpd.cnf", femExists ) THEN WriteToLogFile "FP - httpd.cnf exists." ELSE WriteToLogFile "FP - Renaming httpd.org" RenameFile ALISADEST$+"\conf\httpd.org" , "httpd.cnf" END IF IF DoesFileExist(ALISADEST$ + "\conf\access.cnf", femExists ) THEN WriteToLogFile "FP - access.cnf exists." ELSE WriteToLogFile "FP - Renaming access.org" RenameFile ALISADEST$+"\conf\access.org" , "access.cnf" END IF IF DoesFileExist(ALISADEST$ + "\conf\imagemap.cnf", femExists ) THEN WriteToLogFile "FP - imagemap.cnf exists." ELSE WriteToLogFile "FP - Renaming imagemap.org" RenameFile ALISADEST$+"\conf\imagemap.org" , "imagemap.cnf" END IF END SUB 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 SUB Install_Vermeer STATIC VERMEERINSTALLED% = 1 IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN 'installing Vermeer CreateVermeerDirectoryStructure AddOptFilesToCopyList APPFILES END IF IF GetListItem(CHECKSTATES$, ALISAFILES) = "ON" THEN 'installing Alisa CreatePWSDirStructure AddOptFilesToCopyList ALISAFILES IF GetListItem(CHECKSTATES$, PWSDOCFILES) = "ON" THEN 'installing Personal WebServer Doc CreatePWSDOCDirStructure AddOptFilesToCopyList PWSDOCFILES END IF END IF IF ((GetListItem(CHECKSTATES$, APPFILES) = "ON") OR (GetListItem(CHECKSTATES$, ALISAFILES) = "ON") OR (GetListItem(CHECKSTATES$, EXTENDERFILES) = "ON")) THEN AddOptFilesToCopyList EXTENDERFILES END IF END SUB SUB Install_With_Win32s(OLEONLY%, OLE2_32%, OLE2_16%, OLE2AUTO_16%, OLE16RUNAPP%) STATIC ClearCopyList SrcDir$ = GetSymbolValue("STF_SRCDIR") '' Use file layout sections that specify OLDER file version/time check IF OLEONLY% = 0 THEN AddSectionFilesToCopyList "WindowsSystem", SrcDir$, DESTSYS$ AddSectionFilesToCopyList "WindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\" '' Add obsolete files to be removed AddSectionFilesToCopyList "Win32sSystemObsoleteFiles", SrcDir$, DESTSYS$ + "WIN32S\" END IF OLE_PROTECT% = 0 OLEINCLUDED% = DoesFileExist( GetSymbolValue("STF_SRCDIR") + "OLE2THK.DL_", femExists ) if OLEINCLUDED% = 1 THEN IF (OLE2_16% = 1) OR (OLE2AUTO_16% = 1) THEN IF OLE16RUNAPP% = 1 THEN '' Force all OLE2 DLLS to be copied during reboot. i% = SetErrorMode(-32768) i% = LoadLibrary(DESTSYS$ + "compobj.dll") i% = LoadLibrary(DESTSYS$ + "ole2.dll") i% = LoadLibrary(DESTSYS$ + "ole2prox.dll") i% = LoadLibrary(DESTSYS$ + "ole2conv.dll") i% = LoadLibrary(DESTSYS$ + "storage.dll") i% = LoadLibrary(DESTSYS$ + "ole2nls.dll") i% = LoadLibrary(DESTSYS$ + "ole2disp.dll") i% = LoadLibrary(DESTSYS$ + "typelib.dll") OLE_PROTECT% = 1 END IF AddSectionFilesToCopyList "OleWindowsSystem", SrcDir$, DESTSYS$ END IF IF OLE2_32% = 1 THEN AddSectionFilesToCopyList "OleWindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\" END IF IF (OLE2_16% = 1) OR (OLE2_32% = 1) OR (OLE2AUTO_16% = 1) THEN AddSectionFilesToCopyList "Ole2RegWindowsSystem", SrcDir$, DESTSYS$ END IF IF (OLE2AUTO_16% = 1) THEN AddSectionFilesToCopyList "StdoleWindowsSystem", SrcDir$, DESTSYS$ IF (OLE16RUNAPP and DoesFileExist(DESTSYS$ + "stdole.tlb", femExists) ) THEN ' copy stdole.tlb -> tempfile1 stdole1$ = DESTSYS$ + GetTempFileAt(DESTSYS$, "STD") CopyFile DESTSYS$+"STDOLE.TLB", stdole1$, cmoOverwrit, 0 OLE_OLEBOOT% = 1 ENDIF END IF END IF SetRestartDir GetWindowsDir() Install_Vermeer CopyFilesInCopyList IF (OLEINCLUDED% = 1) THEN RecoverFromCopy DESTSYS$ + "compobj.dll" RecoverFromCopy DESTSYS$ + "ole2.dll" RecoverFromCopy DESTSYS$ + "ole2prox.dll" RecoverFromCopy DESTSYS$ + "ole2conv.dll" RecoverFromCopy DESTSYS$ + "storage.dll" RecoverFromCopy DESTSYS$ + "ole2nls.dll" RecoverFromCopy DESTSYS$ + "ole2disp.dll" RecoverFromCopy DESTSYS$ + "typelib.dll" END IF IF (OLE_PROTECT% = 1) THEN '' Free all previously loaded libraries FreeLibrary GetModuleHandle("compobj") FreeLibrary GetModuleHandle("ole2") FreeLibrary GetModuleHandle("ole2prox") FreeLibrary GetModuleHandle("ole2conv") FreeLibrary GetModuleHandle("storage") FreeLibrary GetModuleHandle("ole2nls") FreeLibrary GetModuleHandle("ole2disp") FreeLibrary GetModuleHandle("typelib") OLE_PROTECT% = 0 END IF IF (OLE_OLEBOOT% = 1) THEN 'rename new stdole.tlb -> tempfile2 stdole2$ = GetTempFileAt(DESTSYS$, "STD") RemoveFile DESTSYS$+stdole2$, cmoForce RenameFile DESTSYS$+"STDOLE.TLB" , stdole2$ 'rename tempfile1 -> stdole.tlb RenameFile stdole1$, "STDOLE.TLB" 'write to _mssetup.bat: rename tempfile2 to stdole.tlb WriteLine DESTWIN$+"_MSSETUP.BAT", "" WriteLine DESTWIN$+"_MSSETUP.BAT", "DEL "+DESTSYS$+"STDOLE.TLB" WriteLine DESTWIN$+"_MSSETUP.BAT", "REN "+DESTSYS$+stdole2$+" STDOLE.TLB" ENDIF IF OLEINCLUDED% AND (OLE2_16% OR OLE2_32% OR OLE2AUTO_16%) THEN IF OLE16RUNAPP% THEN reg1$ = DESTWIN$ + GetTempFileAt(DESTWIN$, "REG") CopyFile DESTWIN$+"REG.DAT", reg1$, cmoOverwrit, 0 ENDIF RUN "regedit /s " + DESTSYS$ + "ole2.reg" IF OLE16RUNAPP% THEN reg2$ = GetTempFileAt(DESTWIN$, "REG") RemoveFile DESTWIN$ + reg2$, cmoForce RenameFile DESTWIN$ + "REG.DAT" , reg2$ 'rename tempfile1 -> reg.dat RenameFile reg1$, "REG.DAT" 'write to _mssetup.bat: rename tempfile2 to reg.dat WriteLine DESTWIN$+"_MSSETUP.BAT", "" WriteLine DESTWIN$+"_MSSETUP.BAT", "DEL "+DESTWIN$+"REG.DAT" WriteLine DESTWIN$+"_MSSETUP.BAT", "REN "+DESTWIN$ + reg2$+" REG.DAT" OLE_OLEBOOT% = 1 ENDIF END IF END SUB SUB UpdateSystemIni STATIC VxDPath$ = DEST32S$ + "W32S.386" SystemIniPath$ = GetWindowsDir() t% = MakeSystemIni(SystemIniPath$, VxdPath$) END SUB FUNCTION RebootSystem(OLEONLY%) STATIC AS INTEGER ' Check if any files were locked during install. If the RestartList ' is not empty, ExitExecRestart() will restart Windows, cleanup setup ' files, and copy over locked files before Windows restarts. i% = RestartListEmpty() IF i% = 0 THEN ' ExitExecRestart() only returns if applications refuse to be shutdown. ' Win32s is installed but will not operate until Windows is restarted ' and the Win32s VxD is loaded. i% = ExitExecRestart() RebootSystem = 0 ELSE ' If the RestartList list is empty, it is necessary to restart windows ' directly. The MSSETUP program creates _MSRSTRT.EXE and _MSSETUP.BAT ' in the restart directory. This program should be exec'd to handle ' proper MSSETUP cleanup (temp files) and restart Windows. IF (OLEONLY% = 1) THEN RebootSystem = 1 ELSE i% = ExitWindowsExec( GetWindowsDir() + "_MSRSTRT.EXE", "_MSSETUP.BAT" ) RebootSystem = 0 END IF ENDIF END FUNCTION FUNCTION GetTempFileAt(szDir$, szPrefix$) STATIC AS STRING szCurDir$ = CURDIR$ CHDIR szDir$ + "." szTempFile$ = STRING$(144, "E") i% = GetTempFileName(TF_FORCEDRIVE, szPrefix$,0, szTempFile$) CHDIR szCurDir$ GetTempFileAt = MID$(szTempFile$,3) END FUNCTION SUB RecoverFromCopy(szFileName$) STATIC IF DoesFileExist(szFileName$, femExist) = 0 THEN szBackFile$ = MID$(szFileName$, 1, LEN(szFileName$)-3) + VERNUM$ IF DoesfileExist(szBackFile$, femExist) = 0 THEN i% = DoMsgBox("ERROR: Could not find backup file "+szBackfile$, "Setup Error", MB_ICONEXLAMATION + MB_OK) ELSE CopyFile szBackFile$, szFileName$, cmoTimeStamp, 0 END IF END IF END SUB ' HACK ALERT FUNCTION AdjustCost(drv%) STATIC AS LONG IF ((GetListItem(CHECKSTATES$, APPFILES) = "ON") AND (GetListItem(CHECKSTATES$, ALISAFILES) = "ON") AND (GetListItem(CHECKSTATES$, EXTENDERFILES) = "ON")) THEN AdjustCost = VAL(GetListItem(APPNEEDS$, drv%)) + VAL(GetListItem(PWSDOCNEEDS$, drv%)) + VAL(GetListItem(ALISANEEDS$, drv%)) - VAL(GetListItem(EXT_MINI_NEEDS$, drv%)) ELSEIF ((GetListItem(CHECKSTATES$, APPFILES) = "ON") AND (GetListItem(CHECKSTATES$, ALISAFILES) = "ON")) THEN AdjustCost = VAL(GetListItem(APPNEEDS$, drv%)) + VAL(GetListItem(PWSDOCNEEDS$, drv%)) + VAL(GetListItem(ALISANEEDS$, drv%)) - VAL(GetListItem(EXT_MINI_NEEDS$, drv%)) ELSEIF ((GetListItem(CHECKSTATES$, APPFILES) = "ON") AND (GetListItem(CHECKSTATES$, EXTENDERFILES) = "ON")) THEN AdjustCost = VAL(GetListItem(APPNEEDS$, drv%)) + VAL(GetListItem(EXTENDERNEEDS$, drv%)) - VAL(GetListItem(EXT_MINI_NEEDS$, drv%)) ELSEIF ((GetListItem(CHECKSTATES$, ALISAFILES) = "ON") AND (GetListItem(CHECKSTATES$, EXTENDERFILES) = "ON")) THEN AdjustCost = VAL(GetListItem(PWSDOCNEEDS$, drv%)) + VAL(GetListItem(ALISANEEDS$, drv%)) - VAL(GetListItem(EXTENDERNEEDS$, drv%)) ELSE AdjustCost = VAL(GetListItem(APPNEEDS$, drv%)) + VAL(GetListItem(PWSDOCNEEDS$, drv%)) + VAL(GetListItem(ALISANEEDS$, drv%)) + VAL(GetListItem(EXTENDERNEEDS$, drv%)) ENDIF END FUNCTION FUNCTION ValidateDir(Path$, State%) STATIC AS STRING Unix_slashTo_dos(Path$) IF (DoesFileExist(Path$, femExists) = 0) THEN IF IsDirWritable(Path$) THEN ValidateDir = Path$ IF DoesDirExist(Path$) AND (State > 0) THEN i% = DoMsgBox("Directory '" + Path$ + "' exists. Overwrite?", "Setup Detect", MB_TASKMODAL+MB_ICONQUESTION+MB_YESNO) IF (i% = MB_YES) THEN ValidateDir = Path$ ELSE ValidateDir = "" END IF END IF ELSE ValidateDir = "" END IF ELSE ValidateDir = "" END IF END FUNCTION