home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 March / Chip_1998-03_cd.bin / zkuste / lighten / DISK1 / LIGHTEN.MS_ / LIGHTEN.bin
Text File  |  1997-07-06  |  18KB  |  617 lines

  1. '**************************************************************************
  2. '* Instalacni program projektu LigthtenHYPER pro Windows 
  3. '* -------------------------------------------------------------
  4. '* Skriptovy soubor pro rizeni instalace
  5. '* -------------------------------------------------------------
  6. '* Copyright (C) 1995,1997 Martin Sigut
  7. '* Verze 2.00, uvolneno pro finalni verzi LightenHYPER 97 - 2.0
  8. '**************************************************************************
  9. '' opravena chyba s neprepisovanim hodnot v INI souboru - overwrite
  10. '' (vyskytovalo se pri opetovne instalaci)
  11.  
  12. '$DEFINE DEBUG  ''Define for script development/debugging
  13.  
  14. '$INCLUDE 'setupapi.inc'
  15. '$INCLUDE 'msdetect.inc'
  16. '$INCLUDE 'ctl3d.inc'
  17.  
  18. ''Dialog ID's
  19. CONST WELCOME      = 100
  20. CONST ASKQUIT      = 200
  21. CONST DIRECT       = 290
  22. CONST DESTPATH     = 300
  23. CONST EXITFAILURE  = 400
  24. CONST EXITQUIT     = 600
  25. CONST EXITSUCCESS  = 700
  26. CONST INSTTYPE     = 800
  27. CONST APPHELP      = 900
  28. CONST CUSTINST     = 6200
  29. CONST TOOBIG       = 6300
  30. CONST BADPATH      = 6400
  31. CONST CDGETNAMEORG = 7500
  32. CONST VIEWNAME     = 7510
  33.  
  34. ''Bitmap ID
  35. CONST LOGO         = 1
  36.  
  37. ''Slozky souboru pro instalaci -------------------------------
  38. CONST APPFILES     = 1
  39. CONST TEXTFILES    = 2
  40. CONST SAMPLEFILES  = 3
  41. CONST INFOFILES    = 4
  42.  
  43. GLOBAL DEST$        ''Default destination directory.
  44. GLOBAL WINDRIVE$    ''Windows drive letter.
  45.  
  46. ''CustInst list symbol names
  47. GLOBAL APPNEEDS$    ''Option list costs per drive
  48. GLOBAL OPT1NEEDS$    ''Poctu souboru v listech jednotlivych slozek souboru
  49. GLOBAL OPT2NEEDS$
  50. GLOBAL OPT3NEEDS$
  51. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  52. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  53.  
  54. ''Dialog list symbol names
  55. GLOBAL CHECKSTATES$
  56. GLOBAL STATUSTEXT$
  57. GLOBAL DRIVETEXT$
  58.  
  59. ''Jmeno a org. uzivatele
  60. GLOBAL UNAME$
  61. GLOBAL UORG$
  62.  
  63. '' Pouzito pro vypis do dialogu
  64. GLOBAL TEXT$
  65.  
  66. ''Zobrazeni instalacniho programu jako MAXIMIZE
  67. CONST SW_SHOWMAXIMIZED=3
  68. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  69.  
  70. DECLARE SUB AddOptFilesToCopyList (ftype%)
  71. DECLARE SUB RecalcOptFiles (ftype%)
  72. DECLARE SUB RecalcPath
  73. DECLARE SUB SetDriveStatus
  74. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  75.  
  76.  
  77. INIT:
  78.     '' ***** Nacteni inf souboru *****
  79.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  80.     IF szInf$ = "" THEN
  81.         szInf$ = GetSymbolValue("STF_CWDDIR") + "lighten.inf"
  82.     END IF
  83.  
  84.     ReadInfFile szInf$
  85.  
  86.     '' ***** Inicializace hlavniho okna *****
  87.     '' okno na maximum
  88.     hWnd%=HwndFrame()
  89.     junk%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  90.                         
  91.     '' 3D design pro vsechna okna
  92.     hIn%=HinstFrame()
  93.     error1%=Ctl3dRegister(hIn%)
  94.     error2%=Ctl3dAutoSubclass(hIn%)
  95.  
  96.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  97.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  98.  
  99.     SetBitmap CUIDLL$, LOGO
  100.     SetTitle "InstalaΦnφ program LightenHYPER"
  101.  
  102. WELCOME:
  103.     '' ****** Uvitaci okno ******
  104.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  105.  
  106.     IF sz$ = "CONTINUE" THEN
  107.         UIPop 1
  108.     ELSE
  109.         GOSUB ASKQUIT
  110.         GOTO WELCOME
  111.     END IF
  112.  
  113.     GOTO INAME
  114.  
  115. '$IFDEF DEBUG
  116.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  117. '$ENDIF ''DEBUG
  118.  
  119.  
  120. INAME:
  121.     '' ***** Zadani jmena a firmy *****
  122.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  123.     
  124.     UNAME$ = GetSymbolValue("NameOut")    '' scan vlozenych hodnot 
  125.     UORG$ = GetSymbolValue("OrgOut")
  126.  
  127.     IF sz$ = "EXIT" THEN
  128.         GOSUB ASKQUIT
  129.         GOTO INAME
  130.     END IF
  131.  
  132.     '' ***** Potvrzeni jmena a firmy *****
  133.  
  134.     '' Vlozeni textu do dialogu
  135.     TEXT$ = "ConfirmTextIn"
  136.         AddListItem TEXT$, UNAME$
  137.         AddListItem TEXT$, UORG$
  138.  
  139.     sz$ = UIStartDlg(CUIDLL$, VIEWNAME, "FConfirmDlgProc", APPHELP, HELPPROC$)
  140.  
  141.     IF sz$ = "CONTINUE" THEN
  142.         UIPopAll
  143.     ELSEIF sz$ = "EXIT" THEN
  144.         RemoveSymbol TEXT$
  145.         UIPop 1
  146.         GOTO INAME
  147.     END IF
  148.  
  149.     '' ***** Inicializacni procedury nastaveni instalace *****
  150.  
  151.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  152.     DEST$ = WINDRIVE$ + ":\LIGHTEN"
  153.  
  154.     ''CustInst list symbols
  155.     CHECKSTATES$ = "CheckItemsState"
  156.     STATUSTEXT$  = "StatusItemsText"
  157.     DRIVETEXT$   = "DriveStatusText"
  158.     FOR i% = 1 TO 4 STEP 1
  159.         AddListItem CHECKSTATES$, "ON"
  160.     NEXT i%
  161.     FOR i% = 1 TO 4 STEP 1
  162.         AddListItem STATUSTEXT$, ""
  163.     NEXT i%
  164.     FOR i% = 1 TO 7 STEP 1
  165.         AddListItem DRIVETEXT$, ""
  166.     NEXT i%
  167.     ReplaceListItem DRIVETEXT$, 7, DEST$
  168.  
  169.     ''Disk cost list symbols
  170.     APPNEEDS$   = "AppNeeds"
  171.     OPT1NEEDS$  = "Opt1Needs"
  172.     OPT2NEEDS$  = "Opt2Needs"
  173.     OPT3NEEDS$  = "Opt3Needs"
  174.     EXTRACOSTS$ = "ExtraCosts"
  175.     BIGLIST$    = "BigList"
  176.     FOR i% = 1 TO 4 STEP 1
  177.         AddListItem BIGLIST$, ""
  178.     NEXT i%
  179.     FOR i% = 1 TO 26 STEP 1
  180.         AddListItem EXTRACOSTS$, "0"
  181.     NEXT i%
  182.  
  183.     RecalcPath
  184.     SetDriveStatus
  185.  
  186. SETDIR:
  187.     '' ***** Nastaveni ciloveho adresare *****
  188.  
  189.     '' Vlozeni textu do dialogu
  190.     RemoveSymbol TEXT$
  191.     TEXT$ = "ConfirmTextIn"
  192.         AddListItem TEXT$, DEST$
  193.  
  194.     sz$ = UIStartDlg(CUIDLL$, DIRECT, "FConfirmDlgProc", APPHELP, HELPPROC$)
  195.  
  196.     IF sz$ = "CONTINUE" THEN
  197.         UIPop 1
  198.         GOTO INSTTYPE
  199.     ELSEIF sz$ = "EXIT" THEN
  200.         GOSUB ASKQUIT
  201.         GOTO SETDIR
  202.     ELSEIF sz$ = "BACK" THEN
  203.         UIPop 1
  204.         GOTO GETPATH
  205.     ENDIF
  206.  
  207. INSTTYPE:
  208.     '' ****** Zvoleni typu instalace - uzivatelska nebo plna *****
  209.  
  210.     sz$ = UIStartDlg(CUIDLL$, INSTTYPE, "FRadioDlgProc", APPHELP, HELPPROC$)
  211.  
  212.     newopt$ = GetSymbolValue("ButtonChecked")
  213.  
  214.     IF sz$ = "CONTINUE" THEN
  215.         UIPop 1
  216.         IF newopt$ = "1" THEN        '' Expresni, plna instalace
  217.             RecalcPath
  218.             SetDriveStatus
  219.             GOTO INSTALL
  220.         END IF
  221.         IF newopt$ = "2" THEN        '' Uzivatelska instalace
  222.             GOTO CUSTINST
  223.         END IF
  224.     ELSEIF sz$ = "EXIT" THEN
  225.         GOSUB ASKQUIT
  226.         GOTO INSTTYPE
  227.     END IF
  228.  
  229.  
  230. CUSTINST:
  231.     '' ***** Dialog nastaveni uzivatelske instalace *****
  232.  
  233.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  234.  
  235.     IF sz$ = "CONTINUE" THEN
  236.         ''Install only if it will fit.
  237.         FOR i% = 1 TO 3 STEP 1
  238.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  239.                 GOSUB TOOBIG
  240.                 GOTO CUSTINST
  241.             END IF
  242.         NEXT i%
  243.         UIPop 1
  244.         GOTO INSTALL
  245.     ELSEIF sz$ = "CHK1" THEN
  246.         RecalcOptFiles APPFILES
  247.         SetDriveStatus
  248.         GOTO CUSTINST
  249.     ELSEIF sz$ = "CHK2" THEN
  250.         RecalcOptFiles TEXTFILES
  251.         SetDriveStatus
  252.         GOTO CUSTINST
  253.     ELSEIF sz$ = "CHK3" THEN
  254.         RecalcOptFiles SAMPLEFILES
  255.         SetDriveStatus
  256.         GOTO CUSTINST
  257.     ELSEIF sz$ = "PATH" THEN
  258.         GOTO CGETPATH
  259.     ELSEIF sz$ = "REACTIVATE" THEN
  260.         RecalcPath
  261.         SetDriveStatus
  262.         GOTO CUSTINST
  263.     ELSE
  264.         GOSUB ASKQUIT
  265.         GOTO CUSTINST
  266.     END IF
  267.  
  268.  
  269. INSTALL:
  270.     '' ***** Instalacni proces *****
  271.     ClearCopyList
  272.     AddOptFilesToCopyList APPFILES
  273.     AddOptFilesToCopyList TEXTFILES
  274.     AddOptFilesToCopyList SAMPLEFILES
  275.     AddOptFilesToCopyList INFOFILES
  276.  
  277.     CreateDir DEST$, cmoNone                '' Vytvori cilovy adresar
  278.     CreateDir DEST$ + "\Analyza", cmoNone
  279.     CreateDir DEST$ + "\Prava"    , cmoNone
  280.     CreateDir DEST$ + "\Test"    , cmoNone
  281.     CreateDir DEST$ + "\Karta"    , cmoNone
  282.     CreateDir DEST$ + "\Text"    , cmoNone
  283.     CreateDir DEST$ + "\Ukazka"    , cmoNone
  284.     CopyFilesInCopyList
  285.  
  286.     '' ***** Tvorba INI souboru *****
  287.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  288.         ini$ = MakePath(GetWindowsDir, "Ligh-pub.Ini")
  289.         CreateIniKeyValue ini$, "LightenHYPER",  "AdresarProgram", DEST$ , cmoOverwrite
  290.         CreateIniKeyValue ini$, "LightenUSER",   "Name",           UNAME$ , cmoOverwrite
  291.         CreateIniKeyValue ini$, "LightenUSER",   "Company",        UORG$ , cmoOverwrite
  292.     CreateIniKeyValue ini$, "LightenSYSTEM", "AppFont",        "MS Sans Serif", cmoOverwrite
  293.     CreateIniKeyValue ini$, "LightenSYSTEM", "AppBoubleFont",  "MS Sans Serif", cmoOverwrite
  294.     ini$ = ""
  295.     END IF
  296.  
  297.     '' ***** Tvorba programove skupiny a ikon *****
  298.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  299.         CreateProgmanGroup "Drogy NE ! 97", "", cmoNone
  300.         ShowProgmanGroup  "Drogy NE ! 97", 1, cmoNone
  301.         CreateProgmanItem "Drogy NE ! 97", "Aplikace Drogy NE !",DEST$ +"\ligh-pub.exe", "", cmoOverwrite
  302.         CreateProgmanItem "Drogy NE ! 97", "P°φruΦka Drogy NE !", DEST$ +"\Text\hyper.hlp", "", cmoOverwrite
  303. ''      CreateProgmanItem "Drogy NE ! 97", "Informace...","notepad.exe "+MakePath(DEST$,"info.txt"), "", cmoOverwrite
  304.         CreateProgmanItem "Drogy NE ! 97", "Dopl≥ujφcφ informace", DEST$ +"\info.hlp", "", cmoOverwrite
  305.     END IF
  306.  
  307.  
  308. QUIT:
  309.     ON ERROR GOTO ERRQUIT
  310.  
  311.     IF ERR = 0 THEN
  312.         dlg% = EXITSUCCESS
  313.     ELSEIF ERR = STFQUIT THEN
  314.         dlg% = EXITQUIT
  315.     ELSE
  316.         dlg% = EXITFAILURE
  317.     END IF
  318. QUITL1:
  319.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  320.     IF sz$ = "REACTIVATE" THEN
  321.         GOTO QUITL1
  322.     END IF
  323.     UIPop 1
  324.  
  325.     END
  326.  
  327. ERRQUIT:
  328.     i% = DoMsgBox("Chyba v instalaΦnφm programu !", "LightenHYPER", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  329.     END
  330.  
  331.  
  332. '' ***** Vezme cestu - uvodni okno nastaveni adresare *****
  333. GETPATH:
  334.     SetSymbolValue "EditTextIn", DEST$
  335.     SetSymbolValue "EditFocus", "END"
  336. GETPATHL1:
  337.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  338.  
  339.     IF sz$ = "CONTINUE" THEN
  340.         olddest$ = DEST$
  341.         DEST$ = GetSymbolValue("EditTextOut")
  342.  
  343.         ''Validate new path.
  344.         IF IsDirWritable(DEST$) = 0 THEN
  345.             GOSUB BADPATH
  346.             GOTO GETPATHL1
  347.         END IF
  348.         UIPop 1
  349.                                               
  350.         ReplaceListItem DRIVETEXT$, 7, DEST$
  351.  
  352.         ''Recalc if path changed.
  353.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  354.             RecalcPath
  355.             SetDriveStatus
  356.         END IF
  357.  
  358.         olddest$ = ""
  359.         GOTO SETDIR
  360.     ELSEIF sz$ = "REACTIVATE" THEN
  361.         RecalcPath
  362.         SetDriveStatus
  363.         GOTO GETPATHL1
  364.     ELSEIF sz$ = "EXIT" THEN
  365.         GOSUB ASKQUIT
  366.         GOTO GETPATHL1
  367.     ELSE
  368.         UIPop 1
  369.         GOTO SETDIR
  370.     END IF
  371.  
  372. '' ***** Vezme cestu - okno nastaveni uziv instalace *****
  373. CGETPATH:
  374.     SetSymbolValue "EditTextIn", DEST$
  375.     SetSymbolValue "EditFocus", "END"
  376. CGETPATHL1:
  377.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  378.  
  379.     IF sz$ = "CONTINUE" THEN
  380.         olddest$ = DEST$
  381.         DEST$ = GetSymbolValue("EditTextOut")
  382.  
  383.         ''Validate new path.
  384.         IF IsDirWritable(DEST$) = 0 THEN
  385.             GOSUB BADPATH
  386.             GOTO CGETPATHL1
  387.         END IF
  388.         UIPop 1
  389.                                               
  390.         ReplaceListItem DRIVETEXT$, 7, DEST$
  391.  
  392.         ''Recalc if path changed.
  393.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  394.             RecalcPath
  395.             SetDriveStatus
  396.         END IF
  397.  
  398.         olddest$ = ""
  399.         GOTO CUSTINST
  400.     ELSEIF sz$ = "REACTIVATE" THEN
  401.         RecalcPath
  402.         SetDriveStatus
  403.         GOTO CGETPATHL1
  404.     ELSEIF sz$ = "EXIT" THEN
  405.         GOSUB ASKQUIT
  406.         GOTO CGETPATHL1
  407.     ELSE
  408.         UIPop 1
  409.         GOTO CUSTINST
  410.     END IF
  411.  
  412. TOOBIG:
  413.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  414.     IF sz$ = "REACTIVATE" THEN
  415.         RecalcPath
  416.         SetDriveStatus
  417.         GOTO TOOBIG
  418.     END IF
  419.     UIPop 1
  420.     RETURN
  421.  
  422. BADPATH:
  423.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  424.     IF sz$ = "REACTIVATE" THEN
  425.         RecalcPath
  426.         SetDriveStatus
  427.         GOTO BADPATH
  428.     END IF
  429.     UIPop 1
  430.     RETURN
  431.  
  432.  
  433.  
  434. ASKQUIT:
  435.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  436.  
  437.     IF sz$ = "EXIT" THEN
  438.         UIPopAll
  439.         ERROR STFQUIT
  440.     ELSEIF sz$ = "REACTIVATE" THEN
  441.         GOTO ASKQUIT
  442.     ELSE
  443.         UIPop 1
  444.     END IF
  445.     RETURN
  446.  
  447.  
  448.  
  449. '**
  450. '** Purpose:
  451. '**     Adds the specified option files to the copy list.
  452. '** Arguments:
  453. '**     ftype%  - type of files to add, one of the following:
  454. '**             APPFILES, OPTFILES1, OPTFILES2
  455. '** Returns:
  456. '**     none.
  457. '*************************************************************************
  458. SUB AddOptFilesToCopyList (ftype%) STATIC
  459.  
  460.     IF ftype% = INFOFILES THEN
  461.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  462.             AddSectionFilesToCopyList "InfoFiles", SrcDir$, DEST$
  463.         SrcDir$ = ""
  464.     ELSEIF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  465.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  466.         IF ftype% = APPFILES THEN    
  467.             AddSectionFilesToCopyList "AppFiles", SrcDir$, DEST$
  468.         ELSEIF ftype% = TEXTFILES THEN
  469.             AddSectionFilesToCopyList "TextFiles", SrcDir$, DEST$ + "\Text"
  470.         ELSEIF ftype% = SAMPLEFILES THEN
  471.             AddSectionFilesToCopyList "SampleFiles", SrcDir$, DEST$ + "\Ukazka"
  472.         SrcDir$ = ""
  473.         END IF
  474.     END IF
  475.  
  476. END SUB
  477.  
  478.  
  479. '**
  480. '** Purpose:
  481. '**     Recalculates disk space for the given option files and sets
  482. '**     the status info symbol "StatusItemsText".
  483. '** Arguments:
  484. '**     ftype% - type of files to add, one of the following:
  485. '**             APPFILES, OPTFILES1, OPTFILES2
  486. '** Returns:
  487. '**     none.
  488. '*************************************************************************
  489. SUB RecalcOptFiles (ftype%) STATIC
  490.     CursorSave% = ShowWaitCursor()
  491.     ClearCopyList
  492.     AddOptFilesToCopyList ftype%
  493.  
  494.     fExtra% = 0
  495.     IF ftype% = APPFILES THEN
  496.         ListSym$ = APPNEEDS$
  497.         IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  498.             ''Add extra cost to Windows drive for ini/progman, etc.
  499.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  500.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  501.             fExtra% = 1
  502.         END IF
  503.     ELSEIF ftype% = TEXTFILES THEN
  504.         ListSym$ = OPT1NEEDS$
  505.     ELSEIF ftype% = SAMPLEFILES THEN
  506.         ListSym$ = OPT2NEEDS$
  507.     ELSEIF ftype% = INFOFILES THEN
  508.         ListSym$ = OPT3NEEDS$
  509.     END IF
  510.  
  511.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  512.  
  513.     cost& = 0
  514.     FOR i% = 1 TO 26 STEP 1
  515.          cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  516.      NEXT i%
  517.     
  518.        ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  519.  
  520.     IF StillNeed& > 0 THEN
  521.         ReplaceListItem BIGLIST$, ftype%, "YES"
  522.     ELSE
  523.         ReplaceListItem BIGLIST$, ftype%, ""
  524.     END IF
  525.  
  526.     IF fExtra% THEN
  527.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  528.     END IF
  529.     RestoreCursor CursorSave%
  530.     ListSym$ = ""
  531. END SUB
  532.  
  533.  
  534. '**
  535. '** Purpose:
  536. '**     Recalculates disk space and sets option status info according
  537. '**     to the current destination path.
  538. '** Arguments:
  539. '**     none.
  540. '** Returns:
  541. '**     none.
  542. '*************************************************************************
  543. SUB RecalcPath STATIC
  544.  
  545.     CursorSave% = ShowWaitCursor()
  546.  
  547.     RecalcOptFiles APPFILES
  548.     RecalcOptFiles TEXTFILES
  549.     RecalcOptFiles SAMPLEFILES
  550.     RecalcOptFiles INFOFILES
  551.  
  552.     RestoreCursor CursorSave%
  553. END SUB
  554.  
  555.  
  556. '**
  557. '** Purpose:
  558. '**     Sets drive status info according to latest disk space calcs.
  559. '** Arguments:
  560. '**     none.
  561. '** Returns:
  562. '**     none.
  563. '*************************************************************************
  564. SUB SetDriveStatus STATIC
  565.  
  566.     drive$ = MID$(DEST$, 1, 1)
  567.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  568.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(OPT3NEEDS$, ndrive%))
  569.     free& = GetFreeSpaceForDrive(drive$)
  570.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  571.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  572.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  573.  
  574.     IF drive$ = WINDRIVE$ THEN
  575.         ReplaceListItem DRIVETEXT$, 4, ""
  576.         ReplaceListItem DRIVETEXT$, 5, ""
  577.         ReplaceListItem DRIVETEXT$, 6, ""
  578.     ELSE
  579.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  580.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(OPT3NEEDS$, ndrive%))
  581.         IF cost& = 0 THEN
  582.             ReplaceListItem DRIVETEXT$, 4, ""
  583.             ReplaceListItem DRIVETEXT$, 5, ""
  584.             ReplaceListItem DRIVETEXT$, 6, ""
  585.         ELSE
  586.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  587.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  588.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  589.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  590.         END IF
  591.     END IF
  592. END SUB
  593.  
  594.  
  595. '**
  596. '** Purpose:
  597. '**     Appends a file name to the end of a directory path,
  598. '**     inserting a backslash character as needed.
  599. '** Arguments:
  600. '**     szDir$  - full directory path (with optional ending "\")
  601. '**     szFile$ - filename to append to directory
  602. '** Returns:
  603. '**     Resulting fully qualified path name.
  604. '*************************************************************************
  605. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  606.     IF szDir$ = "" THEN
  607.         MakePath = szFile$
  608.     ELSEIF szFile$ = "" THEN
  609.         MakePath = szDir$
  610.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  611.         MakePath = szDir$ + szFile$
  612.     ELSE
  613.         MakePath = szDir$ + "\" + szFile$
  614.     END IF
  615. END FUNCTION
  616.  
  617.