home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0430 - 0439 / ibm0430-0439 / ibm0433.tar / ibm0433 / E_REAL_1.ZIP / EREALITY.MST < prev    next >
Encoding:
Text File  |  1994-08-09  |  19.2 KB  |  616 lines

  1. '*************************************************************************
  2. '*                       Elastic Reality Setup
  3. '**************************************************************************
  4. '$INCLUDE 'setupapi.inc'
  5. '$INCLUDE 'msdetect.inc'
  6. '$INCLUDE 'msregdb.inc'
  7.  
  8. ''Dialog ID's
  9. CONST WELCOME       = 100
  10. CONST ASKQUIT       = 200
  11. CONST DESTPATH      = 300
  12. CONST EXITFAILURE   = 400
  13. CONST EXITQUIT      = 600
  14. CONST EXITSUCCESS   = 700
  15. CONST OPTIONS       = 800
  16. CONST APPHELP       = 900
  17. CONST CUSTINST      = 6200
  18. CONST TOOBIG        = 6300
  19. CONST BADPATH       = 6400
  20. CONST GETNAMEORG    = 7500
  21. CONST WIN32NOTINST  = 8128
  22. CONST WININIMOD     = 8129
  23.  
  24. ''Bitmap ID
  25. CONST LOGO = 1
  26.  
  27. ''File Types
  28. CONST APPFILES     = 1
  29. CONST OPTFILES1    = 2
  30. CONST OPTFILES2    = 3
  31. CONST REQFILES     = 4
  32.  
  33. ''Maximizing constants
  34. CONST WS_VISIBLE      =&H10000000
  35. CONST WS_BORDER       =&H00800000
  36. CONST WS_CLIPCHILDREN =&H02000000
  37. CONST GWL_STYLE =-16
  38. CONST SW_SHOWMAXIMIZED =3
  39. CONST SW_SHOWMINIMIZED =2
  40.  
  41. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%, iShow%) AS INTEGER
  42. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  43.  
  44. GLOBAL DESTSYS$     ''Windows\System directory.
  45. GLOBAL DESTWIN$     ''Windows directory.
  46. GLOBAL DEST$        ''Default destination directory.
  47.  
  48. GLOBAL WINDRIVE$    ''Windows drive letter.
  49.  
  50. ''CustInst list symbol names
  51. GLOBAL APPNEEDS$    ''Option list costs per drive
  52. GLOBAL OPT1NEEDS$
  53. GLOBAL OPT2NEEDS$
  54. GLOBAL REQNEEDS$
  55. GLOBAL ALLNEEDS$
  56. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  57.  
  58. GLOBAL WINDRIVECOST$
  59.  
  60. ''Dialog list symbol names
  61. GLOBAL CHECKSTATES$
  62. GLOBAL STATUSTEXT$
  63. GLOBAL DRIVETEXT$
  64.  
  65. GLOBAL USERNAME$    ''Option selection from name/org/serial dialog.
  66. GLOBAL ORGNAME$     ''Option selection from name/org/serial dialog.
  67. GLOBAL SERIAL As String * 1024
  68.  
  69. GLOBAL hWnd%
  70.  
  71. DECLARE SUB AddOptFilesToCopyList (ftype%)
  72. DECLARE SUB RecalcOptFiles (ftype%)
  73. DECLARE SUB RecalcPath
  74. DECLARE SUB SetDriveStatus
  75.  
  76. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  77.  
  78. DECLARE FUNCTION ValidateSerial LIB "erinst.dll" (hWnd%, lpSerial$) AS LONG
  79. DECLARE FUNCTION Serialize LIB "erinst.dll" (hWnd%, snFile$, snName$, snOrg$, snSer$, snWhich%) AS INTEGER
  80. DECLARE FUNCTION OnWindowsNT LIB "erinst.dll" AS INTEGER
  81.  
  82. INIT:
  83.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  84.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  85.  
  86.     SetTitle "Elastic Reality Setup"
  87.  
  88.     ''Maximize window
  89.     hWnd% = HwndFrame()
  90.     i1& = SetWindowLong(hWnd%, GWL_STYLE, WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  91.     j1% = ShowWindow(hWnd%, SW_SHOWMAXIMIZED)
  92.  
  93.     SetBitmap CUIDLL$, LOGO
  94.  
  95.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  96.     IF szInf$ = "" THEN
  97.         szInf$ = GetSymbolValue("STF_CWDDIR") + "EREALITY.INF"
  98.     END IF
  99.     ReadInfFile szInf$
  100.  
  101.     DEST$ = "C:\EREALITY"
  102.     DESTSYS$ = GetWindowsSysDir()
  103.     DESTWIN$ = GetWindowsDir()
  104.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  105.  
  106.     ''CustInst list symbols
  107.     CHECKSTATES$ = "CheckItemsState"
  108.     STATUSTEXT$  = "StatusItemsText"
  109.     DRIVETEXT$   = "DriveStatusText"
  110.     FOR i% = 1 TO 4 STEP 1
  111.         AddListItem CHECKSTATES$, "ON"
  112.     NEXT i%
  113.     FOR i% = 1 TO 4 STEP 1
  114.         AddListItem STATUSTEXT$, ""
  115.     NEXT i%
  116.     FOR i% = 1 TO 7 STEP 1
  117.         AddListItem DRIVETEXT$, ""
  118.     NEXT i%
  119.     ReplaceListItem DRIVETEXT$, 7, DEST$
  120.  
  121.     ''Disk cost list symbols
  122.     APPNEEDS$   = "AppNeeds"
  123.     OPT1NEEDS$  = "Opt1Needs"
  124.     OPT2NEEDS$  = "Opt2Needs"
  125.     REQNEEDS$   = "ReqNeeds"
  126.     ALLNEEDS$   = "ReqNeeds"
  127.     EXTRACOSTS$ = "ExtraCosts"
  128.     IF OnWindowsNT() = 0 THEN
  129.     '' Program Manager's .GRP file
  130.     cost& = 7168
  131.     '' Our copy of the WIN.INI file
  132.     cost& = cost& + GetSizeOfFile (DESTWIN$ + "WIN.INI") + 512
  133.     END IF
  134.     WINDRIVECOST$ = STR$(cost&)
  135.     FOR i% = 1 TO 26 STEP 1
  136.         AddListItem EXTRACOSTS$, "0"
  137.     NEXT i%
  138.  
  139.     RecalcPath
  140.     SetDriveStatus
  141.  
  142. WIN32CHECK:
  143.     IF OnWindowsNT() = 0 THEN
  144.     '' Check if Win32s is installed
  145.     sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "Win32s", "Setup")
  146.     IF sz$ <> "1" THEN
  147.         sz$ = UIStartDlg(CUIDLL$, WIN32NOTINST, "FInfoDlgProc", APPHELP, HELPPROC$)
  148.         IF sz$ = "REACTIVATE" THEN
  149.         GOTO WIN32CHECK
  150.         ELSEIF sz$ = "CONTINUE" THEN
  151.         UIPop 1
  152.         ELSE
  153.         GOSUB ASKQUIT
  154.         GOTO WIN32CHECK
  155.         END IF
  156.     END IF
  157.     END IF
  158.  
  159.  
  160. WELCOME:
  161.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  162.     IF sz$ = "REACTIVATE" THEN
  163.     GOTO WELCOME
  164.     ELSEIF sz$ = "CONTINUE" THEN
  165.         UIPop 1
  166.     ELSE
  167.         GOSUB ASKQUIT
  168.         GOTO WELCOME
  169.     END IF
  170.  
  171.  
  172. CUSTINST:
  173.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  174.  
  175.     IF sz$ = "CONTINUE" THEN
  176.         ''Install only if it will fit.
  177.     CursorSave% = ShowWaitCursor()
  178.     ClearCopyList
  179.     AddOptFilesToCopyList APPFILES
  180.     AddOptFilesToCopyList OPTFILES1
  181.     AddOptFilesToCopyList OPTFILES2
  182.     AddOptFilesToCopyList REQFILES
  183.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ALLNEEDS$, "")
  184.     RestoreCursor CursorSave%
  185.     IF StillNeed& > 0 THEN
  186.             GOTO TOOBIG
  187.         END IF
  188.     IF (GetListItem(CHECKSTATES$, APPFILES) <> "ON") AND (GetListItem(CHECKSTATES$, OPTFILES1) <> "ON") AND (GetListItem(CHECKSTATES$, OPTFILES2) <> "ON") THEN
  189.         GOTO CUSTINST
  190.     END IF
  191.         UIPop 1
  192.         GOTO NAMEORGSERIAL
  193.     ELSEIF sz$ = "PATH" THEN
  194.         GOTO GETPATH
  195.     ELSEIF sz$ = "CHK1" THEN
  196.         RecalcOptFiles APPFILES
  197.         RecalcOptFiles REQFILES
  198.         SetDriveStatus
  199.         GOTO CUSTINST
  200.     ELSEIF sz$ = "CHK2" THEN
  201.         RecalcOptFiles OPTFILES1
  202.         RecalcOptFiles REQFILES
  203.         SetDriveStatus
  204.         GOTO CUSTINST
  205.     ELSEIF sz$ = "CHK3" THEN
  206.         RecalcOptFiles OPTFILES2
  207.         SetDriveStatus
  208.         GOTO CUSTINST
  209.     ELSEIF sz$ = "REACTIVATE" THEN
  210.         RecalcPath
  211.         SetDriveStatus
  212.         GOTO CUSTINST
  213.     ELSE
  214.         GOSUB ASKQUIT
  215.         GOTO CUSTINST
  216.     END IF
  217.  
  218. NAMEORGSERIAL:
  219.     IF (GetListItem(CHECKSTATES$, APPFILES) = "ON") OR (GetListItem(CHECKSTATES$, OPTFILES1) = "ON") THEN
  220.     sz$ = UIStartDlg(CUIDLL$, GETNAMEORG, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  221.     USERNAME$ = GetSymbolValue("NameOut")
  222.     ORGNAME$ = GetSymbolValue("OrgOut")
  223.     SERIAL   = GetSymbolValue("SerialOut")
  224.  
  225.     IF sz$ = "CONTINUE" THEN
  226.         IF ValidateSerial(hWnd%, SERIAL) = 0 THEN
  227.         GOTO NAMEORGSERIAL
  228.         END IF
  229.         UIPop 1
  230.     ELSEIF sz$ = "REACTIVATE" THEN
  231.         GOTO NAMEORGSERIAL
  232.     ELSE
  233.         GOSUB ASKQUIT
  234.         GOTO NAMEORGSERIAL
  235.     END IF
  236.     END IF
  237.  
  238. INSTALL:
  239.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  240.     CreateDir DEST$, cmoNone
  241.     IF (GetListItem(CHECKSTATES$, APPFILES) = "ON") OR (GetListItem(CHECKSTATES$, OPTFILES1) = "ON") THEN
  242.     CreateDir MakePath(DEST$, "PROGRAMS"), cmoNone
  243.     CreateDir MakePath(DEST$, "HIIP"), cmoNone
  244.     CreateDir MakePath(DEST$, "HIIP\LOADERS"), cmoNone
  245.     CreateDir MakePath(DEST$, "HIIP\SAVERS"), cmoNone
  246.     CreateDir MakePath(DEST$, "OUTPUT"), cmoNone
  247.     END IF
  248.     IF (GetListItem(CHECKSTATES$, OPTFILES1) = "ON") OR (GetListItem(CHECKSTATES$, OPTFILES2) = "ON") THEN
  249.     CreateDir MakePath(DEST$, "IMAGES"), cmoNone
  250.     CreateDir MakePath(DEST$, "IMAGES\STAMPS"), cmoNone
  251.     IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  252.         CreateDir MakePath(DEST$, "TJ_PROJS"), cmoNone
  253.     END IF
  254.     IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  255.         CreateDir MakePath(DEST$, "ER_PROJS"), cmoNone
  256.         CreateDir MakePath(DEST$, "SHAPES"), cmoNone
  257.     END IF
  258.     END IF
  259.  
  260.     '' This is to speed up testing -- says "don't copy files"
  261.     ''cm% = SetCopyMode(0)
  262.  
  263.     CopyFilesInCopyList
  264.  
  265.     IF (GetListItem(CHECKSTATES$, APPFILES) = "ON") OR (GetListItem(CHECKSTATES$, OPTFILES1) = "ON") THEN
  266.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  267.         j1% = Serialize(hWnd%, MakePath(DEST$, "PROGRAMS\ER.EXE"), USERNAME$, ORGNAME$, SERIAL, 0)
  268.         CreateRegKeyValue "ereality", "Elastic Reality"
  269.         CreateRegKeyValue "ereality\shell\open\command", "er.exe %1"
  270.         CreateRegKeyValue ".er", "ereality"
  271.     END IF
  272.     IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  273.         j1% = Serialize(hWnd%, MakePath(DEST$, "PROGRAMS\TRNSJMMR.EXE"), USERNAME$, ORGNAME$, SERIAL, 1)
  274.         CreateRegKeyValue "transjammer", "TransJammer"
  275.         CreateRegKeyValue "transjammer\shell\open\command", "trnsjmmr.exe %1"
  276.     END IF
  277.  
  278.     ''Minimize window
  279.     j1% = ShowWindow(hWnd%, SW_SHOWMINIMIZED)
  280.  
  281.     CreateProgmanGroup "Elastic Reality", "", cmoNone
  282.     ShowProgmanGroup  "Elastic Reality", 1, cmoNone
  283.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  284.         CreateProgmanItem "Elastic Reality", "Elastic Reality", MakePath(DEST$, "PROGRAMS\ER.EXE"), ",,,," + MakePath(DEST$, "ER_PROJS"), cmoOverwrite
  285.     END IF
  286.     IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  287.         CreateProgmanItem "Elastic Reality", "TransJammer", MakePath(DEST$, "PROGRAMS\TRNSJMMR.EXE"), ",,,," + MakePath(DEST$, "TJ_PROJS"), cmoOverwrite
  288.     END IF
  289.     CreateProgmanItem "Elastic Reality", "Elastic Reality ReadMe", "NOTEPAD.EXE " + MakePath(DEST$, "PROGRAMS\README.TXT"), "", cmoOverwrite
  290.  
  291.     ''Maximize window
  292.     j1% = ShowWindow(hWnd%, SW_SHOWMAXIMIZED)
  293.  
  294.     '' Now we want to modify the system "win.ini" file under 3.1, so we'll
  295.     '' want to prompt the user about it. We'll also be making a backup
  296.     '' of the existing .INI file under 3.1
  297.     GOSUB UPDATEWININI
  298.     END IF
  299.  
  300. QUIT:
  301.     ON ERROR GOTO ERRQUIT
  302.  
  303.     IF ERR = 0 THEN
  304.         dlg% = EXITSUCCESS
  305.     ELSEIF ERR = STFQUIT THEN
  306.         dlg% = EXITQUIT
  307.     ELSE
  308.         dlg% = EXITFAILURE
  309.     END IF
  310. QUITL1:
  311.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  312.     IF sz$ = "REACTIVATE" THEN
  313.         GOTO QUITL1
  314.     END IF
  315.     UIPop 1
  316.  
  317.     END
  318.  
  319. ERRQUIT:
  320.     i% = DoMsgBox("Setup sources were corrupted, call Elastic Reality tech. support (608) 273-6585", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  321.     END
  322.  
  323.  
  324.  
  325. GETPATH:
  326.     SetSymbolValue "EditTextIn", DEST$
  327.     SetSymbolValue "EditFocus", "ALL"
  328. GETPATHL1:
  329.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  330.  
  331.     IF sz$ = "CONTINUE" THEN
  332.         olddest$ = DEST$
  333.         DEST$ = GetSymbolValue("EditTextOut")
  334.  
  335.         ''Validate new path.
  336.         IF IsDirWritable(DEST$) = 0 THEN
  337.             GOSUB BADPATH
  338.             GOTO GETPATHL1
  339.         END IF
  340.         UIPop 1
  341.  
  342.         ''Truncate display if too long.
  343.         IF LEN(DEST$) > 23 THEN
  344.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  345.         ELSE
  346.             ReplaceListItem DRIVETEXT$, 7, DEST$
  347.         END IF
  348.  
  349.         ''Recalc if path changed.
  350.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  351.             RecalcPath
  352.             SetDriveStatus
  353.         END IF
  354.  
  355.         olddest$ = ""
  356.         GOTO CUSTINST
  357.     ELSEIF sz$ = "REACTIVATE" THEN
  358.         RecalcPath
  359.         SetDriveStatus
  360.         GOTO GETPATHL1
  361.     ELSEIF sz$ = "EXIT" THEN
  362.         GOSUB ASKQUIT
  363.         GOTO GETPATHL1
  364.     ELSE
  365.         UIPop 1
  366.         GOTO CUSTINST
  367.     END IF
  368.  
  369.  
  370. TOOBIG:
  371.     '' Tell the user there's no room, but give them a chance to continue anyway
  372.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", APPHELP, HELPPROC$)
  373.     IF sz$ = "REACTIVATE" THEN
  374.         RecalcPath
  375.         SetDriveStatus
  376.         GOTO TOOBIG
  377.     ELSEIF sz$ = "CONTINUE" THEN
  378.     UIPop 2
  379.     GOTO NAMEORGSERIAL
  380.     ELSE
  381.     UIPop 1
  382.     GOTO CUSTINST
  383.     END IF
  384.  
  385. BADPATH:
  386.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  387.     IF sz$ = "REACTIVATE" THEN
  388.         RecalcPath
  389.         SetDriveStatus
  390.         GOTO BADPATH
  391.     END IF
  392.     UIPop 1
  393.     RETURN
  394.  
  395. ASKQUIT:
  396.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FInfoDlgProc", 0, "")
  397.  
  398.     IF sz$ = "EXIT" THEN
  399.         UIPopAll
  400.         ERROR STFQUIT
  401.     ELSEIF sz$ = "REACTIVATE" THEN
  402.         GOTO ASKQUIT
  403.     ELSE
  404.         UIPop 1
  405.     END IF
  406.     RETURN
  407.  
  408. UPDATEWININI:
  409.     UpdateIni% = 0
  410.     IF OnWindowsNT() = 0 THEN
  411.     IF IsDirWritable(DESTWIN$) <> 0 THEN
  412.         '' Ask the user if we should backup & modify the WIN.INI file.
  413.         sz$ = UIStartDlg(CUIDLL$, WININIMOD, "FInfoDlgProc", APPHELP, HELPPROC$)
  414.         IF sz$ = "REACTIVATE" THEN
  415.             GOTO UPDATEWININI
  416.         ELSEIF sz$ = "CONTINUE" THEN
  417.         CopyFile DESTWIN$ + "WIN.INI", DESTWIN$ + "WININI.ERI", cmoOverwrite, 0
  418.         UpdateIni% = 1
  419.         END IF
  420.         UIPop 1
  421.     END IF
  422.     ELSE
  423.     UpdateIni% = 1
  424.     END IF
  425.     IF UpdateIni% <>0 THEN
  426.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  427.         CreateIniKeyValue "win.ini", "programs", "er.exe", MakePath(DEST$, "PROGRAMS\ER.EXE"), cmoOverwrite
  428.     END IF
  429.     IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  430.         CreateIniKeyValue "win.ini", "programs", "trnsjmmr.exe", MakePath(DEST$, "PROGRAMS\TRNSJMMR.EXE"), cmoOverwrite
  431.     END IF
  432.     END IF
  433.     RETURN
  434.  
  435.  
  436. '**
  437. '** Purpose:
  438. '**     Adds the specified option files to the copy list.
  439. '** Arguments:
  440. '**     ftype%  - type of files to add, one of the following:
  441. '**             APPFILES, OPTFILES1, OPTFILES2
  442. '** Returns:
  443. '**     none.
  444. '*************************************************************************
  445. SUB AddOptFilesToCopyList (ftype%) STATIC
  446.  
  447.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  448.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  449.         IF ftype% = APPFILES THEN
  450.         AddSectionFilesToCopyList "ERPROGRAMS", SrcDir$, MakePath(DEST$, "PROGRAMS")
  451.         ELSEIF ftype% = OPTFILES1 THEN
  452.         AddSectionFilesToCopyList "TJPROGRAMS", SrcDir$, MakePath(DEST$, "PROGRAMS")
  453.             AddSectionFilesToCopyList "TJPROJECTS", SrcDir$, MakePath(DEST$, "TJ_PROJS")
  454.             AddSectionFilesToCopyList "TJIMAGES", SrcDir$, MakePath(DEST$, "IMAGES")
  455.             AddSectionFilesToCopyList "TJSTAMPS", SrcDir$, MakePath(DEST$, "IMAGES\STAMPS")
  456.         ELSEIF ftype% = OPTFILES2 THEN
  457.             AddSectionFilesToCopyList "ERPROJECTS", SrcDir$, MakePath(DEST$, "ER_PROJS")
  458.             AddSectionFilesToCopyList "ERIMAGES", SrcDir$, MakePath(DEST$, "IMAGES")
  459.             AddSectionFilesToCopyList "ERSTAMPS", SrcDir$, MakePath(DEST$, "IMAGES\STAMPS")
  460.             AddSectionFilesToCopyList "SHAPES", SrcDir$, MakePath(DEST$, "SHAPES")
  461.         ELSEIF ftype% = REQFILES THEN
  462.         IF (GetListItem(CHECKSTATES$, APPFILES) = "ON") OR (GetListItem(CHECKSTATES$, OPTFILES1) = "ON") THEN
  463.         AddSectionFilesToCopyList "PROGRAMS", SrcDir$, MakePath(DEST$, "PROGRAMS")
  464.         AddSectionFilesToCopyList "HIIP", SrcDir$, MakePath(DEST$, "HIIP")
  465.         AddSectionFilesToCopyList "LOADERS", SrcDir$, MakePath(DEST$, "HIIP\LOADERS")
  466.         AddSectionFilesToCopyList "SAVERS", SrcDir$, MakePath(DEST$, "HIIP\SAVERS")
  467.         IF OnWindowsNT() THEN
  468.             AddSectionFilesToCopyList "NTSYSFILES", SrcDir$, DESTWIN$ + "SYSTEM32"
  469.         ELSE
  470.             AddSectionFilesToCopyList "SYSFILES", SrcDir$, DESTSYS$
  471.         END IF
  472.         END IF
  473.         END IF
  474.         SrcDir$ = ""
  475.     END IF
  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.     ELSEIF ftype% = OPTFILES1 THEN
  498.         ListSym$ = OPT1NEEDS$
  499.         IF (GetListItem(CHECKSTATES$, OPTFILES1) = "ON") AND (GetListItem(CHECKSTATES$, APPFILES) <> "ON") THEN
  500.             ''Add extra cost to Windows drive for ini/progman, etc.
  501.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  502.             ReplaceListItem EXTRACOSTS$, ndrive%, WINDRIVECOST$
  503.             fExtra% = 1
  504.         END IF
  505.     ELSEIF ftype% = OPTFILES2 THEN
  506.         ListSym$ = OPT2NEEDS$
  507.     ELSEIF ftype% = REQFILES THEN
  508.         ListSym$ = REQNEEDS$
  509.         IF (GetListItem(CHECKSTATES$, APPFILES) = "ON") OR (GetListItem(CHECKSTATES$, OPTFILES1) = "ON") THEN
  510.             ''Add extra cost to Windows drive for ini/progman, etc.
  511.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  512.             ReplaceListItem EXTRACOSTS$, ndrive%, WINDRIVECOST$
  513.             fExtra% = 1
  514.         END IF
  515.     END IF
  516.  
  517.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  518.  
  519.     cost& = 0
  520.     FOR i% = 1 TO 26 STEP 1
  521.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  522.     NEXT i%
  523.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  524.  
  525.     IF fExtra% THEN
  526.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  527.     END IF
  528.     RestoreCursor CursorSave%
  529.     ListSym$ = ""
  530. END SUB
  531.  
  532.  
  533. '**
  534. '** Purpose:
  535. '**     Recalculates disk space and sets option status info according
  536. '**     to the current destination path.
  537. '** Arguments:
  538. '**     none.
  539. '** Returns:
  540. '**     none.
  541. '*************************************************************************
  542. SUB RecalcPath STATIC
  543.  
  544.     CursorSave% = ShowWaitCursor()
  545.  
  546.     RecalcOptFiles APPFILES
  547.     RecalcOptFiles OPTFILES1
  548.     RecalcOptFiles OPTFILES2
  549.     RecalcOptFiles REQFILES
  550.  
  551.     RestoreCursor CursorSave%
  552. END SUB
  553.  
  554.  
  555. '**
  556. '** Purpose:
  557. '**     Sets drive status info according to latest disk space calcs.
  558. '** Arguments:
  559. '**     none.
  560. '** Returns:
  561. '**     none.
  562. '*************************************************************************
  563. SUB SetDriveStatus STATIC
  564.  
  565.     drive$ = MID$(DEST$, 1, 1)
  566.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  567.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(REQNEEDS$, ndrive%))
  568.     free& = GetFreeSpaceForDrive(drive$)
  569.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  570.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  571.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  572.  
  573.     IF drive$ = WINDRIVE$ THEN
  574.         ReplaceListItem DRIVETEXT$, 4, ""
  575.         ReplaceListItem DRIVETEXT$, 5, ""
  576.         ReplaceListItem DRIVETEXT$, 6, ""
  577.     ELSE
  578.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  579.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(REQNEEDS$, ndrive%))
  580.         IF cost& = 0 THEN
  581.             ReplaceListItem DRIVETEXT$, 4, ""
  582.             ReplaceListItem DRIVETEXT$, 5, ""
  583.             ReplaceListItem DRIVETEXT$, 6, ""
  584.         ELSE
  585.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  586.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  587.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  588.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  589.         END IF
  590.     END IF
  591. END SUB
  592.  
  593.  
  594. '**
  595. '** Purpose:
  596. '**     Appends a file name to the end of a directory path,
  597. '**     inserting a backslash character as needed.
  598. '** Arguments:
  599. '**     szDir$  - full directory path (with optional ending "\")
  600. '**     szFile$ - filename to append to directory
  601. '** Returns:
  602. '**     Resulting fully qualified path name.
  603. '*************************************************************************
  604. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  605.     IF szDir$ = "" THEN
  606.         MakePath = szFile$
  607.     ELSEIF szFile$ = "" THEN
  608.         MakePath = szDir$
  609.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  610.         MakePath = szDir$ + szFile$
  611.     ELSE
  612.         MakePath = szDir$ + "\" + szFile$
  613.     END IF
  614. END FUNCTION
  615.  
  616.