home *** CD-ROM | disk | FTP | other *** search
/ Computer Buyer 1995 September / C_BUYER.ISO / trspers / rosetta.mst < prev    next >
Text File  |  1995-06-14  |  12KB  |  386 lines

  1. '**************************************************************************
  2. '*                  The Rosetta Stone Program Installer                   *
  3. '*                                                                        *
  4. '*            Copyright 1993 - Fairfield Language Technologies            *
  5. '**************************************************************************
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''$DEFINE DEBUG  ''Define for script development/debugging
  11.  
  12. ''Dialog ID's
  13. CONST WELCOME       = 100
  14. CONST ASKQUIT       = 200
  15. CONST EXITFAILURE   = 400
  16. CONST EXITQUIT      = 600
  17. CONST EXITSUCCESS   = 700
  18. CONST OPTIONS       = 800
  19. CONST APPHELP       = 900
  20. CONST CHECKSIZE     = 1000
  21. CONST HELPSETDEST   = 2400
  22. CONST CHECKLANGS    = 2600
  23. CONST HELPSELECT    = 2700
  24. CONST SETCD         = 2900
  25. CONST HELPSETCD     = 3000
  26. CONST EXITDEMSUCCESS= 3100
  27. CONST TOOBIG        = 6300
  28. CONST BADPATH       = 6400
  29. CONST EXITRESTART   = 4600
  30.  
  31. ''Bitmap ID
  32. CONST LOGO = 1
  33.  
  34. GLOBAL WINDRIVE$    ''Windows drive letter
  35. GLOBAL DEST$        ''Default destination directory.
  36.  
  37. GLOBAL STATUSTEXT$  ''Dialog list symbol names
  38. GLOBAL DRIVETEXT$
  39.  
  40. GLOBAL BIGLIST$     ''List of file cost calc results (boolean)
  41. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  42. GLOBAL NEEDS$       ''List of costs per drive
  43.  
  44. GLOBAL CDLETTER$
  45. GLOBAL CDLIST$
  46.  
  47. DECLARE SUB RecalcPath
  48. DECLARE SUB SetDriveStatus
  49. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  50.  
  51.  
  52. INIT:
  53.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  54.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  55.  
  56.     SetBitmap CUIDLL$, LOGO
  57.     SetTitle "The Rosetta Stone Setup"
  58.  
  59.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  60.     IF szInf$ = "" THEN
  61.     szInf$ = GetSymbolValue("STF_CWDDIR") + "ROSETTA.INF"
  62.     END IF
  63.     ReadInfFile szInf$
  64.  
  65.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  66.     DEST$ = "C:\ROSETTA"
  67.  
  68.     CDLIST$ = "TheList"
  69.     SetSymbolValue CDLIST$,""
  70.     FOR i% = 1 to 5
  71.     AddListItem CDLIST$, "OFF"
  72.     NEXT i%
  73.     ALLOFF$ = GetSymbolValue(CDLIST$)
  74.  
  75.     CDLETTER$ = "D:"
  76.  
  77.     DRIVETEXT$ = "DriveStatusText"
  78.     FOR i% = 1 to 3
  79.     AddListItem DRIVETEXT$, ""
  80.     NEXT i%
  81.     ReplaceListItem DRIVETEXT$, 3, DEST$
  82.  
  83.     BIGLIST$ = ""
  84.     NEEDS$ = "SpaceNeeds"
  85.  
  86.     EXTRACOSTS$ = "ExtraCosts"
  87.     FOR i% = 1 to 26 STEP 1
  88.     AddListItem EXTRACOSTS$, "0"
  89.     AddListItem NEEDS$, "0"
  90.     NEXT i%
  91.     ndrive% = ASC(ucase$(WINDRIVE$))-ASC("A")+1
  92.     ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  93.  
  94.     AddSectionFilesToCopyList "rosetta", GetSymbolValue("STF_SRCDIR"), DEST$
  95.     AddSectionFilesToCopyList "fonts", GetSymbolValue("STF_SRCDIR"), GetWindowsSysDir()
  96. ''    AddSectionFilesToCopyList "setup", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "setup")
  97.     AddSectionFilesToCopyList "cds", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "cds")
  98.     AddSectionFilesToCopyList "chapters", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "chapters")
  99.     AddSectionFilesToCopyList "demtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\demtext")
  100.     AddSectionFilesToCopyList "engtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\engtext")
  101.     AddSectionFilesToCopyList "fratext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\fratext")
  102.     AddSectionFilesToCopyList "deutext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\deutext")
  103.     AddSectionFilesToCopyList "esptext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\esptext")
  104.  
  105.     RecalcPath
  106.     SetDriveStatus
  107.  
  108. '$IFDEF DEBUG
  109.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  110.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  111.     IF IsDriveValid(WinDrive$) = 0 THEN
  112.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  113.     GOTO QUIT
  114.     END IF
  115. '$ENDIF ''DEBUG
  116.  
  117.  
  118. WELCOME:
  119.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  120.     IF sz$ = "CONTINUE" THEN
  121.     UIPop 1
  122.     ELSE
  123.     GOSUB ASKQUIT
  124.     GOTO WELCOME
  125.     END IF
  126.  
  127.  
  128. SETCD:
  129.     SetSymbolValue "EditTextIn", CDLETTER$
  130. SETCDL1:
  131.     sz$ = UIStartDlg(CUIDLL$, SETCD, "FEditDlgProc", HELPSETCD, HELPPROC$)
  132.     CDLETTER$ = GetSymbolValue("EditTextOut")
  133.  
  134.     IF sz$ = "CONTINUE" THEN
  135.     UIPop 1
  136.     ELSEIF sz$="REACTIVATE" THEN
  137.     GOTO SETCDL1
  138.     ELSEIF sz$="BACK" THEN
  139.     UIPop 1
  140.     GOTO WELCOME
  141.     ELSE
  142.     GOSUB ASKQUIT
  143.     GOTO SETCDL1
  144.     END IF
  145.  
  146.  
  147.  
  148. CHECKSIZE:
  149.     SetSymbolValue "EditTextIn", DEST$
  150.     SetSymbolValue "EditFocus", "END"
  151. CHECKSIZEL1:
  152.     sz$ = UIStartDlg(CUIDLL$, CHECKSIZE, "FCheckSizeDlgProc", HELPSETDEST, HELPPROC$)
  153.     DEST$ = GetSymbolValue("EditTextOut")
  154.     IF sz$ = "CONTINUE" THEN
  155.     RecalcPath
  156.     SetDriveStatus
  157.  
  158.     IF IsDirWritable(DEST$) = 0 THEN
  159.         GOSUB BADPATH
  160.         GOTO CHECKSIZEL1
  161.     END IF
  162.  
  163.     drive$ = MID$(DEST$, 1, 1)
  164.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  165.     cost& = VAL(GetListItem(NEEDS$, ndrive%))
  166.     free& = GetFreeSpaceForDrive(drive$)
  167.     IF cost& > free& THEN
  168.         GOSUB TOOBIG
  169.         GOTO CHECKSIZEL1
  170.     END IF
  171.  
  172.     UIPop 1
  173.     ELSEIF sz$="REACTIVATE" THEN
  174.     RecalcPath
  175.     SetDriveStatus
  176.     GOTO CHECKSIZEL1
  177.     ELSEIF sz$="BACK" THEN
  178.     UIPop 1
  179.     GOTO SETCD
  180.     ELSE
  181.     GOSUB ASKQUIT
  182.     GOTO CHECKSIZEL1
  183.     END IF
  184.  
  185.  
  186. INSTALL:
  187.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  188.     CreateDir DEST$, cmoNone
  189.  
  190.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  191.     WriteToLogFile ""
  192.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  193.  
  194.     s$ = MakePath(DEST$,"setup")
  195.     SetRestartDir s$
  196.     
  197.     CopyFilesInCopyList
  198.  
  199.     CreateIniKeyValue "WIN.INI","fonts","Cyrillic (TrueType)","CYRIL1.FOT",cmoNone
  200.     CreateIniKeyValue "WIN.INI","fonts","Cyrillic Bold (TrueType)","CYRIL2.FOT",cmoNone
  201.      
  202.     CreateProgmanGroup "The Rosetta Stone", "", cmoNone
  203.     ShowProgmanGroup  "The Rosetta Stone", 1, cmoNone
  204.     CreateProgmanItem "The Rosetta Stone", "The Rosetta Stone", MakePath(DEST$,"rosetta.exe"), MakePath(DEST$,"rosetta.ico"), cmoOverwrite
  205.     CreateProgmanItem "The Rosetta Stone", "Read Me First", "Notepad "+MakePath(DEST$,"readme.txt"), "notepad.exe", cmoOverwrite
  206.     CreateProgmanItem "The Rosetta Stone", "License - Read to Use", "Notepad "+MakePath(DEST$,"license.txt"), "notepad.exe", cmoOverwrite
  207.     CreateProgmanItem "The Rosetta Stone", "A LIRE D'ABORD", "Notepad "+MakePath(DEST$,"a_lire.txt"), "notepad.exe", cmoOverwrite
  208.     CreateProgmanItem "The Rosetta Stone", "ZUERST LESEN", "Notepad "+MakePath(DEST$,"zrst_lsn.txt"), "notepad.exe", cmoOverwrite
  209.     CreateProgmanItem "The Rosetta Stone", "LEER ESTO PRIMERO", "Notepad "+MakePath(DEST$,"leeresto.txt"), "notepad.exe", cmoOverwrite
  210.     CreateProgmanItem "The Rosetta Stone", "Leggimi", "Notepad "+MakePath(DEST$,"leggimi.txt"), "notepad.exe", cmoOverwrite
  211.     ''CreateProgmanItem "The Rosetta Stone", "_", "Notepad "+MakePath(DEST$,"japanese.txt"), "notepad.exe", cmoOverwrite
  212.     ''CreateProgmanItem "The Rosetta Stone", "Chapter Installer", MakePath(DEST$,"setup\_mstest.exe")+" "+MakePath(DEST$,"setup\cdtohd.mst"), MakePath(DEST$,"cdtohd.ico"), cmoOverwrite
  213.     ''CreateProgmanItem "The Rosetta Stone", "Chapter Uninstaller", MakePath(DEST$,"setup\_mstest.exe")+" "+MakePath(DEST$,"setup\hdtonull.mst"), MakePath(DEST$,"hdtonull.ico"), cmoOverwrite
  214.  
  215.     CreateIniKeyValue MakePath(DEST$,"CHAPTERS\CHAPTERS.INI"), "CD Drive", "CD Drive", CDLETTER, cmoOverwrite
  216.  
  217.     CloseLogFile
  218.     if RestartListEmpty()=0 then
  219. RESTART:
  220.     sz$ = UIStartDlg(CUIDLL$, EXITRESTART, "FQuitDlgProc", 0, "")
  221.      IF sz$ = "EXIT" THEN
  222.     UIPopAll
  223.     GOTO QUIT
  224.      ELSEIF sz$ = "REACTIVATE" THEN
  225.     GOTO RESTART
  226.      ELSE
  227.       UIPop 1
  228.       if ExitExecRestart()=0 then
  229.       else
  230.       end if
  231.      END IF
  232.     else
  233.     end if
  234.  
  235. QUIT:
  236.     ON ERROR GOTO ERRQUIT
  237.  
  238.     IF ERR = 0 THEN
  239.     dlg% = EXITDEMSUCCESS
  240.     ELSEIF ERR = STFQUIT THEN
  241.     dlg% = EXITQUIT
  242.     ELSE
  243.     dlg% = EXITFAILURE
  244.     END IF
  245. QUITL1:
  246.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  247.     IF sz$ = "REACTIVATE" THEN
  248.     GOTO QUITL1
  249.     END IF
  250.     UIPop 1
  251.  
  252.     END
  253.  
  254.  
  255. ERRQUIT:
  256.     i% = DoMsgBox("Setup sources were corrupted, call Fairfield Language Technologies at (703) 432-6166", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  257.     END
  258.  
  259.  
  260. TOOBIG:
  261.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  262.     IF sz$ = "REACTIVATE" THEN
  263.     RecalcPath
  264.     SetDriveStatus
  265.     GOTO TOOBIG
  266.     END IF
  267.     UIPop 1
  268.     RETURN
  269.  
  270.  
  271. BADPATH:
  272.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  273.     IF sz$ = "REACTIVATE" THEN
  274.     GOTO BADPATH
  275.     END IF
  276.     UIPop 1
  277.     RETURN
  278.  
  279.  
  280. ASKQUIT:
  281.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  282.  
  283.     IF sz$ = "EXIT" THEN
  284.     UIPopAll
  285.     ERROR STFQUIT
  286.     ELSEIF sz$ = "REACTIVATE" THEN
  287.     GOTO ASKQUIT
  288.     ELSE
  289.     UIPop 1
  290.     END IF
  291.     RETURN
  292.  
  293.  
  294. '**
  295. '** Purpose:
  296. '**     Appends a file name to the end of a directory path,
  297. '**     inserting a backslash character as needed.
  298. '** Arguments:
  299. '**     szDir$  - full directory path (with optional ending "\")
  300. '**     szFile$ - filename to append to directory
  301. '** Returns:
  302. '**     Resulting fully qualified path name.
  303. '*************************************************************************
  304. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  305.     IF szDir$ = "" THEN
  306.     MakePath = szFile$
  307.     ELSEIF szFile$ = "" THEN
  308.     MakePath = szDir$
  309.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  310.     MakePath = szDir$ + szFile$
  311.     ELSE
  312.     MakePath = szDir$ + "\" + szFile$
  313.     END IF
  314. END FUNCTION
  315.  
  316.  
  317.  
  318. '**
  319. '** Purpose:
  320. '**     Recalculates disk space and sets option status info according
  321. '**     to the current destination path.
  322. '** Arguments:
  323. '**     none.
  324. '** Returns:
  325. '**     none.
  326. '*************************************************************************
  327. SUB RecalcPath STATIC
  328.     ClearCopyList
  329.     AddSectionFilesToCopyList "rosetta", GetSymbolValue("STF_SRCDIR"), DEST$
  330.     AddSectionFilesToCopyList "fonts", GetSymbolValue("STF_SRCDIR"), GetWindowsSysDir()
  331.   ''  AddSectionFilesToCopyList "setup", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "setup")
  332.     AddSectionFilesToCopyList "cds", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "cds")
  333.     AddSectionFilesToCopyList "chapters", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "chapters")
  334.     AddSectionFilesToCopyList "demtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\demtext")
  335.     AddSectionFilesToCopyList "engtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\engtext")
  336.     AddSectionFilesToCopyList "fratext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\fratext")
  337.     AddSectionFilesToCopyList "deutext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\deutext")
  338.     AddSectionFilesToCopyList "esptext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text\esptext")
  339.  
  340.     CursorSave% = ShowWaitCursor()
  341.  
  342.     FOR i% = 1 to 26
  343.     ReplaceListItem NEEDS$, i%, "0"
  344.     NEXT i%
  345.  
  346.     StillNeed& = GetCopyListCost(EXTRACOSTS$, NEEDS$, "")
  347.  
  348.     cost& = 0
  349.     FOR i% = 1 to 26
  350.     cost& = cost& + VAL(GetListItem(NEEDS$, i%))
  351.     NEXT i%
  352.  
  353.     STATUSTEXT$ = STR$(cost&/1024)+" K, "+STR$(StillNeed&/1024)+" K"
  354.  
  355.     IF StillNeed&>0 THEN
  356.     BIGLIST$ = "YES"
  357.     ELSE
  358.     BIGLIST$ = ""
  359.     ENDIF
  360.  
  361.     RestoreCursor CursorSave%
  362.  
  363. END SUB
  364.  
  365.  
  366. '**
  367. '** Purpose:
  368. '**     Sets drive status info according to latest disk space calcs.
  369. '** Arguments:
  370. '**     none.
  371. '** Returns:
  372. '**     none.
  373. '*************************************************************************
  374. SUB SetDriveStatus STATIC
  375.  
  376.     drive$ = MID$(DEST$, 1, 1)
  377.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  378.     cost& = VAL(GetListItem(NEEDS$, ndrive%))
  379.     free& = GetFreeSpaceForDrive(drive$)
  380.     ReplaceListItem DRIVETEXT$, 1, STR$(cost& / 1024) + " K"
  381.     ReplaceListItem DRIVETEXT$, 2, STR$(free& / 1024) + " K"
  382.  
  383. END SUB
  384.  
  385.  
  386.