home *** CD-ROM | disk | FTP | other *** search
Wrap
' ------------- Copyright (c) Jo Brodtkorb, Musicator 1992-93 --------------- ' *************************************************************************** ' ' FILE NAME : c:\mgw-inst\setup.mst ' CREATED : 92.12.15 ' LAST UPDATED : 93.01.04 ' PURPOSE : Setupprogram for Musicator GS for Windows ' ' ' INIT DATE LOG (Newest first) ' --------------------------------------------------------------------------- ' Sven 93.01.04 Support for a demo verion of Musicator GS ' Sven 92.12.15 Initial version created ' ************************************************************************** ' ************************************************************************** ' ' Denne seksjonen skal redigeres for de forskjellige typer installasjon ' ' Neste linje kommenteres ut med '' hvis installasjonen ikke er en demoversjon ' Når linjen ikke er kommentert ut ser den slik ut: '$DEFINE DEMO '$DEFINE DEMO ' ************************************************************************** ' Av '$DEFINE DEBUG ''Define for script development/debugging '-- Includes --------------------------------------------------------------- '$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' '-- Constants -------------------------------------------------------------- CONST szBadDisks$ = "Setup disks may be corrupted. Please contact your Dealer." CONST szKB$ = " K" CONST szMB$ = " MB" '$IFDEF DEMO CONST szTitle$ = "Musicator GS Demo Setup" CONST szGroupName$ = "Musicator GS Demo" CONST szProgramName$= "Musicator GS for Windows Demo" CONST szDefDir$ = "C:\MGW-DEMO" '$ELSE CONST szTitle$ = "Musicator GS Setup" CONST szGroupName$ = "Musicator GS" CONST szProgramName$= "Musicator GS for Windows" CONST szDefDir$ = "C:\MGW" '$ENDIF CONST szInfName$ = "SETUP.INF" CONST fTRUE% = 1 CONST fFALSE% = 0 CONST szON$ = "ON" CONST szOFF$ = "OFF" CONST MinTempSpace% = 3072 CONST EWRestartWin& = 42 CONST EWRebootSystem& = 43 CONST MaxNoOfDisks% = 26 ''Dialog ID's (must match those in DIALOGS.H) CONST WELCOME = 1100 CONST WELCOMEDEMO = 1101 ' Demo versjon of Musicator GS CONST CUSTINST = 1200 CONST CUSTINSTDEMO = 1201 CONST ASKQUIT = 1300 CONST ASKQUITDEMO = 1301 CONST ASKATM = 1400 CONST ASKATMDEMO = 1401 CONST GETPATH = 1500 CONST GETPATHDEMO = 1501 CONST BADDIR = 1600 CONST BADDIRDEMO = 1601 CONST CREATEPATH = 1700 CONST CREATEPATHDEMO= 1701 CONST WAITSIZE = 1800 CONST WAITSIZEDEMO = 1801 CONST EXITSUCCESS = 1900 CONST EXITSUCCESSDEMO = 1901 CONST EXITQUIT = 2000 CONST EXITQUITDEMO = 2001 CONST HELPINSTALL = 2100 CONST HELPINSTALLDEMO = 2101 CONST HELPPATH = 2200 CONST HELPPATHDEMO = 2201 CONST TOOBIG = 2300 CONST TOOBIGDEMO = 2301 CONST EXITFAILURE = 2400 CONST EXITFAILUREDEMO = 2401 CONST RESTARTWIN = 2500 CONST RESTARTWINDEMO= 2501 ' CONST BWCCEXISTS = 2600 ' CONST BWCCNEW = 2700 ' CONST BWCCOLD = 2800 ' CONST BWCCHELP = 2900 CONST CDCONFIRMINFO = 3000 CONST CDGETNAMEORG = 3100 CONST CDALREADYUSED = 3200 CONST CDBADFILE = 3300 CONST CDBADNAMEORG = 3400 ''Bitmap ID (must match those in DIALOGS.RC) '$IFDEF DEMO CONST LOGO = 2 '$ELSE CONST LOGO = 1 '$ENDIF '-- Globals ---------------------------------------------------------------- GLOBAL szDir$ ''Destination directory GLOBAL szDrive$ ''Destination drive GLOBAL szWinDrive$ ''Windows drive GLOBAL cbDrive& ''Space available on destination drive GLOBAL cbWinDrive& ''Space available on Windows drive GLOBAL szSrcDir$ ''Source directory GLOBAL szWinDir$ ''Windows directory GLOBAL fATMFiles% ''Install ATM or TrueType GLOBAL cbMGWFiles& ''KBytes required for basic GWS GLOBAL cbWinFiles& ''KBytes required for files in Windows directory GLOBAL CUIDLL$ ''Dialog/Images DLL GLOBAL HELPPROC$ ''Help dialog procedure GLOBAL DriveList$ ''List of available drives GLOBAL szCDOrganization$ ''Organisation that owns the produkt GLOBAL szCDName$ ''Person that owns the produkt '-- Declaratin of DLL functions--------------------------------------------- ' DECLARE FUNCTION SetupCryptName LIB "mscuistf.dll" (szInString$, szOutString$) AS INTEGER DECLARE FUNCTION ExitWindows LIB "user.exe" (dwReturnCode&, iReserved%) AS INTEGER ' DECLARE FUNCTION ExitWindowsExec LIB "user.exe" (lpszExe$, lpszParams$) AS INTEGER '-- Prototypes ------------------------------------------------------------- DECLARE SUB BadPath DECLARE SUB CalcPathSpace DECLARE SUB CheckTempSpace DECLARE SUB CheckATM DECLARE FUNCTION CreateInstallPath(szDir$) AS STRING DECLARE FUNCTION AskForBWCC AS INTEGER DECLARE SUB DetermineSizes DECLARE SUB GetDriveList DECLARE SUB GetInstallPath DECLARE SUB Install DECLARE SUB InsufficientSpace DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING '--------------------------------------------------------------------------- ' INIT: Load globals and read .INF file '--------------------------------------------------------------------------- INIT: SetTitle szTitle$ CursorSave% = ShowWaitCursor() CUIDLL$ = "mscuistf.dll" ''Custom user interface dll HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure SetBitmap CUIDLL$, LOGO szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + szInfName$ END IF ReadInfFile szInf$ szWinDir$ = GetWindowsDir() szWinDrive$ = MID$(szWinDir$, 1, 1) '$IFDEF DEBUG i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal '' IsDirWriteable does not work propably IF IsDriveValid(szWinDrive$) = fFALSE% THEN i% = DoMsgBox("Windows drive ('"+szWinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) GOTO QUIT END IF '$ENDIF ''DEBUG RestoreCursor CursorSave% '--------------------------------------------------------------------------- ' WELCOME: Display Welcome dialog '--------------------------------------------------------------------------- WELCOME: '$IFDEF DEMO ' sz$ = UIStartDlg(CUIDLL$, WELCOMEDEMO, "FInfoDlgProc", HELPINSTALLDEMO, HELPPROC$) sz$ = UIStartDlg(CUIDLL$, WELCOMEDEMO, "FInfoDlgProc", 0, "") '$ELSE ' sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", HELPINSTALL, HELPPROC$) sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", 0, "") '$ENDIF IF sz$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO WELCOME END IF CHECKPROSESSOR: IF GetProcessorType() < 3 THEN ' Less than 80386 i% = DoMsgBox("'" + Ltrim$(Str$(GetProcessorType())) + "' is not a legal machine", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK) GOSUB ASKQUIT GOTO CHECKDOS ENDIF CHECKDOS: ' IF GetDOSMajorVersion() = 3 THEN ' IF GetDOSMinorVersion() = 3 THEN ' GOTO CHECKWINDOWS ' ENDIF ' ELSEIF GetDOSMajorVersion() = 4 THEN ' IF GetDOSMinorVersion() = 1 THEN ' GOTO CHECKWINDOWS ' ENDIF ' ELSEIF GetDOSMajorVersion() > 4 THEN ' GOTO CHECKWINDOWS ' ENDIF ' i% = DoMsgBox(Ltrim$(Str$(GetDOSMajorVersion()))+"."+Ltrim$(Str$(GetDOSMinorVersion()))+ " is not a legal DOS version", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK) ' GOSUB ASKQUIT ' GOTO CHECKDOS CHECKWINDOWS: IF GetWindowsMajorVersion() < 3 THEN i% = DoMsgBox(Ltrim$(Str$(GetWindowsMajorVersion()))+"."+Ltrim$(Str$(GetWindowsMinorVersion()))+ " is not a legal Windows version", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK) GOSUB ASKQUIT GOTO CHECKWINDOWS ELSEIF GetWindowsMajorVersion() = 3 THEN ' IF GetWindowsMinorVersion() <> 0 THEN IF GetWindowsMinorVersion() = 0 THEN ' ELSEIF GetWindowsMinorVersion() <> 1 THEN i% = DoMsgBox(Ltrim$(Str$(GetWindowsMajorVersion()))+"."+Ltrim$(Str$(GetWindowsMinorVersion()))+ " is not a legal Windows version", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK) ENDIF ELSEIF GetWindowsMajorVersion() > 3 THEN ' i% = DoMsgBox(Ltrim$(Str$(GetWindowsMajorVersion()))+"."+Ltrim$(Str$(GetWindowsMinorVersion()))+ " is not a legal Windows version", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK) ENDIF '$IFDEF DEMO '' Do not ask for name and organization GOTO CUSTINST '$ENDIF '--------------------------------------------------------------------------- ' GETOWNER: Get name and organization (the owner of the product) '--------------------------------------------------------------------------- GETOWNER: sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", 0, "") IF sz$ = "CONTINUE" THEN szCDOrganization$ = GetSymbolValue("OrgOut") szCDName$ = GetSymbolValue("NameOut") UIPop 1 ELSEIF sz$ = "EXIT" THEN GOSUB ASKQUIT GOTO GETOWNER ELSE UIPop 1 GOTO GETOWNER END IF '--------------------------------------------------------------------------- ' EMPTYOWNER: Check if name and organization are empty '--------------------------------------------------------------------------- EMPTYOWNER: IF (szCDOrganization$ = "") AND (szCDName$ = "") THEN sz$ = UIStartDlg(CUIDLL$, CDBADNAMEORG, "FInfoDlgProc", 0, "") IF sz$ = "CONTINUE" THEN UIPop 1 GOTO GETOWNER ELSE GOSUB ASKQUIT GOTO EMPTYOWNER ENDIF ENDIF '--------------------------------------------------------------------------- ' CONFIRMOWNER: Confirm name and organization '--------------------------------------------------------------------------- CONFIRMOWNER: ConfirmTextIn$ = "ConfirmTextIn" AddListItem ConfirmTextIn$, szCDOrganization$ AddListItem ConfirmTextIn$, szCDName$ sz$ = UIStartDlg(CUIDLL$, CDCONFIRMINFO, "FConfirmDlgProc", 0, "") RemoveSymbol ConfirmTextIn$ IF sz$ = "BACK" THEN UIPop 1 GOTO GETOWNER ELSEIF sz$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO CONFIRMOWNER ENDIF '--------------------------------------------------------------------------- ' CHECKOWNER: Check name and organization '--------------------------------------------------------------------------- CHECKOWNER: szSrcDir$ = GetSymbolValue("STF_SRCDIR") ini$ = MakePath (szSrcDir$, "setup.ini") szOldOrg$ = GetIniKeyString (ini$, "Names", "MusicatorGSOrganisation") szOldName$ = GetIniKeyString (ini$, "Names", "MusicatorGSName") '$IFDEF DEBUG i% = DoMsgBox("Ny Org = " + szCDOrganization$ + ", Nytt Navn = " + szCDName$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) i% = DoMsgBox("Gammel Org = " + szOldOrg$ + ", Gammelt Navn = " + szOldName$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) '$ENDIF ''DEBUG IF (szOldOrg$ = "") AND (szOldName$ = "") THEN ELSE IF (Ucase$(szCDOrganization$) <> Ucase$(szOldOrg$)) OR (Ucase$(szCDName$) = Ucase$(szOldName$)) THEN sz$ = UIStartDlg(CUIDLL$, CDBADFILE, "FInfoDlgProc", 0, "") IF sz$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO CHECKOWNER ENDIF ENDIF ENDIF '--------------------------------------------------------------------------- ' CUSTINST: Get users installation selections '--------------------------------------------------------------------------- CUSTINST: CursorSave% = ShowWaitCursor() '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, WAITSIZEDEMO, "FModelessDlgProc", 0, "") '$ELSE sz$ = UIStartDlg(CUIDLL$, WAITSIZE, "FModelessDlgProc", 0, "") '$ENDIF szDir$ = szDefDir$ DRIVETEXT$ = "DriveStatusText" FOR i% = 1 to 7 STEP 1 AddListItem DRIVETEXT$, "" NEXT i% GetDriveList iMaxDiskNo% = GetListLength (DriveList$) iFound% = fFALSE% FOR iDiskNo% = 1 TO iMaxDiskNo% STEP 1 szDrive$ = MID$(GetListItem (DriveList$, iDiskNo%), 1, 1) szDir$ = szDrive$ + MID$(szDir$, 2) DetermineSizes CalcPathSpace IF szWinDrive$ = szDrive$ THEN cbTotal& = cbMGWFiles& + cbWinFiles& ELSE cbTotal& = cbMGWFiles& ENDIF IF cbTotal& < cbDrive& THEN iFound% = fTRUE% EXIT FOR ENDIF NEXT iDiskNo% IF iFound% = fFALSE% THEN szDir$ = szDefDir$ DetermineSizes CalcPathSpace ENDIF UIPop 1 ''WaitSize RestoreCursor CursorSave% ASKI1: IF szWinDrive$ = szDrive$ THEN cbTotal& = cbMGWFiles& + cbWinFiles& cbWinTotal& = fFALSE% ELSE cbTotal& = cbMGWFiles& cbWinTotal& = cbWinFiles& ENDIF ReplaceListItem DRIVETEXT$, 1, szDrive$ + ":" ReplaceListItem DRIVETEXT$, 2, Ltrim$(Str$(cbTotal&))+szKB ReplaceListItem DRIVETEXT$, 3, Ltrim$(Str$(cbDrive&))+szKB ReplaceListItem DRIVETEXT$, 7, szDir$ IF szWinDrive$ = szDrive$ THEN ReplaceListItem DRIVETEXT$, 4, "" ReplaceListItem DRIVETEXT$, 5, "" ReplaceListItem DRIVETEXT$, 6, "" ELSE ReplaceListItem DRIVETEXT$, 4, szWinDrive$ + ":" ReplaceListItem DRIVETEXT$, 5, Ltrim$(Str$(cbWinTotal&))+szKB ReplaceListItem DRIVETEXT$, 6, Ltrim$(Str$(cbWinDrive&))+szKB ENDIF '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, CUSTINSTDEMO, "FCustInstDlgProc", HELPINSTALLDEMO, HELPPROC$) '$ELSE sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", HELPINSTALL, HELPPROC$) '$ENDIF IF sz$ = "CONTINUE" THEN IF cbTotal& > cbDrive& THEN InsufficientSpace GOTO ASKI1 END IF CheckTempSpace CheckATM UIPop 1 ELSEIF sz$ = "PATH" THEN GetInstallPath GOTO ASKI1 ELSEIF sz$ = "REACTIVATE" THEN GOTO ASKI1 ELSEIF sz$ = "EXIT" THEN GOSUB ASKQUIT GOTO ASKI1 ELSE GOTO ASKI1 END IF UIPop 1 Install '--------------------------------------------------------------------------- ' QUIT: Exit setup '--------------------------------------------------------------------------- QUIT: ON ERROR GOTO ERRQUIT IF ERR = 0 THEN '$IFDEF DEMO dlg% = EXITSUCCESSDEMO '$ELSE dlg% = EXITSUCCESS '$ENDIF ELSEIF ERR = STFQUIT THEN '$IFDEF DEMO dlg% = EXITQUITDEMO '$ELSE dlg% = EXITQUIT '$ENDIF ELSE '$IFDEF DEMO dlg% = EXITFAILUREDEMO '$ELSE dlg% = EXITFAILURE '$ENDIF END IF QUITL1: sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO QUITL1 END IF UIPop 1 AGAIN: IF ERR = 0 THEN 'NB! SVBR ini$ = MakePath (szSrcDir$, "setup.ini") '$IFDEF DEBUG ' i% = DoMsgBox("F¢r crypt - Ny Org = " + szCDOrganization$ + ", Nytt Navn = " + szCDName$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) '$ENDIF ''DEBUG ' i% = SetupCryptName( szCDOrganization$, szCDOrganization$ ) '$IFDEF DEBUG ' i% = DoMsgBox("Etter crypt - Ny Org = " + szCDOrganization$ + ", Nytt Navn = " + szCDName$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) '$ENDIF ''DEBUG CreateIniKeyValue ini$, "Names", "MusicatorGSOrganisation", szCDOrganization$, cmoAll CreateIniKeyValue ini$, "Names", "MusicatorGSName", szCDName$, cmoAll IF RestartListEmpty() = fFALSE% THEN '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, RESTARTWINDEMO, "FInfoDlgProc", 0, "") '$ELSE sz$ = UIStartDlg(CUIDLL$, RESTARTWIN, "FInfoDlgProc", 0, "") '$ENDIF IF sz$ = "CONTINUE" THEN UIPop 1 ELSEIF sz$ = "BACK" THEN UIPop 1 END ELSE UIPop 1 GOTO AGAIN END IF i% = ExitExecRestart IF i% = 0 THEN GOTO AGAIN ENDIF ELSE i% = ExitExecRestart i% = DoMsgBox("Please close down and restart Windows.", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK) ENDIF ENDIF END ERRQUIT: i% = DoMsgBox(szBadDisks$, szTitle$, MB_OK+MB_TASKMODAL+MB_ICONHAND) END '--------------------------------------------------------------------------- ' ASKQUIT: Ensure the user really wants to quit '--------------------------------------------------------------------------- ASKQUIT: '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, ASKQUITDEMO, "FQuitDlgProc", 0, "") '$ELSE sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "") '$ENDIF IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "REACTIVATE" THEN GOTO ASKQUIT ELSE UIPop 1 END IF RETURN '************************************************************************* ' S U B R O U T I N E S '************************************************************************* '**************************************************************************** ' FUNCTION : BadPath ' ' DESCRIPTION : Display BADDIR dialog ' ' NOTES : Arguments none. ' Returns none. ' ' INIT DATE LOG (Newest first) ' --------------------------------------------------------------------------- ' SVBR 92.12.15 Initial version created '****************************************************************************/ SUB BadPath STATIC BADDIR1: '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, BADDIRDEMO, "FInfo0DlgProc", 0, "") '$ELSE sz$ = UIStartDlg(CUIDLL$, BADDIR, "FInfo0DlgProc", 0, "") '$ENDIF IF sz$ = "REACTIVATE" THEN GOTO BADDIR1 END IF UIPop 1 END SUB ''End of BadPath '************************************************************************* '** Routine: CalcPathSpace '** Purpose: '** Determine free space on path drive. '** Arguments: '** szDir '** Returns: '** cbDrive '** szDrive '************************************************************************* SUB CalcPathSpace STATIC szDrive$ = Mid$(szDir$, 1, 1) cbDrive& = GetFreeSpaceForDrive(Mid$(szDrive$,1, 1)) cbDrive& = (cbDrive& + 1023) / 1024 cbWinDrive& = GetFreeSpaceForDrive(Mid$(szWinDrive$,1, 1)) cbWinDrive& = (cbWinDrive& + 1023) / 1024 END SUB '************************************************************************* '** Routine: CheckTempSpace '** Purpose: '** Check free space on temp-directory. '** Arguments: '** none '** Returns: '** none '************************************************************************* SUB CheckTempSpace STATIC szTempDir$ = GetEnvVariableValue ("TEMP") IF szTempDir$ = "" THEN szTempDir$ = GetWindowsDir() ENDIF cbFree& = GetFreeSpaceForDrive(Mid$(szTempDir$,1, 1)) cbFree& = (cbFree& + 1023) / 1024 IF cbFree& < MinTempSpace% THEN i% = DoMsgBox("It is recomended to use a TEMP-directory whith at least 3 MB free space. You have only " + Ltrim$(Str$(cbFree&)) + szKB$ + "!", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK) ENDIF END SUB '************************************************************************* '** Routine: CheckATM '** Purpose: '** Determinate if the user has selected ATM '** Arguments: '** none '** Returns: '** none '************************************************************************* SUB CheckATM STATIC ini$ = MakePath(GetWindowsDir, "ATM.INI") AGAIN: IF DoesFileExist (ini$, femExists) = fTRUE% THEN '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, ASKATMDEMO, "FInfoDlgProc", 0, "") '$ELSE sz$ = UIStartDlg(CUIDLL$, ASKATM, "FInfoDlgProc", 0, "") '$ENDIF IF sz$ = "CONTINUE" THEN UIPop 1 fATMFiles% = fTRUE% IF GetIniKeyString (ini$, "Settings", "ATM") = "Off" THEN CreateIniKeyValue ini$, "Settings", "ATM", "On", cmoOverwrite ENDIF ELSEIF sz$ = "BACK" THEN UIPop 1 fATMFiles% = fFALSE% ELSE UIPop 1 GOTO AGAIN END IF ELSE fATMFiles% = fFALSE% ENDIF END SUB '************************************************************************* '** Routine: AskForBWCC '** Purpose: '** '** Arguments: '** none '** Returns: '** none '************************************************************************* FUNCTION AskForBWCC STATIC AS INTEGER i% = DoMsgBox("Ikke implementert BWCC.DLL-sjekk", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) BWCCAGAIN: sz$ = UIStartDlg(CUIDLL$, BWCCEXISTS, "FInfoDlgProc", BWCCHELP, HELPPROC$) ''Må fjerne BACK IF sz$ = "BACK" THEN UIPop 1 AskForBWCC = -1 ELSEIF sz$ = "CONTINUE" THEN UIPop 1 AskForBWCC = fTRUE% ELSEIF sz$ = "EXIT" THEN UIPop 1 AskForBWCC = fFALSE% ELSEIF sz$ = "CANCEL" THEN UIPop 1 AskForBWCC = fFALSE% ELSEIF sz$ = "REACTIVATE" THEN GOTO BWCCAGAIN ELSE UIPop 1 END IF END FUNCTION '************************************************************************* '** Routine: CreateInstallPath '** Purpose: '** Create destination directories '** Arguments: '** none. '** Returns: '** none. '************************************************************************* FUNCTION CreateInstallPath (szDir$) STATIC AS STRING sz$ = "CONTINUE" IF DoesDirExist(szDir$) <> 1 THEN CREATEPATH1: '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, CREATEPATHDEMO, "FInfo0DlgProc", 0, "") '$ELSE sz$ = UIStartDlg(CUIDLL$, CREATEPATH, "FInfo0DlgProc", 0, "") '$ENDIF IF sz$ = "REACTIVATE" THEN GOTO CREATEPATH1 ELSEIF sz$ = "CONTINUE" THEN CreateDir szDir$, cmoVital END IF UIPop 1 END IF CreateInstallPath = sz$ END FUNCTION '************************************************************************* '** Routine: DetermineSizes '** Purpose: '** Determine space required for each option. '** Arguments: '** none. '** Returns: '** cbMGWFiles '** cbWinFiles '************************************************************************* SUB DetermineSizes STATIC szSrcDir$ = GetSymbolValue("STF_SRCDIR") ClearCopyList AddSectionFilesToCopyList "BasisFiles", szSrcDir$, szDir$ AddSectionFilesToCopyList "MctFiles", szSrcDir$, szDir$ IF szDir$ = szWinDir$ THEN AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM") IF fATMFiles% = fTRUE% THEN ini$ = MakePath(GetWindowsDir, "ATM.INI") szPSpfmFontsPath$ = GetIniKeyString (ini$, "Setup", "PFM_Dir") szPSpfbFontsPath$ = GetIniKeyString (ini$, "Setup", "PFB_Dir") '' NB! SVBR B¢r sjekke om disse ligger på samme sted som Windows AddSectionFilesToCopyList "ATMpfbFiles", szSrcDir$, szPSpfbFontsPath$ AddSectionFilesToCopyList "ATMpfmFiles", szSrcDir$, szPSpfmFontsPath$ ' RenameFile MakePath(sz ELSE AddSectionFilesToCopyList "TrueTypeFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM") ENDIF ENDIF ListSym$ = "MGWNeeds" i% = GetCopyListCost ("", ListSym$, "") cbMGWFiles& = 0 FOR i% = 1 TO MaxNoOfDisks% STEP 1 cbMGWFiles& = cbMGWFiles& + VAL(GetListItem(ListSym$, i%)) NEXT i% cbMGWFiles& = (cbMGWFiles& + 1023) / 1024 IF szDir$ <> szWinDir$ THEN ClearCopyList AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, szWinDir$ IF fATMFiles% = fTRUE% THEN ini$ = MakePath(GetWindowsDir, "ATM.INI") szPSpfmFontsPath$ = GetIniKeyString (ini$, "Setup", "PFM_Dir") szPSpfbFontsPath$ = GetIniKeyString (ini$, "Setup", "PFB_Dir") '' NB! SVBR B¢r sjekke om disse ligger på samme sted som Windows AddSectionFilesToCopyList "ATMpfbFiles", szSrcDir$, szPSpfbFontsPath$ AddSectionFilesToCopyList "ATMpfmFiles", szSrcDir$, szPSpfmFontsPath$ ELSE AddSectionFilesToCopyList "TrueTypeFiles", szSrcDir$, szWinDir$ ENDIF ListSym$ = "WindowsNeeds" i% = GetCopyListCost ("", ListSym$, "") cbWinFiles& = 0 FOR i% = 1 TO MaxNoOfDisks% STEP 1 cbWinFiles& = cbWinFiles& + VAL(GetListItem(ListSym$, i%)) NEXT i% cbWinFiles& = (cbWinFiles& + 1023) / 1024 ELSE cbWinFiles& = 0 ENDIF ClearCopyList ListSym$ = "" END SUB '************************************************************************* '** Routine: GetDriveList '** Purpose: '** '** Arguments: '** none. '** Returns: '** '************************************************************************* SUB GetDriveList STATIC DriveList$ = "DriveList" SetSymbolValue DriveList$, "" TmpDriveList$ = "TmpDriveList" GetValidDrivesList( TmpDriveList$ ) iMaxDiskNo% = GetListLength (TmpDriveList$) RemovableDriveList$ = "RemovableDriveList" GetRemovableDrivesList( RemovableDriveList$ ) iMaxRemovableDiskNo% = GetListLength (RemovableDriveList$) FOR iDiskNo% = 1 TO iMaxDiskNo% STEP 1 fFound% = fFALSE% FOR iRemovableDiskNo% = 1 TO iMaxRemovableDiskNo% STEP 1 IF GetListItem (TmpDriveList$, iDiskNo%) = GetListItem (RemovableDriveList$, iRemovableDiskNo%) THEN fFound% = fTRUE% EXIT FOR ENDIF NEXT iRemovableDiskNo% IF fFound% <> 1 THEN cbDrive& = GetFreeSpaceForDrive (GetListItem (TmpDriveList$, iDiskNo%) ) cbDrive& = (cbDrive& + 1023) / 1024 ' AddListItem DriveList$, GetListItem (TmpDriveList$, iDiskNo%) + CHR$(9) + Ltrim$(Str$( cbDrive& )) + szKB AddListItem DriveList$, GetListItem (TmpDriveList$, iDiskNo%) + " " + Ltrim$(Str$( cbDrive& )) + szKB ENDIF NEXT iDiskNo% '$IFDEF DEBUG i% = DoMsgBox("Liste over stasjoner = " + GetSymbolValue(DriveList$), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) '$ENDIF ''DEBUG RemoveSymbol (TmpDriveList$) RemoveSymbol (RemovableDriveList$) END SUB '************************************************************************* '** Routine: GetInstallPath '** Purpose: '** Query user for installation path. '** Arguments: '** none. '** Returns: '** szDir$ '************************************************************************* SUB GetInstallPath STATIC GETPATH: '$IFDEF DEBUG i% = DoMsgBox("Liste over stasjoner = " + GetSymbolValue(DriveList$), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) '$ENDIF ''DEBUG SetSymbolValue "ListItemsIn", GetSymbolValue(DriveList$) ' LOCALHARDDRIVES$ = "LocalHardDrives" ' GetValidDrivesList( LOCALHARDDRIVES$ ) ' SetSymbolValue "ListItemsIn", GetSymbolValue(LOCALHARDDRIVES$) ' NB! SVBR ' SetSymbolValue "ListItemsOut", szDir$ SetSymbolValue "EditTextIn", szDir$ SetSymbolValue "EditFocus", "END" GETPATHL1: fError% = fFALSE% '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, GETPATHDEMO, "FListEditDlgProc", HELPPATHDEMO, HELPPROC$) '$ELSE sz$ = UIStartDlg(CUIDLL$, GETPATH, "FListEditDlgProc", HELPPATH, HELPPROC$) '$ENDIF IF sz$ = "CONTINUE" THEN szTDir$ = GetSymbolValue("EditTextOut") szTDir$ = Ltrim$(szTDir$) szTDir$ = Rtrim$(szTDir$) IF InStr(1, szTDir$, ":") = fFALSE% THEN szTDir$ = Mid$(GetSymbolValue("STF_CWDDIR"), 1, 1) + ":" + szTDir$ END IF IF MID$(szTDir$, LEN(szTDir$), 1) = "\" THEN fError% = fTRUE% END IF '' NB! SVBR IsDirWriteable does not work propably ' IF fError% <> fTRUE% AND IsDirWritable(szTDir$) = fFALSE% THEN IF fError% <> fTRUE% AND IsDriveValid( MID$(szTDir$, 1, 1) ) = fFALSE% THEN fError% = fTRUE% END IF IF fError% <> fTRUE% AND IsDriveRemovable(szTDir$) <> 0 THEN fError% = fTRUE% END IF IF fError% <> fTRUE% AND Exists(szTDir$) THEN fError% = fTRUE% END IF IF fError% <> fTRUE% THEN i% = 0 GETPATHL2: iLastDir% = i% i% = INSTR(iLastDir%+1, szTDir$, "\") IF i% <> 0 THEN GOTO GETPATHL2 END IF IF MID$(szTDir$, iLastDir%, 1) = "\" THEN iLastDir% = iLastDir% + 1 END IF szLastDir$ = UCASE$(MID$(szTDir$, iLastDir%)) IF szLastDir$ = "PRN" OR szLastDir$ = "AUX" OR szLastDir$ = "CON" THEN fError% = fTRUE% END IF IF LEN(szLastDir$) = 4 THEN iNum = VAL(MID$(szLastDir$, 4, 1)) IF iNum >= 1 AND iNum <= 9 THEN IF MID$(szLastDir$, 1, 3) = "COM" OR MID$(szLastDir$, 1, 3) = "LPT" THEN fError% = fTRUE% END IF END IF END IF END IF IF fError% = fTRUE% THEN BadPath GOTO GETPATHL1 END IF sz$ = CreateInstallPath(szTDir$) IF sz$ <> "CONTINUE" THEN GOTO GETPATHL1 END IF '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, WAITSIZEDEMO, "FModelessDlgProc", 0, "") '$ELSE sz$ = UIStartDlg(CUIDLL$, WAITSIZE, "FModelessDlgProc", 0, "") '$ENDIF szDir$ = szTDir$ DetermineSizes CalcPathSpace UIPop 1 END IF UIPop 1 END SUB '************************************************************************* '** Routine: Install '** Purpose: '** Builds the copy list and performs all installation operations. '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB Install STATIC '' Do not check the size of files on diskett ' i% = SetSizeCheckMode (scmOnIgnore) CreateDir szDir$, cmoVital AddSectionFilesToCopyList "BasisFiles", szSrcDir$, szDir$ AddSectionFilesToCopyList "MctFiles", szSrcDir$, szDir$ IF DoesFileExist ( Makepath (szWinDir$, "SYSTEM\BWCC.DLL"), femExists) = fTRUE% THEN ' IF GetDateOfFile ( Makepath (szWinDir$, "SYSTEM\BWCC.DLL") ) = GetSectionKeyDate ("BWCCdllFiles", "Borland Custom Control") THEN ' AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM") ' ELSE ' InstBWCC% = AskForBWCC() ' IF InstBWCC%= 1 THEN ' AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM") ' ELSEIF InstBWCC%= -1 THEN ' ' Back ' ENDIF ' ENDIF ELSE AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM") ENDIF IF fATMFiles% = fTRUE% THEN ini$ = MakePath(GetWindowsDir, "ATM.INI") szPSpfmFontsPath$ = GetIniKeyString (ini$, "Setup", "PFM_Dir") AddSectionFilesToCopyList "ATMpfmFiles", szSrcDir$, szPSpfmFontsPath$ szPSpfbFontsPath$ = GetIniKeyString (ini$, "Setup", "PFB_Dir") AddSectionFilesToCopyList "ATMpfbFiles", szSrcDir$, szPSpfbFontsPath$ ELSE AddSectionFilesToCopyList "TrueTypeFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM") ENDIF SetRestartDir szWinDir$ CopyFilesInCopyList IF fATMFiles% = fTRUE% THEN ini$ = MakePath(GetWindowsDir, "ATM.INI") CreateIniKeyValue ini$, "Fonts", "Musicator", MakePath( szPSpfmFontsPath$, "mu______.pfm") + "," + MakePath( szPSpfbFontsPath$, "mu______.pfb"), cmoOverwrite ELSE ini$ = MakePath(GetWindowsDir, "WIN.INI") CreateIniKeyValue ini$, "fonts", "Musicator (TrueType)", "MUSICA2.FOT", cmoOverwrite ENDIF CreateProgmanGroup szGroupName$, "", cmoNone CreateProgmanItem szGroupName$, "Readme", "Write.exe " + MakePath (szDir$, "README.WRI"), "", cmoOverwrite CreateProgmanItem szGroupName$, szProgramName$, MakePath (szDir$, "winmusgs.exe"), "", cmoOverwrite END SUB '************************************************************************* '** Routine: InsufficientSpace '** Purpose: '** Display TOOBIG dialog '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB InsufficientSpace STATIC BADDIR1: '$IFDEF DEMO sz$ = UIStartDlg(CUIDLL$, TOOBIGDEMO, "FInfo0DlgProc", 0, "") '$ELSE sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "") '$ENDIF IF sz$ = "REACTIVATE" THEN GOTO BADDIR1 END IF UIPop 1 END SUB '************************************************************************* '** Routine: 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