home *** CD-ROM | disk | FTP | other *** search
/ Entrepreneur's Library / Image.iso / mmdemo / disk1 / setup.ms_ / setup.bin
Encoding:
Text File  |  1994-06-20  |  23.0 KB  |  702 lines

  1. '**************************************************************************
  2. '*                       MediaMania Setup Script
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. '' Dialog ID's are stored in file created by COLLIDD utility
  11. '$INCLUDE 'dialogs.inc'
  12.  
  13. '' Bitmap ID
  14. CONST LOGOTIT = 1
  15. CONST LOGOTYP = 1000
  16.  
  17.  
  18. '' -------------------------------------------------------------------------
  19. '' --------- Option checkbox names (see Custom Installation Dialog) --------
  20. '' --------- Corresponding section names and target directories
  21. '' ----------------     see AddOptFilesToCopyList function body
  22. '' -------------------------------------------------------------------------
  23. CONST OPT_MEDIAMANIA = 1
  24. CONST OPT_SAMPLES = 2
  25.  
  26. CONST OPT_LAST = 2      '' Maximum option number
  27.  
  28.  
  29. '' -------------------------------------------------------------------------
  30. '' -------------------------- Global Variables -----------------------------
  31. '' -------------------------------------------------------------------------
  32. GLOBAL DEST$        ''Default destination directory.
  33. GLOBAL WINDIR$
  34. GLOBAL CUIDLL$
  35. GLOBAL SHAREDIR$
  36. GLOBAL TOTALNEEDED& ''Extra space required
  37.  
  38. '' -------------------------------------------------------------------------
  39. '' -------------------------- Dialog Functions -----------------------------
  40. '' -------------------------------------------------------------------------
  41. DECLARE SUB CustInstInfo0Dlg(template%)
  42.  
  43. '' -------------------------------------------------------------------------
  44. '' -------------------------- Utility Functions ----------------------------
  45. '' -------------------------------------------------------------------------
  46. DECLARE FUNCTION IDC(s$) AS INTEGER
  47. DECLARE FUNCTION DriveN (path$) AS INTEGER
  48. DECLARE SUB ClearCopyListExtra
  49. DECLARE SUB AddExtraCost (drive%,cost&)
  50. DECLARE SUB AddOptFilesToCopyList (ftype%,falways%)
  51. DECLARE SUB RecalcOptFiles (ftype%)
  52. DECLARE SUB RecalcPath
  53. DECLARE SUB SetDriveStatus
  54. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  55.  
  56.  
  57. DECLARE FUNCTION FCreateLogoWnd LIB "mscuistf.dll" (hParent%,nID%) AS INTEGER
  58. DECLARE FUNCTION FGetAvailableRAM LIB "mscuistf.dll" AS LONG
  59. DECLARE FUNCTION FGetSwapFileSize LIB "mscuistf.dll" AS LONG
  60. DECLARE FUNCTION FGetLicenseInfo LIB "mscuistf.dll" AS INTEGER
  61.  
  62. DECLARE FUNCTION DestroyWindow LIB "user" (hWnd%) AS INTEGER
  63. DECLARE SUB MessageBeep LIB "user" (idBeep%)
  64. DECLARE SUB ShowWindow LIB "user" (hWnd%,nShowCmd%)
  65.  
  66.  
  67. '' -------------------------------------------------------------------------
  68. '' -------------------------------------------------------------------------
  69. '' ----------                                                   ------------
  70. '' ----------                 B E G I N N I N G                 ------------
  71. '' ----------                                                   ------------
  72. '' -------------------------------------------------------------------------
  73. '' -------------------------------------------------------------------------
  74.  
  75.             '' ----------- Several common definitions
  76.  
  77.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  78.     INFFILE$ = "setup.inf"
  79.     TITLE$ = "MediaMaster Demo Setup"
  80.     DEST$ = "C:\MDMASTER"
  81.     WINDIR$ = GetWindowsDir
  82.     IF IsWindowsShared THEN
  83.         SHAREDIR$ = WINDIR$
  84.     ELSE
  85.         SHAREDIR$ = GetWindowsSysDir
  86.     END IF
  87.     MEDIAMANIA_EXE$ = "PROGRAMS\MDMASTER.EXE"
  88.     MEDIAMANIA_INI$ = MakePath(GetWindowsDir(),"MDMASTER.INI")
  89.     STAMP_SUBDIR$ = "PROGRAMS"
  90.     LOGOTYPE_DELAY& = 5000
  91.  
  92.     '' ShowWindow  HwndFrame(),3       '' Maximize frame
  93.     SetBitmap CUIDLL$, LOGOTIT
  94.     SetTitle TITLE$
  95.  
  96.            '' -------------- Display logotype for some period of time
  97.  
  98. ''    sz$ = UIStartDlg(CUIDLL$,IDD_MODELESS,"FModelessDlgProc",0,"")
  99.     hLogoWnd% = FCreateLogoWnd(HwndFrame(),LOGOTYP)
  100.     IF hLogoWnd% <> 0 THEN
  101.         CursorSave% = ShowWaitCursor
  102.         time0& = Timer
  103.     ABOUTL1:
  104.         time1& = Timer
  105.         IF time1& >= time0& AND time1 < time0&+LOGOTYPE_DELAY& THEN
  106.             GOTO ABOUTL1
  107.         END IF
  108.         i% = DestroyWindow(hLogoWnd%)
  109.         RestoreCursor CursorSave%
  110.     END IF
  111.  
  112. '' ---------------------------------------------------------------------
  113. '' ------------------------- INF FILE READING --------------------------
  114. '' ---------------------------------------------------------------------
  115.  
  116.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  117.     IF szInf$ = "" THEN
  118.         szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILE$
  119.     END IF
  120.     ReadInfFile szInf$
  121.  
  122.  
  123. '' ---------------------------------------------------------------------
  124. '' ------------------- WELCOME DIALOG PROCESSING -----------------------
  125. '' ---------------------------------------------------------------------
  126.  
  127. WELCOME:
  128.     sz$ = UIStartDlg(CUIDLL$, IDD_WELCOME, "FInfoDlgProc", IDD_WELCOME_HELP, "FHelpDlgProc" )
  129.     IF sz$ = "CONTINUE" THEN
  130.         UIPop 1
  131.     ELSE
  132.         GOSUB ASKQUIT
  133.         GOTO WELCOME
  134.     END IF
  135.  
  136.  
  137. '' ---------------------------------------------------------------------
  138. '' -------------------- SYSREQ DIALOG PROCESSING -----------------------
  139. '' ---------------------------------------------------------------------
  140.  
  141.     DIM  req(6) AS INTEGER
  142.  
  143.     req(1) = 1
  144.     IF GetWindowsMajorVersion < 3 THEN
  145.         req(1) = 0
  146.     ELSEIF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 10 THEN
  147.         req(1) = 0
  148.     ELSEIF GetWindowsMode < 2 THEN
  149.         req(1) = 0
  150.     END IF
  151.  
  152.     req(2) = GetProcessorType >= 3
  153.     req(3) = Has87MathChip
  154.     req(4) = FGetSwapFileSize <> 0
  155.  
  156.     req(5) = FGetAvailableRAM >= 6*1024
  157.     req(6) = HasMouseInstalled
  158.  
  159.     req(0) = 1
  160.     FOR i% = 1 TO 6 STEP 1
  161.         IF req(i%) = 0 THEN
  162.             req(0) = 0
  163.         END IF
  164.     NEXT i%
  165.  
  166.     IF req(0) THEN
  167.         GOTO LICENSE
  168.     END IF
  169.  
  170.     req(0) = 1
  171.     FOR i% = 1 TO 4 STEP 1
  172.         IF req(i%) = 0 THEN
  173.             req(0) = 0
  174.         END IF
  175.     NEXT i%
  176.  
  177.     IF req(0) = 0 THEN
  178.         AddListItem "ControlsDisabled",Str$(IDC("C"))
  179.     END IF
  180.     FOR i% = 1 TO 6 STEP 1
  181.         IF req(i) THEN
  182.             AddListItem "StatusItemsText", "Present"
  183.         ELSE
  184.             AddListItem "StatusItemsText", "Absent"
  185.         END IF
  186.     NEXT i%
  187.  
  188. SYSREQ:
  189.     sz$ = UIStartDlg(CUIDLL$, IDD_SYSREQ, "FCustInstDlgProc", IDD_SYSREQ_HELP, "FHelpDlgProc" )
  190.     IF sz$ = "CONTINUE" THEN
  191.         UIPop 1
  192.     ELSEIF sz$ = "CANCEL" THEN
  193.         IF req(0) = 0 THEN
  194.             UIPopAll
  195.             ERROR STFQUIT
  196.         ELSE
  197.             GOSUB ASKQUIT
  198.             GOTO SYSREQ
  199.         END IF
  200.     ELSE
  201.         GOTO SYSREQ
  202.     END IF
  203.  
  204.     RemoveSymbol "StatusItemsText"
  205.  
  206. '' ---------------------------------------------------------------------
  207. '' --------------------- LICENSE DIALOG PROCESSING ---------------------
  208. '' ---------------------------------------------------------------------
  209.  
  210. LICENSE:
  211.     i% = FGetLicenseInfo
  212.     IF i% < 0 THEN
  213.         GOTO ERRQUIT
  214.     ELSEIF i% > 0 THEN
  215.         AddListItem "ConfirmTextIn", GetSymbolValue("NameOut")
  216.         AddListItem "ConfirmTextIn", GetSymbolValue("OrgOut")
  217.     ALREADYUSEDL1:
  218.         sz$ = UIStartDlg(CUIDLL$, IDD_CDALREADYUSED, "FConfirmDlgProc", 0, "" )
  219.         IF sz$ = "EXIT" THEN
  220.             GOSUB ASKQUIT
  221.             GOTO ALREADYUSEDL1
  222.         END IF
  223.         UIPop 1
  224.         fAlreadyStamped% = 1
  225.     ELSE
  226.  
  227.     GETNAMEORGL1:
  228.         sz$ = UIStartDlg(CUIDLL$, IDD_CDGETNAMEORG, "FNameOrgDlgProc", 0, "" )
  229.         IF sz$ = "EXIT" THEN
  230.             GOSUB ASKQUIT
  231.             GOTO GETNAMEORGL1
  232.         END IF
  233.         IF (GetSymbolValue("NameOut") = "" AND GetSymbolValue("OrgOut") = "") OR GetSymbolValue("SerialNoOut") = "" THEN
  234.             MessageBeep -1
  235.             GOTO GETNAMEORGL1
  236.         END IF
  237.         ' UIPop 1
  238.         AddListItem "ConfirmTextIn", GetSymbolValue("NameOut")
  239.         AddListItem "ConfirmTextIn", GetSymbolValue("OrgOut")
  240.         AddListItem "ConfirmTextIn", GetSymbolValue("SerialNoOut")
  241.     CONFIRMNAMEORGL1:
  242.         sz$ = UIStartDlg(CUIDLL$, IDD_CDCONFIRMINFO, "FConfirmDlgProc", 0, "" )
  243.         IF sz$ = "BACK" THEN
  244.             UiPop 1
  245.             RemoveSymbol "ConfirmTextIn"
  246.             GOTO GETNAMEORGL1
  247.         END IF
  248.         UIPop 2
  249.         fAlreadyStamped% = 0
  250.     END IF
  251.     stamp$ = "LC"+GetSymbolValue("NameOut")+chr$(0)+GetSymbolValue("OrgOut")+chr$(0)+GetSymbolValue("SerialNoOut")+chr$(0)
  252.  
  253.  
  254. '' ---------------------------------------------------------------------
  255. '' --------------- CUSTOM INSTALLATION DIALOG PROCESSING ---------------
  256. '' ---------------------------------------------------------------------
  257.  
  258. CUSTINST:
  259.             '' --------- Try to find MediaMania if previously installed
  260.  
  261.     sz$ = GetIniKeyString(MEDIAMANIA_INI$,"Directories","Root")
  262.     IF sz$ <> "" THEN
  263.         DEST$ = sz$
  264.     END IF
  265.  
  266.  
  267.             '' --------- Custom Installation Dialog Box Initialization
  268.  
  269.                 '' Clear the list of extra space (not listed in setup.inf)
  270.                 '' required per drive. This list is used in calls to
  271.                 '' GetCopyListCost function to provide the information
  272.                 '' about additional required space.
  273.     FOR i% = 1 TO 26 STEP 1
  274.         AddListItem "ExtraCosts", "0"
  275.     NEXT i%
  276.  
  277.                 '' Initialize the dialog input values
  278.     RemoveSymbol "CheckItemsState"
  279.     FOR i% = 1 TO 2 STEP 1
  280.         AddListItem "CheckItemsState", "ON"
  281.     NEXT i%
  282.     FOR i% = 1 TO 2 STEP 1
  283.         AddListItem "StatusItemsText", ""
  284.     NEXT i%
  285.     FOR i% = 1 TO 6 STEP 1
  286.         AddListItem "DriveStatusText", ""
  287.     NEXT i%
  288.     AddListItem "DriveStatusText", DEST$
  289.  
  290.                 '' Language combo box init
  291.  
  292.     AddListItem "ListItemsIn","English"
  293.     AddListItem "ListItemsIn","Russian"
  294.     SetSymbolValue "ListItemsOut","Russian"
  295.  
  296.  
  297.                 '' Compute data to be displayed in the dialog
  298.     RecalcPath
  299.     SetDriveStatus
  300.  
  301.  
  302.             '' -------- Custom Installation Dialog Box Loop
  303.  
  304. CUSTINSTL1:
  305.     RemoveSymbol "ControlsDisabled"
  306.     sz$ = Str$(IDC("STATIC1"))
  307.     sz1$ = Str$(IDC("LIST1"))
  308.     IF GetListItem("CheckItemsState",OPT_MEDIAMANIA) = "ON" THEN
  309.         sz$ = "*"+sz$
  310.         sz1$ = "*"+sz1$
  311.     END IF
  312.     AddListItem "ControlsDisabled",sz$
  313.     AddListItem "ControlsDisabled",sz1$
  314.  
  315.  
  316.     sz$ = UIStartDlg(CUIDLL$, IDD_CUSTINST, "FCustInstDlgProc", IDD_CUSTINST_HELP, "FHelpDlgProc")
  317.  
  318.     IF sz$ = "CONTINUE" THEN
  319.         IF TOTALNEEDED& > 0 THEN
  320.             CustInstInfo0Dlg IDD_TOOBIG
  321.         ELSE
  322.             LANGUAGE$ = GetSymbolValue("ListItemsOut")
  323.             UIPop 1
  324.             GOTO INSTALL
  325.         ENDIF
  326.     ELSEIF sz$ = "PATH" THEN
  327.         GOSUB GETPATH
  328.     ELSEIF len(sz$) >= 3 AND mid$(sz$,1,3) = "CHK" THEN
  329.         SetDriveStatus
  330.     ELSEIF sz$ = "CANCEL" THEN
  331.         GOSUB ASKQUIT
  332.     ELSEIF sz$ = "REACTIVATE" THEN
  333.         RecalcPath
  334.         SetDriveStatus
  335.     END IF
  336.     GOTO CUSTINSTL1
  337.  
  338.  
  339. '' ---------------------------------------------------------------------
  340. '' --------------------- GET PATH DIALOG PROCESSING --------------------
  341. '' ---------------------------------------------------------------------
  342.  
  343. GETPATH:
  344.     SetSymbolValue "EditTextIn", DEST$
  345.     SetSymbolValue "EditFocus", "END"
  346. GETPATHL1:
  347.     sz$ = UIStartDlg(CUIDLL$, IDD_DESTPATH, "FEditDlgProc", IDD_DESTPATH_HELP, "FHelpDlgProc")
  348.  
  349.     IF sz$ = "CONTINUE" THEN
  350.  
  351.         olddest$ = DEST$
  352.         DEST$ = GetSymbolValue("EditTextOut")
  353.  
  354.         ''Validate new path.
  355.         IF IsDirWritable(DEST$) = 0 THEN
  356.             CustInstInfo0Dlg IDD_BADPATH
  357.             DEST$ = olddest$
  358.             GOTO GETPATHL1
  359.         END IF
  360.         UIPop 1
  361.  
  362.         ''Truncate display if too long.
  363.         IF LEN(DEST$) > 30 THEN
  364.             ReplaceListItem "DriveStatusText", 7, MID$(DEST$, 1, 30)+"..."
  365.         ELSE
  366.             ReplaceListItem "DriveStatusText", 7, DEST$
  367.         END IF
  368.  
  369.         ''Recalc if path changed.
  370.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  371.             RecalcPath
  372.             SetDriveStatus
  373.         END IF
  374.  
  375.         olddest$ = ""
  376.         RETURN
  377.     ELSEIF sz$ = "REACTIVATE" THEN
  378.         RecalcPath
  379.         SetDriveStatus
  380.     ELSE
  381.         UIPop 1
  382.         RETURN
  383.     END IF
  384.     GOTO GETPATHL1
  385.  
  386.  
  387. '' ---------------------------------------------------------------------
  388. '' ---------------------------- INSTALLATION ---------------------------
  389. '' ---------------------------------------------------------------------
  390.  
  391. INSTALL:
  392.     ClearCopyListExtra
  393.     FOR i% = 1 TO OPT_LAST
  394.         AddOptFilesToCopyList i%,0
  395.     NEXT i%
  396.  
  397.     IF fAlreadyStamped% = 0 THEN
  398.         szDir$ = GetSymbolValue("STF_SRCDIR")
  399.     CHECKWRITABLE:
  400.         IF IsDirWritable(szDir$) = 0 THEN
  401.         ASKWRITABLE:
  402.             i% = DoMsgBox("Write protect error writing drive "+UCase$(Mid$(szDir$,1,1))+":","Error",5)
  403.             IF i% = 2 THEN
  404.                 GOSUB ASKQUIT
  405.                 GOTO ASKWRITABLE
  406.             END IF
  407.             GOTO CHECKWRITABLE
  408.         END IF
  409.         sz$ = stamp$
  410.         StampResource "Setup Files","License",GetSymbolValue("STF_SRCDIR"),1111,1111,sz$,LEN(sz$)
  411.     END IF
  412.  
  413.     CreateDir DEST$, cmoNone
  414.     CopyFilesInCopyList
  415.  
  416.     sz$ = stamp$
  417.     StampResource "MediaMaster","License",MakePath(DEST$,STAMP_SUBDIR$),1111,1111,sz$,LEN(sz$)
  418.  
  419.  
  420.     IF GetListItem("CheckItemsState", OPT_MEDIAMANIA) = "ON" THEN
  421.  
  422.         CreateIniKeyValue MEDIAMANIA_INI$,"Settings","Language",LANGUAGE$,cmoOverwrite
  423.         CreateIniKeyValue MEDIAMANIA_INI$,"Directories","Root",DEST$,cmoOverwrite
  424.  
  425.         CreateProgmanGroup "MediaMaster", "", cmoNone
  426.         ShowProgmanGroup  "MediaMaster", 1, cmoNone
  427.         CreateProgmanItem "MediaMaster", "MediaMaster", MakePath(DEST$,MEDIAMANIA_EXE$), "", cmoOverwrite
  428.         CreateProgmanItem "MediaMaster", "Release Notes", "NOTEPAD.EXE "+MakePath(DEST$,"MMREADME.NP"), "", cmoOverwrite
  429.         ''Demo
  430.         ''CreateProgmanItem "MediaMaster", "Video Notes", "NOTEPAD.EXE "+MakePath(DEST$,"VIDEO.NP"), "", cmoOverwrite
  431.     END IF
  432.  
  433.  
  434. '' ---------------------------------------------------------------------
  435. '' ------------------------ SETUP QUIT PROCESSING ----------------------
  436. '' ---------------------------------------------------------------------
  437.  
  438. QUIT:
  439.     ON ERROR GOTO ERRQUIT
  440.  
  441.     IF ERR = 0 THEN
  442.         dlg% = IDD_EXITSUCCESS
  443.     ELSEIF ERR = STFQUIT THEN
  444.         dlg% = IDD_EXITQUIT
  445.     ELSE
  446.         dlg% = IDD_EXITFAILURE
  447.     END IF
  448. QUITL1:
  449.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  450.     IF sz$ = "REACTIVATE" THEN
  451.         GOTO QUITL1
  452.     END IF
  453.     UIPop 1
  454.  
  455.     END
  456.  
  457. ERRQUIT:
  458.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  459.     END
  460.  
  461.  
  462. '' -------------------------------------------------------------------------
  463. '' -------------------------------------------------------------------------
  464. '' ----------                                                   ------------
  465. '' ----------         A U X I L I A R Y   D I A L O G S         ------------
  466. '' ----------                                                   ------------
  467. '' -------------------------------------------------------------------------
  468. '' -------------------------------------------------------------------------
  469.  
  470.  
  471. '' ---------------------------------------------------------------------
  472. '' --------------------- ASK QUIT DIALOG PROCESSING --------------------
  473. '' ---------------------------------------------------------------------
  474.  
  475. ASKQUIT:
  476.     sz$ = UIStartDlg(CUIDLL$, IDD_ASKQUIT, "FQuitDlgProc", 0, "")
  477.  
  478.     IF sz$ = "EXIT" THEN
  479.         UIPopAll
  480.         ERROR STFQUIT
  481.     ELSEIF sz$ = "REACTIVATE" THEN
  482.         GOTO ASKQUIT
  483.     ELSE
  484.         UIPop 1
  485.     END IF
  486.     RETURN
  487.  
  488. '' ---------------------------------------------------------------------
  489. '' ------------------- CUSTINST INFO0 DIALOG PROCESSING ----------------
  490. '' ---------------------------------------------------------------------
  491.  
  492. SUB CustInstInfo0Dlg(template%) STATIC
  493. L1:
  494.     sz$ = UIStartDlg(CUIDLL$, template%, "FInfo0DlgProc", 0, "")
  495.     IF sz$ = "REACTIVATE" THEN
  496.         ''RecalcPath
  497.         ''SetDriveStatus
  498.         GOTO L1
  499.     END IF
  500.     UIPop 1
  501. END SUB
  502.  
  503. '' -------------------------------------------------------------------------
  504. '' -------------------------------------------------------------------------
  505. '' ----------                                                   ------------
  506. '' ----------         U T I L I T Y   F U N C T I O N S         ------------
  507. '' ----------                                                   ------------
  508. '' -------------------------------------------------------------------------
  509. '' -------------------------------------------------------------------------
  510.  
  511. '' --------------- Returns control identifier by given string
  512. ''                 for letters and statics,
  513. ''                      e.g. IDC("A")=IDC_A, IDC("B")=IDC_B,
  514. ''                           IDC("STATIC1")=IDC_STATIC1, etc.
  515. FUNCTION IDC(s$) STATIC AS INTEGER
  516.     IF Len(s$) = 1 THEN
  517.         IDC = 401+asc(s$)-asc("A")
  518.     ELSEIF Mid$(s$,1,6) = "STATIC" THEN
  519.         IDC = 600+val(Mid$(s$,7))
  520.     ELSEIF Mid$(s$,1,4) = "LIST" THEN
  521.         IDC = 428+val(Mid$(s$,5))
  522.     ELSE
  523.         IDC = -1
  524.     END IF
  525. END FUNCTION
  526.  
  527. '' --------------- Converts ASCII path to integer drive number
  528. FUNCTION DriveN(path$) STATIC AS INTEGER
  529.     DriveN = asc(ucase$(path$))-asc("A")+1
  530. END FUNCTION
  531.  
  532. '' --------------- Clears copy list and ExtraCosts list
  533. SUB ClearCopyListExtra STATIC
  534.  
  535.     ClearCopyList
  536.     FOR i% = 1 TO 26 STEP 1
  537.         ReplaceListItem "ExtraCosts", i%, "0"
  538.     NEXT i%
  539. END SUB
  540.  
  541. '' -------- Adds specified cost to the drive% item of the ExtraCosts list
  542. SUB AddExtraCost (drive%,cost&) STATIC
  543.  
  544.     ReplaceListItem "ExtraCosts", drive%, STR$( VAL(GetListItem("ExtraCosts",drive%))+cost& )
  545. END SUB
  546.  
  547.  
  548. '**
  549. '** Purpose:
  550. '**     Adds the specified section files to the copy list.
  551. '** Arguments:
  552. '**     ftype%  - type of option to add, one of the following:
  553. '**             OPT_MEDIAMANIA, OPT_SAMPLES
  554. '**     falways% - if this parameter is zero then the section is added
  555. '**             depending on the corresponding checkbox state. If this
  556. '**             parameter is non-zero the section is always added.
  557. '** Returns:
  558. '**     none.
  559. '*************************************************************************
  560. SUB AddOptFilesToCopyList (ftype%,falways%) STATIC
  561.  
  562.     IF falways% <> 0 OR GetListItem("CheckItemsState", ftype%) = "ON" THEN
  563.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  564.         IF ftype% = OPT_MEDIAMANIA THEN
  565.             AddSectionFilesToCopyList "MediaMaster", SrcDir$, MakePath$(DEST$,"PROGRAMS")
  566.             AddSectionFilesToCopyList "Behaviours", SrcDir$, MakePath$(DEST$,"BEHAVIOR")
  567.             AddSectionFilesToCopyList "Shared Files", SrcDir$, SHAREDIR$
  568.             AddSectionFilesToCopyList "Ini Files", SrcDir$, WINDIR$
  569.             AddSectionFilesToCopyList "Readme Files", SrcDir$, DEST$
  570.                 ''Add extra cost to Windows drive for ini/progman, etc.
  571.                 ''Also add extra cost to Dest drive for inifile
  572.             AddExtraCost    DriveN(WINDIR$),10240
  573.             AddExtraCost    DriveN(DEST$),10240
  574.         ELSEIF ftype% = OPT_SAMPLES THEN
  575.             AddSectionFilesToCopyList "Samples", SrcDir$, MakePath$(DEST$,"SAMPLES")
  576.         END IF
  577.     END IF
  578. END SUB
  579.  
  580.  
  581. '**
  582. '** Purpose:
  583. '**     Recalculates disk space for the given option files and sets
  584. '**     the status info symbol "StatusItemsText".
  585. '** Arguments:
  586. '**     ftype% - type of option to add, one of the following:
  587. '**             OPT_MEDIAMANIA, OPT_SAMPLES
  588. '** Returns:
  589. '**     none.
  590. '*************************************************************************
  591. SUB RecalcOptFiles (ftype%) STATIC
  592.  
  593.     ClearCopyListExtra
  594.     AddOptFilesToCopyList ftype%,1
  595.  
  596.     StillNeed& = GetCopyListCost("ExtraCosts", "SizeList", "")
  597.  
  598.     cost& = 0
  599.     FOR i% = 1 TO 26 STEP 1
  600.         cost&  = cost& + VAL(GetListItem("SizeList", i%))
  601.     NEXT i%
  602.     ReplaceListItem "StatusItemsText", ftype%, STR$((cost& + 1023) / 1024) + " K"
  603.  
  604.     RemoveSymbol("SizeList")
  605. END SUB
  606.  
  607.  
  608. '**
  609. '** Purpose:
  610. '**     Recalculates disk space and sets option status info according
  611. '**     to the current destination path.
  612. '** Arguments:
  613. '**     none.
  614. '** Returns:
  615. '**     none.
  616. '*************************************************************************
  617. SUB RecalcPath STATIC
  618.  
  619.     CursorSave% = ShowWaitCursor()
  620.  
  621.     for i% = 1 TO OPT_LAST STEP 1
  622.         RecalcOptFiles i%
  623.     NEXT i%
  624.  
  625.     RestoreCursor CursorSave%
  626. END SUB
  627.  
  628.  
  629. '**
  630. '** Purpose:
  631. '**     Sets drive status info according to latest disk space calcs.
  632. '** Arguments:
  633. '**     none.
  634. '** Returns:
  635. '**     none.
  636. '*************************************************************************
  637. SUB SetDriveStatus STATIC
  638.  
  639.     CursorSave% = ShowWaitCursor()
  640.  
  641.     ClearCopyListExtra
  642.     FOR i% = 1 TO OPT_LAST STEP 1
  643.         AddOptFilesToCopyList i%,0
  644.     NEXT i%
  645.  
  646.     TOTALNEEDED& = GetCopyListCost("ExtraCosts","SizeList","")
  647.  
  648.     drive$ = UCASE$(MID$(DEST$,1,1))
  649.     ndrive% = DriveN(drive$)
  650.     cost& = VAL(GetListItem("SizeList", ndrive%))
  651.     free& = GetFreeSpaceForDrive(drive$)
  652.     ReplaceListItem "DriveStatusText", 1, drive$ + ":"
  653.     ReplaceListItem "DriveStatusText", 2, STR$((cost&+1023) / 1024) + " K"
  654.     ReplaceListItem "DriveStatusText", 3, STR$(free& / 1024) + " K"
  655.  
  656.     IF ndrive% = DriveN(WINDIR$) THEN
  657.         ReplaceListItem "DriveStatusText", 4, ""
  658.         ReplaceListItem "DriveStatusText", 5, ""
  659.         ReplaceListItem "DriveStatusText", 6, ""
  660.     ELSE
  661.         drive$ = UCASE$(MID$(WINDIR$,1,1))
  662.         ndrive% = DriveN(WINDIR$)
  663.         cost& = VAL(GetListItem("SizeList", ndrive%))
  664.         IF cost& = 0 THEN
  665.             ReplaceListItem "DriveStatusText", 4, ""
  666.             ReplaceListItem "DriveStatusText", 5, ""
  667.             ReplaceListItem "DriveStatusText", 6, ""
  668.         ELSE
  669.             free& = GetFreeSpaceForDrive(drive$)
  670.             ReplaceListItem "DriveStatusText", 4, drive$ + ":"
  671.             ReplaceListItem "DriveStatusText", 5, STR$((cost&+1023) / 1024) + " K"
  672.             ReplaceListItem "DriveStatusText", 6, STR$(free& / 1024) + " K"
  673.         END IF
  674.     END IF
  675.  
  676.     RestoreCursor CursorSave%
  677. END SUB
  678.  
  679.  
  680. '**
  681. '** Purpose:
  682. '**     Appends a file name to the end of a directory path,
  683. '**     inserting a backslash character as needed.
  684. '** Arguments:
  685. '**     szDir$  - full directory path (with optional ending "\")
  686. '**     szFile$ - filename to append to directory
  687. '** Returns:
  688. '**     Resulting fully qualified path name.
  689. '*************************************************************************
  690. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  691.     IF szDir$ = "" THEN
  692.         MakePath = szFile$
  693.     ELSEIF szFile$ = "" THEN
  694.         MakePath = szDir$
  695.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  696.         MakePath = szDir$ + szFile$
  697.     ELSE
  698.         MakePath = szDir$ + "\" + szFile$
  699.     END IF
  700. END FUNCTION
  701.  
  702.