home *** CD-ROM | disk | FTP | other *** search
/ Computer Buyer 1995 September / C_BUYER.ISO / trspers / rosettaj.mst < prev    next >
Text File  |  1995-06-14  |  12KB  |  392 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")
  100.     AddSectionFilesToCopyList "engtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
  101.     AddSectionFilesToCopyList "fratext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
  102.     AddSectionFilesToCopyList "deutext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
  103.     AddSectionFilesToCopyList "esptext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
  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.     WriteToLogFile "  SetRestartDir " + s$
  197.     
  198.     CopyFilesInCopyList
  199.     WriteToLogFile "  CopyFilesInCopyList"
  200.  
  201.     CreateIniKeyValue "WIN.INI","fonts","Cyrillic (TrueType)","CYRIL1.FOT",cmoNone
  202.     CreateIniKeyValue "WIN.INI","fonts","Cyrillic Bold (TrueType)","CYRIL2.FOT",cmoNone
  203.  
  204.     WriteToLogFile "  CreateIniKeyValue(s)"
  205.      
  206.     CreateProgmanGroup "The Rosetta Stone", "", cmoNone
  207.     ShowProgmanGroup  "The Rosetta Stone", 1, cmoNone
  208.     CreateProgmanItem "The Rosetta Stone", "The Rosetta Stone", MakePath(DEST$,"rosetta.exe"), MakePath(DEST$,"rosetta.ico"), cmoOverwrite
  209.     CreateProgmanItem "The Rosetta Stone", "Read Me First", "Notepad "+MakePath(DEST$,"readme.txt"), "notepad.exe", cmoOverwrite
  210.     CreateProgmanItem "The Rosetta Stone", "License - Read to Use", "Notepad "+MakePath(DEST$,"license.txt"), "notepad.exe", cmoOverwrite
  211.     ''CreateProgmanItem "The Rosetta Stone", "A LIRE D'ABORD", "Notepad "+MakePath(DEST$,"a_lire.txt"), "notepad.exe", cmoOverwrite
  212.     ''CreateProgmanItem "The Rosetta Stone", "ZUERST LESEN", "Notepad "+MakePath(DEST$,"zrst_lsn.txt"), "notepad.exe", cmoOverwrite
  213.     ''CreateProgmanItem "The Rosetta Stone", "LEER ESTO PRIMERO", "Notepad "+MakePath(DEST$,"leeresto.txt"), "notepad.exe", cmoOverwrite
  214.     ''CreateProgmanItem "The Rosetta Stone", "Leggimi", "Notepad "+MakePath(DEST$,"leggimi.txt"), "notepad.exe", cmoOverwrite
  215.     ''CreateProgmanItem "The Rosetta Stone", "_", "Notepad "+MakePath(DEST$,"japanese.txt"), "notepad.exe", cmoOverwrite
  216.   ''  CreateProgmanItem "The Rosetta Stone", "Chapter Installer", MakePath(DEST$,"setup\_mstest.exe")+" "+MakePath(DEST$,"setup\cdtohd.mst"), MakePath(DEST$,"cdtohd.ico"), cmoOverwrite
  217.   ''  CreateProgmanItem "The Rosetta Stone", "Chapter Uninstaller", MakePath(DEST$,"setup\_mstest.exe")+" "+MakePath(DEST$,"setup\hdtonull.mst"), MakePath(DEST$,"hdtonull.ico"), cmoOverwrite
  218.  
  219.     CreateIniKeyValue MakePath(DEST$,"CHAPTERS\CHAPTERS.INI"), "CD Drive", "CD Drive", CDLETTER, cmoOverwrite
  220.  
  221.     CloseLogFile
  222.     GOTO QUIT
  223.  
  224.     if RestartListEmpty()=0 then
  225. RESTART:
  226.     sz$ = UIStartDlg(CUIDLL$, EXITRESTART, "FQuitDlgProc", 0, "")
  227.      IF sz$ = "EXIT" THEN
  228.     UIPopAll
  229.     GOTO QUIT
  230.      ELSEIF sz$ = "REACTIVATE" THEN
  231.     GOTO RESTART
  232.      ELSE
  233.       UIPop 1
  234.       if ExitExecRestart()=0 then
  235.       else
  236.       end if
  237.      END IF
  238.     else
  239.     end if
  240.  
  241. QUIT:
  242.     ON ERROR GOTO ERRQUIT
  243.  
  244.     IF ERR = 0 THEN
  245.     dlg% = EXITDEMSUCCESS
  246.     ELSEIF ERR = STFQUIT THEN
  247.     dlg% = EXITQUIT
  248.     ELSE
  249.     dlg% = EXITFAILURE
  250.     END IF
  251. QUITL1:
  252.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  253.     IF sz$ = "REACTIVATE" THEN
  254.     GOTO QUITL1
  255.     END IF
  256.     UIPop 1
  257.  
  258.     END
  259.  
  260.  
  261. ERRQUIT:
  262.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  263.     END
  264.  
  265.  
  266. TOOBIG:
  267.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  268.     IF sz$ = "REACTIVATE" THEN
  269.     RecalcPath
  270.     SetDriveStatus
  271.     GOTO TOOBIG
  272.     END IF
  273.     UIPop 1
  274.     RETURN
  275.  
  276.  
  277. BADPATH:
  278.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  279.     IF sz$ = "REACTIVATE" THEN
  280.     GOTO BADPATH
  281.     END IF
  282.     UIPop 1
  283.     RETURN
  284.  
  285.  
  286. ASKQUIT:
  287.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  288.  
  289.     IF sz$ = "EXIT" THEN
  290.     UIPopAll
  291.     ERROR STFQUIT
  292.     ELSEIF sz$ = "REACTIVATE" THEN
  293.     GOTO ASKQUIT
  294.     ELSE
  295.     UIPop 1
  296.     END IF
  297.     RETURN
  298.  
  299.  
  300. '**
  301. '** Purpose:
  302. '**     Appends a file name to the end of a directory path,
  303. '**     inserting a backslash character as needed.
  304. '** Arguments:
  305. '**     szDir$  - full directory path (with optional ending "\")
  306. '**     szFile$ - filename to append to directory
  307. '** Returns:
  308. '**     Resulting fully qualified path name.
  309. '*************************************************************************
  310. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  311.     IF szDir$ = "" THEN
  312.     MakePath = szFile$
  313.     ELSEIF szFile$ = "" THEN
  314.     MakePath = szDir$
  315.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  316.     MakePath = szDir$ + szFile$
  317.     ELSE
  318.     MakePath = szDir$ + "\" + szFile$
  319.     END IF
  320. END FUNCTION
  321.  
  322.  
  323.  
  324. '**
  325. '** Purpose:
  326. '**     Recalculates disk space and sets option status info according
  327. '**     to the current destination path.
  328. '** Arguments:
  329. '**     none.
  330. '** Returns:
  331. '**     none.
  332. '*************************************************************************
  333. SUB RecalcPath STATIC
  334.     ClearCopyList
  335.     AddSectionFilesToCopyList "rosetta", GetSymbolValue("STF_SRCDIR"), DEST$
  336.     AddSectionFilesToCopyList "fonts", GetSymbolValue("STF_SRCDIR"), GetWindowsSysDir()
  337.     ''AddSectionFilesToCopyList "setup", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "setup")
  338.     AddSectionFilesToCopyList "cds", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "cds")
  339.     AddSectionFilesToCopyList "chapters", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "chapters")
  340.     AddSectionFilesToCopyList "demtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
  341.     AddSectionFilesToCopyList "engtext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
  342.     AddSectionFilesToCopyList "fratext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
  343.     AddSectionFilesToCopyList "deutext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
  344.     AddSectionFilesToCopyList "esptext", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$,"text")
  345.  
  346.     CursorSave% = ShowWaitCursor()
  347.  
  348.     FOR i% = 1 to 26
  349.     ReplaceListItem NEEDS$, i%, "0"
  350.     NEXT i%
  351.  
  352.     StillNeed& = GetCopyListCost(EXTRACOSTS$, NEEDS$, "")
  353.  
  354.     cost& = 0
  355.     FOR i% = 1 to 26
  356.     cost& = cost& + VAL(GetListItem(NEEDS$, i%))
  357.     NEXT i%
  358.  
  359.     STATUSTEXT$ = STR$(cost&/1024)+" K, "+STR$(StillNeed&/1024)+" K"
  360.  
  361.     IF StillNeed&>0 THEN
  362.     BIGLIST$ = "YES"
  363.     ELSE
  364.     BIGLIST$ = ""
  365.     ENDIF
  366.  
  367.     RestoreCursor CursorSave%
  368.  
  369. END SUB
  370.  
  371.  
  372. '**
  373. '** Purpose:
  374. '**     Sets drive status info according to latest disk space calcs.
  375. '** Arguments:
  376. '**     none.
  377. '** Returns:
  378. '**     none.
  379. '*************************************************************************
  380. SUB SetDriveStatus STATIC
  381.  
  382.     drive$ = MID$(DEST$, 1, 1)
  383.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  384.     cost& = VAL(GetListItem(NEEDS$, ndrive%))
  385.     free& = GetFreeSpaceForDrive(drive$)
  386.     ReplaceListItem DRIVETEXT$, 1, STR$(cost& / 1024) + " K"
  387.     ReplaceListItem DRIVETEXT$, 2, STR$(free& / 1024) + " K"
  388.  
  389. END SUB
  390.  
  391.  
  392.