home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic 4 Unleashed / Visual_Basic_4_Unleashed_SAMS_Publishing_1995.iso / choreo / choreo.mst < prev    next >
Text File  |  1995-09-11  |  34KB  |  1,076 lines

  1. '**************************************************************************
  2. '*                       CHOREO SETUP - TRIAL VERSION 1.1
  3. '**************************************************************************
  4.  
  5. ''Define for script development/debugging
  6. '$DEFINE DEBUG 1 
  7.  
  8. '$INCLUDE 'setupapi.inc'
  9. '$INCLUDE 'msdetect.inc'
  10. '$INCLUDE 'msregdb.inc'
  11.  
  12. ''Dialog ID's
  13. CONST WELCOME           = 100
  14. CONST ACROBAT_INFO        = 130
  15. CONST ASKQUIT           = 200
  16. CONST DESTPATH          = 300
  17. CONST EXITFAILURE       = 400
  18. CONST EXITQUIT          = 600
  19. CONST EXITSUCCESS       = 700
  20. CONST APPHELP           = 900
  21. CONST CDBADPATH           = 6400
  22. CONST CUSTINST          = 6200
  23. CONST CDTOOBIG            = 6300
  24. CONST MULT_DB_DRIVER     = 4000
  25. CONST SING_PROG_GROUP     = 4100
  26. CONST AUTOEXEC_PATH     = 4200
  27. CONST CDGETNAMEORG      = 7500
  28. CONST CDCONFIRMINFO      = 7300
  29. CONST VBPATHDLG            = 4300
  30. CONST VBCVCTLVBXDLG        = 4500
  31. CONST CDGETSERIALNUMBER    = 7501
  32. CONST CDSERIAL_ERROR    = 7502
  33.  
  34. '' njg infomercials
  35. CONST INFOMERCIAL1        = 101
  36. ''CONST INFOMERCIAL2        = 102
  37.  
  38. ''Bitmap ID
  39. CONST LOGO = 1
  40.  
  41. ''File Types
  42. CONST CHOREOFILES    = 1
  43. CONST DBFILES        = 2
  44. CONST HELPFILES     = 3
  45. CONST EXAMPLEFILES    = 4
  46. CONST TUTORFILES    = 5
  47. CONST GUPTADBFILES    = 6
  48. CONST GUPTADOCFILES    = 7
  49.  
  50. ''CONST BADDIR        = 0
  51. ''CONST NEWAPP        = 1
  52.  
  53. GLOBAL DEST$            ''Default destination directory
  54. GLOBAL DESTDRIVE$        ''Destination drive
  55. GLOBAL WINDRIVE$        ''Windows drive letter
  56. GLOBAL WINSYSDIR$        ''Windows System Directory
  57. GLOBAL WINDOWSDIR$        ''Windows directory
  58.  
  59. GLOBAL EXAMPLEDIR$
  60.  GLOBAL BNDCTLDIR$
  61.  GLOBAL DBSDIR$
  62.  GLOBAL DIRSQLSUBDIR$ 
  63. GLOBAL GUPTADIR$
  64.  GLOBAL DOCSUBDIR$
  65.  
  66.  
  67. ''CustInst list symbol names
  68. GLOBAL CHOREONEEDS$        ''Option list costs per drive
  69. GLOBAL DBNEEDS$
  70. GLOBAL HELPNEEDS$
  71. GLOBAL EXAMPLENEEDS$
  72. GLOBAL TUTORNEEDS$
  73. GLOBAL GUPTADBNEEDS$
  74. GLOBAL GUPTADOCNEEDS$
  75. GLOBAL EXTRACOSTS$      ''List of extra costs to add per drive
  76.  
  77. ''Dialog list symbol names
  78. GLOBAL CHECKSTATES$
  79. GLOBAL STATUSTEXT$
  80. GLOBAL DRIVETEXT$
  81. GLOBAL DBLISTIN$
  82. GLOBAL DBLISTOUT$
  83. GLOBAL GRPLISTIN$
  84. GLOBAL GRPLISTOUT$
  85. GLOBAL AUTOEXECPATHDEFAULT$
  86. GLOBAL AUTOEXECPATHGREYED$
  87. GLOBAL AUTOEXECPATHCHECKED$
  88. GLOBAL GUPTANEWAPPSTATE$
  89. GLOBAL VBCVCTLADDSTATE$
  90.  
  91. ''Status of check boxes
  92. GLOBAL NAMEOUT$
  93. GLOBAL ORGOUT$
  94. GLOBAL CONFIRMINFO$
  95. GLOBAL GUPTA_DIR$
  96. GLOBAL VBDIR$
  97.  
  98. ''Flags
  99. GLOBAL GOTDBFILE$
  100. GLOBAL NOT_ENOUGH_SPACE
  101. GLOBAL bInstallDBSforTutorial
  102.  
  103. DECLARE SUB AddOptFilesToCopyList (ftype%)
  104. DECLARE SUB RecalcOptFiles (ftype%)
  105. DECLARE SUB RecalcPath
  106. DECLARE SUB SetDriveStatus
  107. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  108.  
  109.  
  110. '' MSCUISTF.DLL function calls
  111. DECLARE FUNCTION UpdateAutoexec LIB "MSCUISTF.DLL" (szChoreoDir$, szGuptaDir$) AS INTEGER
  112. DECLARE FUNCTION CreateExampleAutoexec LIB "MSCUISTF.DLL" (szChoreoDir$, szGuptaDir$) AS INTEGER
  113. DECLARE FUNCTION WriteVBXToMakFile LIB "MSCUISTF.DLL" (szVBPath$,szVBXName$) AS INTEGER
  114. DECLARE FUNCTION GetWinDir LIB "MSCUISTF.DLL" () AS INTEGER
  115. DECLARE FUNCTION GetSysDir LIB "MSCUISTF.DLL" () AS INTEGER
  116. DECLARE FUNCTION MaximizeFrameWnd LIB "MSCUISTF.DLL" (hWnd%) AS INTEGER
  117. DECLARE FUNCTION GetCopyGaugeX LIB "MSCUISTF.DLL" (hWnd%) AS INTEGER
  118. DECLARE FUNCTION GetCopyGaugeY LIB "MSCUISTF.DLL" (hWnd%) AS INTEGER
  119. DECLARE FUNCTION AddINIEntries LIB "MSCUISTF.DLL" () AS INTEGER
  120. INIT:
  121.  
  122.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  123.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  124.  
  125.     GOTDBFILE$ = "NO"
  126.  
  127.     SetBitmap CUIDLL$, LOGO
  128.     SetTitle "Choreo for Visual Basic"
  129.  
  130.     '' njg - maximize the frame window
  131.     HFRAMEWND% = HwndFrame()
  132.     i% = MaximizeFrameWnd (HFRAMEWND%)
  133.  
  134.     '' ------------------------------------------------------------------
  135.     '' Add the billboards for display during copying
  136.     ''AddBlankToBillboardList 5 - api DOESN'T WORK!
  137.     FOR i% = 1 TO 7 STEP 1 
  138.     AddToBillboardList CUIDLL$, INFOMERCIAL1, "FInfomercialProc1", 10
  139.     NEXT i%
  140.  
  141.     '' Now adjust the position of the "progress" dlg so it is out of the way...
  142.     SetCopyGaugePosition GetCopyGaugeX(HFRAMEWND%), GetCopyGaugeY(HFRAMEWND%)
  143.  
  144.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  145.     IF szInf$ = "" THEN
  146.         szInf$ = GetSymbolValue("STF_CWDDIR") + "CHOREO.INF"
  147.     END IF
  148.     ReadInfFile szInf$
  149.  
  150.     '' Use the Windows functions in ouR DLL to get the Windows and System directories
  151.        i% = GetWinDir()
  152.     WINDOWSDIR$ = GetSymbolValue("WindowsDir")
  153.     WINDRIVE$  = MID$(WINDOWSDIR,1,1)
  154.     i% = GetSysDir()
  155.     WINSYSDIR$     = GetSymbolValue("WindowsSystemDir")
  156.     DEST$         = "C:\CHOREO"
  157.     DESTDRIVE$     = "C"
  158.  
  159.     '' ---------------------------------
  160.     '' Set up the directory strings
  161.     EXAMPLEDIR$   = "Examples"
  162.      BNDCTLDIR$  = "Bnd_Ctrl"
  163.      DBSDIR$     = "dbs"
  164.      DIRSQLSUBDIR$  = "dir_sql"
  165.  
  166.     GUPTADIR$          = "Gupta"
  167.      DOCSUBDIR$        = "Doc"
  168.     '' ---------------------------------
  169.  
  170.     ''Initialize Custom Install List Symbols
  171.     CHECKSTATES$         = "CheckItemsState"
  172.     STATUSTEXT$          = "StatusItemsText"
  173.     DRIVETEXT$           = "DriveStatusText"
  174.     DBLISTIN$             = "ListItemsIn"
  175.     DBLISTOUT$             = "ListItemsOut"
  176.     GRPLISTIN$             = "GroupListIn"
  177.     AUTOEXECPATHDEFAULT$ = "RadioDefault"
  178.     AUTOEXECPATHGREYED$ = "OptionsGreyed"
  179.     AUTOEXECPATHCHECKED$ = "ButtonChecked"
  180.     VBCVCTLADDSTATE$     = "ChoreoVBX"
  181.     VBDIR$                 = "C:\"
  182.  
  183.  
  184.     FOR i% = 1 TO 3 STEP 1              '' Seven Check Boxes, only first 3 checked
  185.         AddListItem CHECKSTATES$, "ON"
  186.     NEXT i%
  187.     AddListItem CHECKSTATES$, "OFF"
  188.     AddListItem CHECKSTATES$, "ON"
  189.     AddListItem CHECKSTATES$, "OFF"
  190.     AddListItem CHECKSTATES$, "OFF"
  191.     FOR i% = 1 TO 7 STEP 1
  192.         AddListItem STATUSTEXT$, ""
  193.     NEXT i%
  194.     FOR i% = 1 TO 7 STEP 1
  195.         AddListItem DRIVETEXT$, ""
  196.     NEXT i%
  197.     ReplaceListItem DRIVETEXT$, 7, DEST$  '' Set IDC_TEXT7 to the chosen path
  198.  
  199.  
  200.     ''Disk cost list symbols
  201.     CHOREONEEDS$   = "ChoreoNeeds"
  202.     DBNEEDS$         = "DBNeeds"
  203.     HELPNEEDS$     = "HelpNeeds"
  204.     EXAMPLENEEDS$  = "ExampleNeeds"
  205.     TUTORNEEDS$    = "TutorialNeeds"
  206.     GUPTADBNEEDS$  = "GuptaNeeds"
  207.     GUPTADOCNEEDS$ = "GutpaDocNeeds"
  208.     EXTRACOSTS$    = "ExtraCosts"
  209.     
  210.     NOT_ENOUGH_SPACE = 0
  211.     bInstallDBSforTutorial = 1
  212.        
  213.     FOR i% = 1 TO 26 STEP 1    '' For the maximum number of drives
  214.         AddListItem EXTRACOSTS$, "0"
  215.     NEXT i%
  216.  
  217.  
  218.     '' Get Data Driver information from the .INF file
  219.     AddListItem DBLISTIN$, "ODBC"
  220.     AddListItem DBLISTOUT$, "ODBC"
  221.     DBLISTOUT$ = GetSymbolValue("ListItemsOut")
  222.     VBCVCTLADDSTATE$= "ON"
  223.     NAMEOUT$ = ""
  224.     ORGOUT$ = ""
  225.     CONFIRMINFO$ = "ConfirmTextIn"
  226.     INSTALLYES$    = "YES"
  227.     INSTALLNO$    = ""
  228.  
  229.     AddListItem CONFIRMINFO$, DEST$            '' Directory Path
  230.     AddListItem CONFIRMINFO$, DBLISTOUT$    '' Database Drivers
  231.     AddListItem CONFIRMINFO$, GRPLISTOUT$    '' Program Group name
  232.     AddListItem CONFIRMINFO$, NAMEOUT$        '' User name
  233.     AddListItem CONFIRMINFO$, ORGOUT$        '' Org name
  234.     AddListItem CONFIRMINFO$, VBDIR$        '' Visual Basic Path
  235.     AddListItem CONFIRMINFO$, INSTALLYES$    '' Install Examples
  236.     AddListItem CONFIRMINFO$, INSTALLYES$    '' Install tutorial
  237.     AddListItem CONFIRMINFO$, INSTALLYES$    '' Install Gupta
  238.     AddListItem CONFIRMINFO$, INSTALLYES$    '' Install Doc
  239.     AddListItem CONFIRMINFO$, INSTALLYES$    '' Install AutoLoad update
  240.     
  241.     AddListItem AUTOEXECPATHDEFAULT$, "2"
  242.     AddListItem AUTOEXECPATHGREYED$,  "1"
  243.     AddListItem AUTOEXECPATHCHECKED$, "2"
  244.  
  245. ''    SetSymbolValue "ListItemsOut", DBLISTOUT$
  246.  
  247.  
  248.     RecalcPath
  249.     SetDriveStatus
  250.  
  251. '$IFDEF DEBUG
  252.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  253.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  254.     IF IsDriveValid(WinDrive$) = 0 THEN
  255.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  256.         GOTO QUIT
  257.     END IF
  258. '$ENDIF ''DEBUG
  259.  
  260.  
  261. WELCOME:
  262. ''    sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  263.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FWelcomeDlgProc", APPHELP, HELPPROC$)
  264.     IF sz$ = "CONTINUE" THEN
  265.         UIPop 1
  266.     ELSEIF sz$ = "REACTIVATE" THEN
  267.         GOTO WELCOME
  268.     ELSE
  269.         GOSUB ASKQUIT
  270.         GOTO WELCOME
  271.     END IF
  272.  
  273. CUSTINST:
  274.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  275.  
  276.     IF sz$ = "CONTINUE" THEN
  277.     ''Install only if it will fit.
  278.         IF NOT_ENOUGH_SPACE >0 THEN            
  279.             GOSUB TOOBIG
  280.             GOTO CUSTINST
  281.         END IF
  282.         UIPop 1
  283.         GOTO GRPNAME
  284.     ELSEIF sz$ = "PATH" THEN
  285.         GOTO GETPATH
  286.  
  287.     ELSEIF sz$ = "CHK1" THEN
  288.         RecalcOptFiles CHOREOFILES
  289.         SetDriveStatus
  290.         GOTO CUSTINST
  291.     ELSEIF sz$ = "CHK2" THEN
  292.         RecalcOptFiles DBFILES
  293.         SetDriveStatus      
  294.         GOTO CUSTINST
  295.     ELSEIF sz$ = "CHK3" THEN
  296.         RecalcOptFiles HELPFILES
  297.         SetDriveStatus
  298.         GOTO CUSTINST
  299.     ELSEIF sz$ = "CHK4" THEN
  300.         bInstallDBSforTutorial = 1
  301.         RecalcOptFiles EXAMPLEFILES
  302.         RecalcOptFiles TUTORFILES
  303.         SetDriveStatus
  304.         GOTO CUSTINST
  305.     ELSEIF sz$ = "CHK5" THEN
  306.         RecalcOptFiles TUTORFILES
  307.         SetDriveStatus
  308.         GOTO CUSTINST
  309.     ELSEIF sz$ = "CHK6" THEN
  310.         RecalcOptFiles GUPTADBFILES
  311.         SetDriveStatus
  312.         GOTO CUSTINST
  313.     ELSEIF sz$ = "CHK7" THEN
  314.         RecalcOptFiles GUPTADOCFILES
  315.         SetDriveStatus
  316.         GOTO CUSTINST
  317.  
  318.     ELSEIF sz$ = "BTN2" THEN
  319.         GOTO DBFILES
  320.     
  321.     ELSEIF sz$ = "REACTIVATE" THEN
  322.         SetDriveStatus
  323.         GOTO CUSTINST
  324.     
  325.     ELSE
  326.         GOSUB ASKQUIT
  327.         GOTO CUSTINST
  328.     END IF
  329.  
  330. GETPATH:
  331.     SetSymbolValue "EditTextIn", DEST$
  332.     SetSymbolValue "EditFocus", "ALL"
  333.     olddest$ = DEST$
  334. GETPATHL1:
  335.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  336.  
  337.     IF sz$ = "CONTINUE" THEN
  338.         olddest$ = DEST$
  339.         DEST$ = GetSymbolValue("EditTextOut")
  340.  
  341.         ''Validate new path.
  342.         IF IsDirWritable(DEST$) = 0 THEN
  343.             DEST$ = olddest$
  344.             GOSUB BADPATH
  345.             GOTO GETPATHL1
  346.         END IF
  347.         UIPop 1
  348.  
  349.         ''Truncate display if too long.
  350.         IF LEN(DEST$) > 23 THEN
  351.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  352.         ELSE
  353.             ReplaceListItem DRIVETEXT$, 7, DEST$
  354.         END IF
  355.  
  356.         ''Recalc if path changed.
  357. ''        IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  358.             RecalcPath
  359.             SetDriveStatus
  360. ''        END IF
  361.  
  362.         olddest$ = ""
  363. ''            RecalcPath
  364. ''        SetDriveStatus
  365.         GOTO CUSTINST
  366.     ELSEIF sz$ = "REACTIVATE" THEN
  367.         GOTO GETPATHL1
  368.     ELSEIF sz$ = "EXIT" THEN
  369.         GOSUB ASKQUIT
  370.         GOTO GETPATHL1
  371.     ELSEIF sz$ = "BACK" THEN
  372.         UIPop 1
  373.         DEST$ = olddest$
  374.         GOTO CUSTINST
  375.     ELSE
  376.         UIPop 1
  377.     GOTO CUSTINST
  378.     END IF
  379.  
  380.  
  381. DBFILES:
  382.     ''ng% = DoMsgBox("DBFILES", "Debug Message", MB_OK)
  383.     SetSymbolValue "ListItemsOut", DBLISTOUT$
  384.     sz$ = UIStartDlg(CUIDLL$, MULT_DB_DRIVER, "FMultiDlgProc", APPHELP, HELPPROC$)
  385.     DBLISTOUT$ = GetSymbolValue("ListItemsOut")
  386.     GOTDBFILE$ = "YES"
  387.  
  388.     IF sz$ = "CONTINUE" THEN
  389.         UIPop 1
  390.         RecalcOptFiles DBFILES
  391.         SetDriveStatus
  392.         GOTO CUSTINST
  393.     ELSEIF sz$ = "REACTIVATE" THEN
  394.         SetDriveStatus
  395.         GOTO DBFILES
  396.     ELSEIF sz$ = "EXIT" THEN
  397.         GOSUB ASKQUIT
  398.         GOTO DBFILES
  399.     ELSE
  400.         UIPop 1
  401.         GOTO CUSTINST
  402.     END IF
  403.  
  404.  
  405. GRPNAME:
  406.     ''ng% = DoMsgBox("GRPNAME", "Debug Message", MB_OK)
  407.     
  408.     SetSymbolValue "GroupListOut", GRPLISTOUT$
  409.  
  410.     sz$ = UIStartDlg(CUIDLL$, SING_PROG_GROUP, "FGroupListDlgProc", APPHELP, HELPPROC$)
  411.     GRPLISTOUT$ = GetSymbolValue("GroupListOut")
  412.     
  413.     IF sz$ = "CONTINUE" THEN
  414.         UIPop 1
  415.         GOTO GETNAMEORG
  416.     ELSEIF sz$ = "BACK" THEN
  417.         UIPop 1
  418.         GOTO CUSTINST
  419.     ELSEIF sz$ = "EXIT" THEN
  420.         GOSUB ASKQUIT
  421.         GOTO GRPNAME
  422.     ELSEIF sz$ = "REACTIVATE" THEN
  423.         GOTO GRPNAME
  424.     ELSE
  425.         GOSUB ASKQUIT
  426.         GOTO GRPNAME
  427.     END IF
  428.  
  429. GETNAMEORG:
  430.     ''ng% = DoMsgBox("GETNAMEORG", "Debug Message", MB_OK)
  431.     
  432.     SetSymbolValue "NameOut", NAMEOUT$
  433.     SetSymbolValue "OrgOut", ORGOUT$
  434.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  435.     NAMEOUT$ = GetSymbolValue("NameOut")
  436.     ORGOUT$ = GetSymbolValue("OrgOut")
  437.  
  438.     IF sz$ = "CONTINUE" THEN
  439.         UIPop 1
  440.     GOTO VBPATH
  441.     ELSEIF sz$ = "BACK" THEN
  442.         UIPop 1
  443.         GOTO GRPNAME
  444.     ELSEIF sz$ = "REACTIVATE" THEN
  445.         GOTO GETNAMEORG
  446.     ELSEIF sz$ = "EXIT" THEN
  447.      GOSUB ASKQUIT
  448.      GOTO GETNAMEORG
  449.     ELSE
  450.      GOSUB ASKQUIT
  451.      GOTO GETNAMEORG
  452.     END IF
  453.  
  454. VBPATH:
  455.     ''ng% = DoMsgBox("VBPATH", "Debug Message", MB_OK)
  456.     
  457.     SetSymbolValue "VBPath", VBDIR$
  458.     sz$ = UIStartDlg(CUIDLL$, VBPATHDLG, "VBPathDlgProc", APPHELP, HELPPROC$)
  459.  
  460.     IF sz$ = "CONTINUE" THEN
  461.         VBDIR$ = GetSymbolValue("VBPath")
  462.         UIPop 1
  463.         GOTO VBCVCTLVBX
  464.     ELSEIF sz$ = "BACK" THEN
  465.         UIPop 1
  466.         GOTO GETNAMEORG
  467.     ELSEIF sz$ = "EXIT" THEN
  468.         GOSUB ASKQUIT
  469.         GOTO VBPATH
  470.     ELSEIF sz$ = "REACTIVATE" THEN
  471.         GOTO VBPATH
  472.     ELSE
  473.      GOSUB ASKQUIT
  474.      GOTO VBPATH
  475.     END IF
  476.  
  477.  
  478. VBCVCTLVBX:
  479.     ''ng% = DoMsgBox("VBCVCTLVBX", "Debug Message", MB_OK)
  480.  
  481.     SetSymbolValue "ChoreoVBX", VBCVCTLADDSTATE$
  482.     sz$ = UIStartDlg(CUIDLL$,VBCVCTLVBXDLG,"CVCtlAddDlgProc",APPHELP,HELPPROC$)
  483.     VBCVCTLADDSTATE$ = GetSymbolValue("ChoreoVBX")
  484.     IF sz$ = "CONTINUE" THEN
  485.            UIPop 1
  486.     GOTO INFOCONFIRM
  487.     ELSEIF sz$ = "BACK" THEN
  488.         UIPop 1
  489.         GOTO VBPATH
  490.     ELSEIF sz$ = "REACTIVATE" THEN
  491.         GOTO VBCVCTLVBX
  492. ''    ELSEIF sz$ = "EXIT" THEN
  493. ''     GOSUB ASKQUIT
  494. ''     GOTO VBCVCTLVBX
  495.     ELSE
  496.      GOSUB ASKQUIT
  497.      GOTO VBCVCTLVBX
  498.     END IF
  499.  
  500.  
  501. INFOCONFIRM:
  502.     ''ng% = DoMsgBox("INFOCONFIRM", "Debug Message", MB_OK)
  503.     ReplaceListItem CONFIRMINFO$, 1, DEST$
  504.  
  505.     IF GOTDBFILE$ = "NO" THEN
  506.         DBLISTOUT$ = GetSymbolValue("ListItemsOut")
  507.     END IF
  508.  
  509.     ReplaceListItem CONFIRMINFO$, 2, DBLISTOUT$
  510.     ReplaceListItem CONFIRMINFO$, 3, GRPLISTOUT$
  511.     ReplaceListItem CONFIRMINFO$, 4, NAMEOUT$
  512.     ReplaceListItem CONFIRMINFO$, 5, ORGOUT$
  513.     ReplaceListItem CONFIRMINFO$, 6, VBDIR$
  514.  
  515.     IF GetListItem(CHECKSTATES$, EXAMPLEFILES) = "ON" THEN
  516.         ReplaceListItem CONFIRMINFO$, 7, INSTALLYES$
  517.     ELSE
  518.         ReplaceListItem CONFIRMINFO$, 7, INSTALLNO$
  519.     END IF
  520.     
  521.     IF GetListItem(CHECKSTATES$, TUTORFILES) = "ON" THEN
  522.         ReplaceListItem CONFIRMINFO$, 8, INSTALLYES$
  523.     ELSE
  524.         ReplaceListItem CONFIRMINFO$, 8, INSTALLNO$
  525.     END IF
  526.  
  527.     IF GetListItem(CHECKSTATES$, GUPTADBFILES) = "ON" THEN
  528.         ReplaceListItem CONFIRMINFO$, 9, INSTALLYES$
  529.     ELSE
  530.         ReplaceListItem CONFIRMINFO$, 9, INSTALLNO$
  531.     END IF
  532.  
  533.     IF GetListItem(CHECKSTATES$, GUPTADOCFILES) = "ON" THEN
  534.         ReplaceListItem CONFIRMINFO$, 10, INSTALLYES$
  535.     ELSE
  536.         ReplaceListItem CONFIRMINFO$, 10, INSTALLNO$
  537.     END IF
  538.  
  539.     VBCVCTLADDSTATE$ =GetSymbolValue("ChoreoVBX")
  540.     IF VBCVCTLADDSTATE$ = "ON" THEN
  541.         ReplaceListItem CONFIRMINFO$, 11, INSTALLYES$
  542.     ELSE
  543.         ReplaceListItem CONFIRMINFO$, 11, INSTALLNO$
  544.     END IF
  545.  
  546.     sz$ = UIStartDlg(CUIDLL$, CDCONFIRMINFO, "FConfirmDlgProc", APPHELP, HELPPROC$)
  547.  
  548.     IF sz$ = "CONTINUE" THEN
  549.         UIPop 1
  550.     GOTO INSTALL1
  551.     ELSEIF sz$ = "BACK" THEN
  552.         UIPop 1
  553.         GOTO VBCVCTLVBX
  554.     ELSEIF sz$ = "REACTIVATE" THEN
  555.         GOTO INFOCONFIRM
  556.     ELSEIF sz$ = "EXIT" THEN
  557.      GOSUB ASKQUIT
  558.      GOTO INFOCONFIRM
  559.     ELSE
  560.      GOSUB ASKQUIT
  561.      GOTO INFOCONFIRM
  562.     END IF
  563.  
  564. INSTALL1:
  565.     ''ng% = DoMsgBox("INSTALL1:", "Debug Message", MB_OK)
  566.  
  567.     VBCVCTLADDSTATE$ =GetSymbolValue("ChoreoVBX")
  568.     IF VBCVCTLADDSTATE$ = "ON" THEN
  569.        '    i% = DoMsgBox(VBDIR$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  570.         i% = WriteVBXToMakFile(VBDIR$,"CVCTL.VBX")
  571.  
  572.     END IF
  573.     
  574.     CursorSave% = ShowWaitCursor()
  575.  
  576.     '' ********************************************************
  577.     '' Fill the copy List (after clearing it out first)
  578.     '' ********************************************************
  579.     ClearCopyList
  580.     AddOptFilesToCopyList CHOREOFILES
  581.     AddOptFilesToCopyList DBFILES
  582.     AddOptFilesToCopyList HELPFILES
  583. ''    AddOptFilesToCopyList EXAMPLEFILES
  584.     AddOptFilesToCopyList TUTORFILES
  585. ''    AddOptFilesToCopyList GUPTADBFILES
  586. ''    AddOptFilesToCopyList GUPTADOCFILES
  587.     '' ********************************************************
  588.  
  589.     CreateDir DEST$, cmoNone
  590.  
  591.     RestoreCursor CursorSave%
  592.  
  593.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  594.  
  595.     '' ********************** This is where the copy gets done! ***********************
  596.  
  597.     CopyFilesInCopyList
  598.  
  599.     '' ********************************************************************************
  600.  
  601.     '' ----------------------------------------------
  602.     '' Create CHOREO.INI settings
  603.     '' ----------------------------------------------
  604.     ''ng% = DoMsgBox (WINSYSDIR$, "Debug", MB_OK)
  605.     ini$ = MakePath(WINDOWSDIR$, "CHOREO.INI")
  606.     CreateIniKeyValue ini$, "Messages", "message", MakePath(DEST$, "CHOREO.MSG"), cmoOverwrite
  607.     CreateIniKeyValue ini$, "Assocs", "lib1", MakePath(DEST$, "VBASSOC.DLL"), cmoOverwrite
  608.     CreateIniKeyValue ini$, "User Info", "UserName", NAMEOUT$, cmoOverwrite
  609.     CreateIniKeyValue ini$, "User Info", "OrgName", ORGOUT$, cmoOverwrite
  610.     CreateIniKeyValue ini$, "LinkMgr",  "VBPath", VBDIR$, cmoOverwrite
  611.     
  612.     '' ----------------------------------------------------------------------
  613.     '' 1.1 Choreo section
  614.     CreateIniKeyValue ini$, "Choreo",  "Path", DEST$, cmoOverwrite
  615.     
  616.     '' kludge moved other entries to the c file!
  617.     i% = AddINIEntries
  618.     ''
  619.  
  620.     '' ----------------------------------------------------------------------
  621.     '' 1.1 additions to the LinkMgr section
  622.     
  623.     '' ----------------------------------------------------------------------
  624.     '' 1.1 Tutorial
  625.     CreateIniKeyValue ini$, "Tutorial",  "TutorPath", MakePath(DEST$, "TUTOR.EXE"), cmoOverwrite    
  626.     CreateIniKeyValue ini$, "Tutorial",  "MasterPath", MakePath(DEST$, "EXAMPLES\TMASTER"), cmoOverwrite    
  627.     CreateIniKeyValue ini$, "Tutorial",  "Directory", MakePath(DEST$, "TUTORIAL"), cmoOverwrite    
  628.     '' Demo addition!
  629.     CreateIniKeyValue ini$, "Demo",      "Directory", MakePath(DEST$, "Demo"), cmoOverwrite    
  630.  
  631.     '' ----------------------------------------------------------------------
  632.     '' DataBase driver section
  633.     IF GetListItem(CHECKSTATES$, DBFILES) = "ON" THEN
  634.         CreateIniKeyValue ini$, "Databases", "ODBC", MakePath(DEST$, "DDODBC.DLL,ODBC"), cmoOverwrite
  635.     ENDIF
  636.  
  637.  
  638.     '' ----------------------------------------------
  639.     '' Create the Reg Database group
  640.     '' ----------------------------------------------
  641.  
  642.     CreateRegKeyValue ".DLF\shell\open\command", MakePath(DEST$,"linkmgr.exe %1")
  643.     CreateRegKeyValue ".MDL\shell\open\command", MakePath(DEST$, "modelmgr.exe %1")
  644.  
  645.  
  646.     '' ----------------------------------------------
  647.     '' Create the Window Group
  648.     '' ----------------------------------------------
  649.     IF GRPLISTOUT$ = "Choreo for Visual Basic" THEN
  650.         CreateProgmanGroup GRPLISTOUT$, "", cmoOverwrite
  651.     END IF
  652.     ShowProgmanGroup  GRPLISTOUT$, 1, cmoNone
  653.  
  654.  
  655.        CreateProgmanItem GRPLISTOUT$, "Choreo Demonstration Manager",         MakePath(DEST$, "ChorDemo.exe"),"", cmoOverwrite
  656.        CreateProgmanItem GRPLISTOUT$, "Extend Evaluation",                     MakePath(DEST$, "cemu.exe"),"", cmoOverwrite
  657.  
  658.  
  659.  
  660. PATHPARAM:
  661.     SetSymbolValue "RadioDefault", AUTOEXECPATHDEFAULT$
  662.     SetSymbolValue "OptionsGreyed", AUTOEXECPATHGREYED$
  663.     sz$ = UIStartDlg(CUIDLL$, AUTOEXEC_PATH, "FRadioDlgProc", APPHELP, HELPPROC$)
  664.     IF sz$ = "CONTINUE" THEN
  665.         UIPop 1
  666.         AUTOEXECPATHCHECKED$ = GetSymbolValue("ButtonChecked")
  667.         IF AUTOEXECPATHCHECKED$ = "1" then
  668.             IF GetListItem(CHECKSTATES$, GUPTADBFILES) = "ON" THEN
  669.                 i% = UpdateAutoexec(DEST$, MakePath (DEST$, GUPTADIR$))
  670.             ELSE
  671.                 i% = UpdateAutoexec(DEST$, "")
  672.             END IF
  673.         ELSE
  674.             IF GetListItem(CHECKSTATES$, GUPTADBFILES) = "ON" THEN
  675.                 i% = CreateExampleAutoexec(DEST$, MakePath (DEST$, GUPTADIR$))
  676.             ELSE
  677.                 i% = CreateExampleAutoexec(DEST$, "")
  678.             END IF
  679.         END IF
  680.         ''GOTO QUIT
  681.         GOTO GETSERIALNUMBER
  682.     ELSEIF sz$ = "BACK" THEN
  683.         UIPop 1
  684.         GOTO INSTALL1
  685.     ELSEIF sz$ = "REACTIVATE" THEN
  686.         GOTO PATHPARAM
  687.     ELSE
  688.      GOSUB ASKQUIT
  689.      GOTO PATHPARAM
  690.     END IF
  691.  
  692.  
  693. GETSERIALNUMBER:
  694.     GOTO QUIT    ' we don't ask, they don't have one for the trial!
  695.     sz$ = UIStartDlg(CUIDLL$, CDGETSERIALNUMBER, "FSerialNumberProc", APPHELP, HELPPROC$)
  696.  
  697.     IF sz$ = "CONTINUE" THEN
  698.         UIPop 1
  699.     GOTO QUIT
  700.     ELSEIF sz$ = "REACTIVATE" THEN
  701.         GOTO GETSERIALNUMBER
  702.     ELSEIF sz$ = "BACK" THEN
  703.      GOSUB SERIALNUMBERERROR
  704.      GOTO GETSERIALNUMBER
  705.     END IF
  706.  
  707. SERIALNUMBERERROR:
  708.     sz$ = UIStartDlg(CUIDLL$, CDSERIAL_ERROR, "FInfoDlgProc", 0, "")
  709.  
  710.     IF sz$ = "EXIT" THEN
  711.         UIPopAll
  712.         GOTO QUIT
  713.     ELSEIF sz$ = "REACTIVATE" THEN
  714.         GOTO SERIALNUMBERERROR
  715.     ELSE
  716.         UIPop 1
  717.     END IF
  718.     RETURN
  719.  
  720. QUIT:
  721.     ON ERROR GOTO ERRQUIT
  722.     IF ERR = 0 THEN
  723.         dlg% = EXITSUCCESS
  724.     ELSEIF ERR = STFQUIT THEN
  725.         dlg% = EXITQUIT
  726.     ELSE
  727.         dlg% = EXITFAILURE
  728.     END IF
  729.  
  730. QUITL1:
  731.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  732.     IF sz$ = "REACTIVATE" THEN
  733.         GOTO QUITL1
  734.     END IF
  735.     UIPop 1
  736.     END
  737.  
  738. ERRQUIT:
  739.     i% = DoMsgBox("Setup sources were corrupted, call 415-266-7007!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  740.     END
  741.  
  742.  
  743. ASKQUIT:
  744.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  745.  
  746.     IF sz$ = "EXIT" THEN
  747.         UIPopAll
  748.         ERROR STFQUIT
  749.     ELSEIF sz$ = "REACTIVATE" THEN
  750.         GOTO ASKQUIT
  751.     ELSE
  752.         UIPop 1
  753.     END IF
  754.     RETURN
  755.  
  756.  
  757. TOOBIG:
  758.     sz$ = UIStartDlg(CUIDLL$, CDTOOBIG, "FInfo0DlgProc", 0, "")
  759.     IF sz$ = "REACTIVATE" THEN
  760.         RecalcPath
  761.         SetDriveStatus
  762.         GOTO TOOBIG
  763.     END IF
  764.     UIPop 1
  765.     RETURN
  766.  
  767. BADPATH:
  768.     sz$ = UIStartDlg(CUIDLL$, CDBADPATH, "FInfo0DlgProc", 0, "")
  769.     IF sz$ = "REACTIVATE" THEN
  770.         RecalcPath
  771.         SetDriveStatus
  772.         GOTO BADPATH
  773.     END IF
  774.     UIPop 1
  775.     RETURN
  776.  
  777. '**
  778. '** Purpose:
  779. '**     Adds the specified option files to the copy list.
  780. '** Arguments:
  781. '**     ftype%  - type of files to add, one of the following:
  782. '**             CHOREOFILES, DBFILES, HELPFILES, EXAMPLEFILES
  783. '**                TUTORFILES, GUPTADBFILES, GUPTADOCFILES
  784. '** Returns:
  785. '**     none.
  786. '*************************************************************************
  787. SUB AddOptFilesToCopyList (ftype%) STATIC
  788.  
  789.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  790.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  791.         
  792.         '' ---- Choreo
  793.         IF ftype% = CHOREOFILES THEN
  794.             AddSectionFilesToCopyList "CHOREOFILES", SrcDir$, DEST$
  795.             AddSectionFilesToCopyList "VB_FILES",SrcDir$,VBDIR$
  796.             AddSectionFilesToCopyList "WIN_SYS", SrcDir$, WINSYSDIR$
  797.         
  798.         '' ---- Database drivers
  799.         ELSEIF ftype% = DBFILES THEN
  800.             FOR i% = 1 TO GetListLength("ListItemsOut") STEP 1
  801.                 IF GetListItem("ListItemsOut", i%) = "Gupta SQLBase" THEN
  802.                     AddSectionKeyFileToCopyList "DBFILES", "SQLBASE", SrcDir$, DEST$
  803.                 
  804.                 '' MS SqlSvr 4.x uses the Sybase driver
  805.                 ELSEIF GetListItem("ListItemsOut", i%) = "Microsoft SQL Server 4.x" THEN
  806.                     AddSectionKeyFileToCopyList "DBFILES", "SYBASE", SrcDir$, DEST$
  807.                 ELSEIF GetListItem("ListItemsOut", i%) = "Microsoft SQL Server 6" THEN
  808.                     AddSectionKeyFileToCopyList "DBFILES", "SQLSRVR6", SrcDir$, DEST$
  809.  
  810.                 ELSEIF GetListItem("ListItemsOut", i%) = "ODBC" THEN
  811.                     AddSectionKeyFileToCopyList "DBFILES", "ODBC", SrcDir$, DEST$
  812.  
  813.                 '' these use the same driver:
  814.                 ELSEIF GetListItem("ListItemsOut", i%) = "Oracle6" THEN
  815.                     AddSectionKeyFileToCopyList "DBFILES", "ORACLE", SrcDir$, DEST$
  816.                 ELSEIF GetListItem("ListItemsOut", i%) = "Oracle7" THEN
  817.                     AddSectionKeyFileToCopyList "DBFILES", "ORACLE", SrcDir$, DEST$
  818.                 
  819.                 ELSEIF GetListItem("ListItemsOut", i%) = "Sybase SQL Server 4.x" THEN
  820.                     AddSectionKeyFileToCopyList "DBFILES", "SYBASE", SrcDir$, DEST$
  821.                 ELSEIF GetListItem("ListItemsOut", i%) = "Sybase System 10" THEN
  822.                     AddSectionKeyFileToCopyList "DBFILES", "SYBASE10", SrcDir$, DEST$
  823.                     
  824.                 END IF
  825.             NEXT i%
  826.         '' ---- Help files
  827.         ELSEIF ftype% = HELPFILES THEN
  828.             AddSectionFilesToCopyList "HELPFILES", SrcDir$, DEST$
  829.             
  830.         '' ---- Example files
  831.         ELSEIF ftype% = EXAMPLEFILES THEN
  832.             dirExample$ = MakePath(DEST$,EXAMPLEDIR$)
  833.             '' ---- Books
  834.             AddSectionFilesToCopyList "EXAMPLE_BOOKS", SrcDir$, MakePath(dirExample$, "Books")
  835.  
  836.             '' ---- DBS
  837.             AddSectionFilesToCopyList "EXAMPLE_DBS", SrcDir$, MakePath(dirExample$, DBSDIR$)
  838. ''            AddSectionFilesToCopyList "EXAMPLE_DBS_X", SrcDir$, MakePath(dirExample$, DBSDIR$)
  839.             bInstallDBSforTutorial = 0
  840.  
  841.             '' ---- Access 
  842.             AddSectionFilesToCopyList "EXAMPLES_ACCESS", SrcDir$, MakePath(dirExample$, "Access")
  843.                
  844.             '' ---- SQL
  845.                AddSectionFilesToCopyList "EXAMPLE_SQL", SrcDir$, MakePath(dirExample$, "sql")
  846.  
  847.             '' ---- Bound Control
  848.                AddSectionFilesToCopyList "EXAMPLE_BNDCTRL", SrcDir$, makePath(dirExample$, BNDCTLDIR$)
  849.                AddSectionFilesToCopyList "EXAMPLE_BNDCTRL_FP", SrcDir$, makePath(dirExample$, MakePath(BNDCTLDIR$, "fp_grid"))
  850.                AddSectionFilesToCopyList "EXAMPLE_BNDCTRL_LS", SrcDir$, MakePath(dirExample$, MakePath(BNDCTLDIR$, "fp_list"))
  851.                AddSectionFilesToCopyList "EXAMPLE_BNDCTRL_SS", SrcDir$, MakePath(dirExample$, MakePath(BNDCTLDIR$, "ss_grid"))
  852.                AddSectionFilesToCopyList "EXAMPLE_BNDCTRL_TG", SrcDir$, MakePath(dirExample$, MakePath(BNDCTLDIR$, "truegrid"))
  853.  
  854.             '' ---- Direct SQL
  855.                AddSectionFilesToCopyList "EXAMPLE_DIRSQL", SrcDir$,   makePath (dirExample$, DIRSQLSUBDIR$)
  856.                AddSectionFilesToCopyList "EXAMPLE_DIRSQL_AD", SrcDir$, makePath (dirExample$, makePath (DIRSQLSUBDIR$, "Adhoc"))
  857.                AddSectionFilesToCopyList "EXAMPLE_DIRSQL_LT", SrcDir$, makePath (dirExample$, makePath (DIRSQLSUBDIR$, "sqllite"))
  858.                AddSectionFilesToCopyList "EXAMPLE_DIRSQL_TS", SrcDir$, makePath (dirExample$, makePath (DIRSQLSUBDIR$, "sqltest"))
  859.                AddSectionFilesToCopyList "EXAMPLE_DIRSQL_SSP", SrcDir$, makePath (dirExample$, makePath (DIRSQLSUBDIR$, "ssp"))
  860.                AddSectionFilesToCopyList "EXAMPLE_DIRSQL_2Q", SrcDir$, makePath (dirExample$, makePath (DIRSQLSUBDIR$, "sybsp2q"))
  861.  
  862.             '' ---- Stored Proceedures
  863.  
  864.         '' ---- Tutorial Files
  865.         ELSEIF ftype% = TUTORFILES THEN
  866.             dirExample$ = MakePath(DEST$,EXAMPLEDIR$)
  867.             dirTutor$ = MakePath(dirExample$, "tmaster")
  868.             dirDemo$ = MakePath(DEST$, "Demo")
  869.             
  870.             '' ---- Add the tutorial files
  871. ''            AddSectionFilesToCopyList "TUTORIAL_2", SrcDir$, makepath (dirTutor$, "lesson2")
  872. ''            AddSectionFilesToCopyList "TUTORIAL_3", SrcDir$, makepath (dirTutor$, "lesson3")
  873. ''            AddSectionFilesToCopyList "TUTORIAL_4", SrcDir$, makepath (dirTutor$, "lesson4")
  874. ''            AddSectionFilesToCopyList "TUTORIAL_5", SrcDir$, makepath (dirTutor$, "lesson5")
  875. ''            '' ---- And the tutor!
  876. ''            AddSectionFilesToCopyList "TUTORIALFILES", SrcDir$, DEST$
  877. ''            '' ---- ensure the DBS is installed as well!
  878. ''          IF bInstallDBSforTutorial = 1 THEN
  879. ''             AddSectionFilesToCopyList "EXAMPLE_DBS", SrcDir$, MakePath(dirExample$, DBSDIR$)
  880. ''             ENDIF
  881.  
  882.             '' ---- Add the DEMO tutorial files
  883.             AddSectionFilesToCopyList "TUTORIAL_2", SrcDir$, makepath (dirDemo$, "initial")
  884.             AddSectionFilesToCopyList "TUTORIAL_3", SrcDir$, makepath (dirDemo$, "complete")
  885.             '' ---- And the tutor!
  886.             AddSectionFilesToCopyList "TUTORIALFILES", SrcDir$, DEST$
  887.             '' ---- Access 
  888.             AddSectionFilesToCopyList "ACCESS", SrcDir$, MakePath(dirDemo$, "Access")
  889.             
  890.  
  891.         '' ---- Gupta
  892.         ELSEIF ftype% = GUPTADBFILES THEN
  893.             AddSectionFilesToCopyList "GUPTA_SQLBASE", SrcDir$, MakePath(DEST$, GUPTADIR$)
  894.             AddSectionFilesToCopyList "GUPTA_WININI", SrcDir$, MakePath(DEST$, GUPTADIR$)
  895.             AddSectionFilesToCopyList "GUPTA_DBS", SrcDir$, MakePath(DEST$, makepath (GUPTADIR$, DBSDIR$))
  896.             ''AddSectionFilesToCopyList "GUPTA_DBS_BOOKS", SrcDir$, MakePath(DEST$, makePath (GUPTADIR$, MakePath (DBSDIR$, "Books")))
  897.             AddSectionFilesToCopyList "EXAMPLE_DBS",   SrcDir$, MakePath(DEST$, makePath (GUPTADIR$, MakePath (DBSDIR$, "Books")))
  898. ''            AddSectionFilesToCopyList "EXAMPLE_DBS_X", SrcDir$, MakePath(DEST$, makePath (GUPTADIR$, MakePath (DBSDIR$, "Books")))
  899.             AddSectionFilesToCopyList "GUPTA_WINTALK", SrcDir$, MakePath(DEST$, GUPTADIR$)    '' needds to be in the same directory as the DLL's!
  900.            
  901.         ELSEIF ftype% = GUPTADOCFILES THEN
  902.             AddSectionFilesToCopyList "GUPTA_DOC", SrcDir$, MakePath(DEST$, Makepath(GUPTADIR$, DOCSUBDIR$))
  903.  
  904.         END IF
  905.         SrcDir$ = ""
  906.     END IF
  907. END SUB
  908.  
  909.  
  910. '**
  911. '** Purpose:
  912. '**     Recalculates disk space for the given option files and sets
  913. '**     the status info symbol "StatusItemsText".
  914. '** Arguments:
  915. '**     ftype% - type of files to add, one of the following:
  916. '**             CHOREOFILES, DBFILES, HELPFILES, EXAMPLEFILES
  917. '** Returns:
  918. '**     none.
  919. '*************************************************************************
  920. SUB RecalcOptFiles (ftype%) STATIC
  921.     CursorSave% = ShowWaitCursor()
  922.     ClearCopyList
  923.  
  924.     AddOptFilesToCopyList ftype%
  925.  
  926.     DESTDRIVE$ = MID$(DEST$, 1, 1)
  927.     fExtra% = 0
  928.     IF ftype% = CHOREOFILES THEN
  929.         ListSym$ = CHOREONEEDS$
  930.         IF GetListItem(CHECKSTATES$, CHOREOFILES) = "ON" THEN
  931.             ''Add extra cost to Windows drive for ini/progman, etc.
  932.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  933.             ReplaceListItem EXTRACOSTS$, ndrive%, "8192"    
  934.             fExtra% = 1
  935.         END IF
  936.     ELSEIF ftype% = DBFILES THEN
  937.         ListSym$ = DBNEEDS$
  938.  
  939.     ELSEIF ftype% = HELPFILES THEN
  940.         ListSym$ = HELPNEEDS$
  941.  
  942. ''    ELSEIF ftype% = EXAMPLEFILES THEN
  943. ''        ListSym$ = EXAMPLENEEDS$
  944.  
  945.     ELSEIF ftype% = TUTORFILES THEN
  946.         ListSym$ = TUTORNEEDS$
  947.  
  948. ''    ELSEIF ftype% = GUPTADBFILES THEN
  949. ''        ListSym$ = GUPTADBNEEDS$
  950.         '' NOTE: Gupta SQL.INI file now stored in the Gupta directory inside Choreo
  951.         
  952. ''    ELSEIF ftype% = GUPTADOCFILES THEN
  953. ''        ListSym$ = GUPTADOCNEEDS$
  954.  
  955.     END IF
  956.  
  957.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  958. ''    StillNeed& = GetCopyListCost("", ListSym$, "")
  959.  
  960.     cost& = 0
  961.     FOR i% = 1 TO 26 STEP 1
  962.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  963.     NEXT i%
  964.     
  965.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  966.  
  967. ''    IF StillNeed& > 0 THEN
  968. ''        ReplaceListItem BIGLIST$, ftype%, "YES"
  969. ''    ELSE
  970. ''        ReplaceListItem BIGLIST$, ftype%, ""
  971. ''    END IF
  972.  
  973.     IF fExtra% THEN
  974.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  975.     END IF
  976.     RestoreCursor CursorSave%
  977.     ListSym$ = ""
  978. END SUB
  979.  
  980.  
  981. '**
  982. '** Purpose:
  983. '**     Recalculates disk space and sets option status info according
  984. '**     to the current destination path.
  985. '** Arguments:
  986. '**     none.
  987. '** Returns:
  988. '**     none.
  989. '*************************************************************************
  990. SUB RecalcPath STATIC
  991.     CursorSave% = ShowWaitCursor()
  992.  
  993.     RecalcOptFiles CHOREOFILES        
  994.     RecalcOptFiles DBFILES            
  995.     RecalcOptFiles HELPFILES        
  996. ''    RecalcOptFiles EXAMPLEFILES        
  997. ''    RecalcOptFiles TUTORFILES
  998. ''    RecalcOptFiles GUPTADBFILES
  999. ''    RecalcOptFiles GUPTADOCFILES
  1000.  
  1001.     RestoreCursor CursorSave%
  1002. END SUB
  1003.  
  1004.  
  1005. '**
  1006. '** Purpose:
  1007. '**     Sets drive status info according to latest disk space calcs.
  1008. '** Arguments:
  1009. '**     none.
  1010. '** Returns:
  1011. '**     none.
  1012. '*************************************************************************
  1013. SUB SetDriveStatus STATIC
  1014.  
  1015.     drive$ = MID$(DEST$, 1, 1)
  1016.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  1017.     cost&  = 0
  1018.     cost& = VAL(GetListItem(CHOREONEEDS$, ndrive%)) + VAL(GetListItem(DBNEEDS$, ndrive%)) + VAL(GetListItem(HELPNEEDS$, ndrive%))   '' + VAL(GetListItem(TUTORNEEDS$, ndrive%)) 
  1019.     free& = GetFreeSpaceForDrive(drive$)
  1020.     
  1021.     IF cost& > free& THEN
  1022.         NOT_ENOUGH_SPACE = 1
  1023.     ELSE
  1024.         NOT_ENOUGH_SPACE = 0
  1025.     END IF
  1026.     
  1027.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  1028.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  1029.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  1030.  
  1031.     IF drive$ = WINDRIVE$ THEN
  1032.         ReplaceListItem DRIVETEXT$, 4, ""
  1033.         ReplaceListItem DRIVETEXT$, 5, ""
  1034.         ReplaceListItem DRIVETEXT$, 6, ""
  1035.     ELSE
  1036.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  1037.         cost& = VAL(GetListItem(CHOREONEEDS$, ndrive%)) + VAL(GetListItem(DBNEEDS$, ndrive%)) + VAL(GetListItem(HELPNEEDS$, ndrive%))    '' + VAL(GetListItem(TUTORNEEDS$, ndrive%)) 
  1038.         IF cost& = 0 THEN
  1039.             ReplaceListItem DRIVETEXT$, 4, ""
  1040.             ReplaceListItem DRIVETEXT$, 5, ""
  1041.             ReplaceListItem DRIVETEXT$, 6, ""
  1042.         ELSE
  1043.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  1044.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  1045.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  1046.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  1047.             IF cost& > free& THEN
  1048.                 NOT_ENOUGH_SPACE = NOT_ENOUGH_SPACE + 1
  1049.             END IF        
  1050.         END IF
  1051.     END IF
  1052. END SUB
  1053.  
  1054.  
  1055. '**
  1056. '** Purpose:
  1057. '**     Appends a file name to the end of a directory path,
  1058. '**     inserting a backslash character as needed.
  1059. '** Arguments:
  1060. '**     szDir$  - full directory path (with optional ending "\")
  1061. '**     szFile$ - filename to append to directory
  1062. '** Returns:
  1063. '**     Resulting fully qualified path name.
  1064. '*************************************************************************
  1065. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  1066.     IF szDir$ = "" THEN
  1067.         MakePath = szFile$
  1068.     ELSEIF szFile$ = "" THEN
  1069.         MakePath = szDir$
  1070.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  1071.         MakePath = szDir$ + szFile$
  1072.     ELSE
  1073.         MakePath = szDir$ + "\" + szFile$
  1074.     END IF
  1075. END FUNCTION
  1076.