home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computer Buyer 1995 September
/
C_BUYER.ISO
/
trspers
/
rosettaj.mst
< prev
next >
Wrap
Text File
|
1995-06-14
|
12KB
|
392 lines
'**************************************************************************
'* The Rosetta Stone Program Installer *
'* *
'* Copyright 1993 - Fairfield Language Technologies *
'**************************************************************************
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
''$DEFINE DEBUG ''Define for script development/debugging
''Dialog ID's
CONST WELCOME = 100
CONST ASKQUIT = 200
CONST EXITFAILURE = 400
CONST EXITQUIT = 600
CONST EXITSUCCESS = 700
CONST OPTIONS = 800
CONST APPHELP = 900
CONST CHECKSIZE = 1000
CONST HELPSETDEST = 2400
CONST CHECKLANGS = 2600
CONST HELPSELECT = 2700
CONST SETCD = 2900
CONST HELPSETCD = 3000
CONST EXITDEMSUCCESS= 3100
CONST TOOBIG = 6300
CONST BADPATH = 6400
CONST EXITRESTART = 4600
''Bitmap ID
CONST LOGO = 1
GLOBAL WINDRIVE$ ''Windows drive letter
GLOBAL DEST$ ''Default destination directory.
GLOBAL STATUSTEXT$ ''Dialog list symbol names
GLOBAL DRIVETEXT$
GLOBAL BIGLIST$ ''List of file cost calc results (boolean)
GLOBAL EXTRACOSTS$ ''List of extra costs to add per drive
GLOBAL NEEDS$ ''List of costs per drive
GLOBAL CDLETTER$
GLOBAL CDLIST$
DECLARE SUB RecalcPath
DECLARE SUB SetDriveStatus
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
INIT:
CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
SetBitmap CUIDLL$, LOGO
SetTitle "The Rosetta Stone Setup"
szInf$ = GetSymbolValue("STF_SRCINFPATH")
IF szInf$ = "" THEN
szInf$ = GetSymbolValue("STF_CWDDIR") + "ROSETTA.INF"
END IF
ReadInfFile szInf$
WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
DEST$ = "C:\ROSETTA"
CDLIST$ = "TheList"
SetSymbolValue CDLIST$,""
FOR i% = 1 to 5
AddListItem CDLIST$, "OFF"
NEXT i%
ALLOFF$ = GetSymbolValue(CDLIST$)
CDLETTER$ = "D:"
DRIVETEXT$ = "DriveStatusText"
FOR i% = 1 to 3
AddListItem DRIVETEXT$, ""
NEXT i%
ReplaceListItem DRIVETEXT$, 3, DEST$
BIGLIST$ = ""
NEEDS$ = "SpaceNeeds"
EXTRACOSTS$ = "ExtraCosts"
FOR i% = 1 to 26 STEP 1
AddListItem EXTRACOSTS$, "0"
AddListItem NEEDS$, "0"
NEXT i%
ndrive% = ASC(ucase$(WINDRIVE$))-ASC("A")+1
ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
AddSectionFilesToCopyList "rosetta", GetSymbolValue("STF_SRCDIR"), DEST$
AddSectionFilesToCopyList "fonts", GetSymbolValue("STF_SRCDIR"), GetWindowsSysDir()
'' AddSectionFilesToCopyList "setup", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "setup")
AddSectionFilesToCopyList "cds", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "cds")
AddSectionFilesToCopyList "chapters", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "chapters")
AddSectionFilesToCopyList "demtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
AddSectionFilesToCopyList "engtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
AddSectionFilesToCopyList "fratext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
AddSectionFilesToCopyList "deutext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
AddSectionFilesToCopyList "esptext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
RecalcPath
SetDriveStatus
'$IFDEF DEBUG
i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
WinDrive$ = MID$(GetWindowsDir, 1, 1)
IF IsDriveValid(WinDrive$) = 0 THEN
i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
GOTO QUIT
END IF
'$ENDIF ''DEBUG
WELCOME:
sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOSUB ASKQUIT
GOTO WELCOME
END IF
SETCD:
SetSymbolValue "EditTextIn", CDLETTER$
SETCDL1:
sz$ = UIStartDlg(CUIDLL$, SETCD, "FEditDlgProc", HELPSETCD, HELPPROC$)
CDLETTER$ = GetSymbolValue("EditTextOut")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSEIF sz$="REACTIVATE" THEN
GOTO SETCDL1
ELSEIF sz$="BACK" THEN
UIPop 1
GOTO WELCOME
ELSE
GOSUB ASKQUIT
GOTO SETCDL1
END IF
CHECKSIZE:
SetSymbolValue "EditTextIn", DEST$
SetSymbolValue "EditFocus", "END"
CHECKSIZEL1:
sz$ = UIStartDlg(CUIDLL$, CHECKSIZE, "FCheckSizeDlgProc", HELPSETDEST, HELPPROC$)
DEST$ = GetSymbolValue("EditTextOut")
IF sz$ = "CONTINUE" THEN
RecalcPath
SetDriveStatus
IF IsDirWritable(DEST$) = 0 THEN
GOSUB BADPATH
GOTO CHECKSIZEL1
END IF
drive$ = MID$(DEST$, 1, 1)
ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
cost& = VAL(GetListItem(NEEDS$, ndrive%))
free& = GetFreeSpaceForDrive(drive$)
IF cost& > free& THEN
GOSUB TOOBIG
GOTO CHECKSIZEL1
END IF
UIPop 1
ELSEIF sz$="REACTIVATE" THEN
RecalcPath
SetDriveStatus
GOTO CHECKSIZEL1
ELSEIF sz$="BACK" THEN
UIPop 1
GOTO SETCD
ELSE
GOSUB ASKQUIT
GOTO CHECKSIZEL1
END IF
INSTALL:
SrcDir$ = GetSymbolValue("STF_SRCDIR")
CreateDir DEST$, cmoNone
OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
WriteToLogFile ""
WriteToLogFile " User chose as destination directory: '" + DEST$ + "'"
s$ = MakePath(DEST$,"setup")
'' SetRestartDir s$
WriteToLogFile " SetRestartDir " + s$
CopyFilesInCopyList
WriteToLogFile " CopyFilesInCopyList"
CreateIniKeyValue "WIN.INI","fonts","Cyrillic (TrueType)","CYRIL1.FOT",cmoNone
CreateIniKeyValue "WIN.INI","fonts","Cyrillic Bold (TrueType)","CYRIL2.FOT",cmoNone
WriteToLogFile " CreateIniKeyValue(s)"
CreateProgmanGroup "The Rosetta Stone", "", cmoNone
ShowProgmanGroup "The Rosetta Stone", 1, cmoNone
CreateProgmanItem "The Rosetta Stone", "The Rosetta Stone", MakePath(DEST$,"rosetta.exe"), MakePath(DEST$,"rosetta.ico"), cmoOverwrite
CreateProgmanItem "The Rosetta Stone", "Read Me First", "Notepad "+MakePath(DEST$,"readme.txt"), "notepad.exe", cmoOverwrite
CreateProgmanItem "The Rosetta Stone", "License - Read to Use", "Notepad "+MakePath(DEST$,"license.txt"), "notepad.exe", cmoOverwrite
''CreateProgmanItem "The Rosetta Stone", "A LIRE D'ABORD", "Notepad "+MakePath(DEST$,"a_lire.txt"), "notepad.exe", cmoOverwrite
''CreateProgmanItem "The Rosetta Stone", "ZUERST LESEN", "Notepad "+MakePath(DEST$,"zrst_lsn.txt"), "notepad.exe", cmoOverwrite
''CreateProgmanItem "The Rosetta Stone", "LEER ESTO PRIMERO", "Notepad "+MakePath(DEST$,"leeresto.txt"), "notepad.exe", cmoOverwrite
''CreateProgmanItem "The Rosetta Stone", "Leggimi", "Notepad "+MakePath(DEST$,"leggimi.txt"), "notepad.exe", cmoOverwrite
''CreateProgmanItem "The Rosetta Stone", "_", "Notepad "+MakePath(DEST$,"japanese.txt"), "notepad.exe", cmoOverwrite
'' CreateProgmanItem "The Rosetta Stone", "Chapter Installer", MakePath(DEST$,"setup\_mstest.exe")+" "+MakePath(DEST$,"setup\cdtohd.mst"), MakePath(DEST$,"cdtohd.ico"), cmoOverwrite
'' CreateProgmanItem "The Rosetta Stone", "Chapter Uninstaller", MakePath(DEST$,"setup\_mstest.exe")+" "+MakePath(DEST$,"setup\hdtonull.mst"), MakePath(DEST$,"hdtonull.ico"), cmoOverwrite
CreateIniKeyValue MakePath(DEST$,"CHAPTERS\CHAPTERS.INI"), "CD Drive", "CD Drive", CDLETTER, cmoOverwrite
CloseLogFile
GOTO QUIT
if RestartListEmpty()=0 then
RESTART:
sz$ = UIStartDlg(CUIDLL$, EXITRESTART, "FQuitDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPopAll
GOTO QUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO RESTART
ELSE
UIPop 1
if ExitExecRestart()=0 then
else
end if
END IF
else
end if
QUIT:
ON ERROR GOTO ERRQUIT
IF ERR = 0 THEN
dlg% = EXITDEMSUCCESS
ELSEIF ERR = STFQUIT THEN
dlg% = EXITQUIT
ELSE
dlg% = EXITFAILURE
END IF
QUITL1:
sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO QUITL1
END IF
UIPop 1
END
ERRQUIT:
i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
END
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
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
'**
'** 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
'**
'** Purpose:
'** Recalculates disk space and sets option status info according
'** to the current destination path.
'** Arguments:
'** none.
'** Returns:
'** none.
'*************************************************************************
SUB RecalcPath STATIC
ClearCopyList
AddSectionFilesToCopyList "rosetta", GetSymbolValue("STF_SRCDIR"), DEST$
AddSectionFilesToCopyList "fonts", GetSymbolValue("STF_SRCDIR"), GetWindowsSysDir()
''AddSectionFilesToCopyList "setup", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "setup")
AddSectionFilesToCopyList "cds", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "cds")
AddSectionFilesToCopyList "chapters", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "chapters")
AddSectionFilesToCopyList "demtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
AddSectionFilesToCopyList "engtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
AddSectionFilesToCopyList "fratext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
AddSectionFilesToCopyList "deutext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
AddSectionFilesToCopyList "esptext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
CursorSave% = ShowWaitCursor()
FOR i% = 1 to 26
ReplaceListItem NEEDS$, i%, "0"
NEXT i%
StillNeed& = GetCopyListCost(EXTRACOSTS$, NEEDS$, "")
cost& = 0
FOR i% = 1 to 26
cost& = cost& + VAL(GetListItem(NEEDS$, i%))
NEXT i%
STATUSTEXT$ = STR$(cost&/1024)+" K, "+STR$(StillNeed&/1024)+" K"
IF StillNeed&>0 THEN
BIGLIST$ = "YES"
ELSE
BIGLIST$ = ""
ENDIF
RestoreCursor CursorSave%
END SUB
'**
'** Purpose:
'** Sets drive status info according to latest disk space calcs.
'** Arguments:
'** none.
'** Returns:
'** none.
'*************************************************************************
SUB SetDriveStatus STATIC
drive$ = MID$(DEST$, 1, 1)
ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
cost& = VAL(GetListItem(NEEDS$, ndrive%))
free& = GetFreeSpaceForDrive(drive$)
ReplaceListItem DRIVETEXT$, 1, STR$(cost& / 1024) + " K"
ReplaceListItem DRIVETEXT$, 2, STR$(free& / 1024) + " K"
END SUB