home *** CD-ROM | disk | FTP | other *** search
/ NetComm Communications 5 / NetComm.iso / resource / netcomm / wcomm / disk1 / wcsetup.ms_ / wcsetup.bin
Encoding:
Text File  |  1994-10-24  |  48.9 KB  |  1,644 lines

  1.  
  2.  
  3.  
  4. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  5. '' WinComm PRO Setup Script for Microsoft Setup Toolkit for Windows.
  6. ''
  7. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  8.  
  9. '' '$DEFINE DEBUG
  10.  
  11. '$INCLUDE 'setupapi.inc'
  12. '$INCLUDE 'msdetect.inc'
  13. '$INCLUDE 'msregdb.inc'
  14. '$INCLUDE 'msshared.inc'
  15.  
  16. DECLARE FUNCTION LaunchWait LIB "mscuistf.dll" (szCmd$, szOpt$) AS INTEGER
  17. DECLARE SUB MaxWindow LIB "mscuistf.dll" (hMainWind%)
  18. DECLARE SUB InitCTL3D LIB "mscuistf.dll" (hInst%)
  19. DECLARE SUB EndCTL3D  LIB "mscuistf.dll" (hInst%)
  20. DECLARE FUNCTION GetxDialogBaseUnits LIB "mscuistf.dll" AS INTEGER 
  21.  
  22. ''Dialog ID's
  23. CONST DESTPATH          = 300
  24. CONST DESTPATHHELP      = 400
  25. CONST EXITFAILURE       = 700
  26. CONST EXITQUIT          = 600
  27. CONST EXITSUCCESS       = 800
  28. CONST ENDINSTALL        = 900
  29. CONST OPTIONALLIST      = 1500
  30. CONST OPTIONALLISTHELP  = 1600
  31. CONST REINSTALLIST      = 1700
  32. CONST OVERWRITEMSGFOLDER = 111
  33.  
  34.  
  35. CONST USERINFO_D        = 4000      
  36. CONST USERINFO          = 1900
  37.  
  38. CONST TOOBIG            = 2200
  39. CONST BADPATH           = 2300
  40. CONST ASKQUIT           = 2400
  41. CONST HAALREADYFOUND    = 2700
  42. CONST HAALREADYFOUNDHELP= 101
  43. CONST ASKOVERWRITESESS  = 102
  44. CONST SPLASHSCREEN      = 103
  45. CONST FORCEEXIT         = 2900
  46. CONST REBOOT            = 3000
  47. CONST REINSTALLISTHELP  = 3200
  48. CONST BILLBOARD1        = 3800
  49. CONST BILLBOARD2        = 3900
  50. CONST BILLBOARD3        = 4100
  51. CONST BILLBOARD4        = 4101
  52. CONST BILLBOARD5        = 4102
  53. CONST DEMODISKREADONLY  = 4300
  54. CONST FULLCUST          = 120
  55. CONST PANEL1            = 8001
  56. CONST PANEL2            = 8002
  57. CONST PANEL3            = 8003
  58. CONST PANEL4            = 8004
  59. CONST PANEL5            = 8005
  60. CONST PANEL6            = 8006
  61. CONST PANEL7            = 8007
  62. CONST PANEL8            = 8008
  63.  
  64. '' Constants
  65.  
  66. CONST EXES          = 1
  67. CONST SSFILES       = 2
  68. CONST HMFILES       = 3
  69. CONST CONVERTS      = 4
  70. CONST SCRSAMPLES    = 5
  71. CONST CAMEL            = 6
  72. CONST APPFILES      = 7
  73.  
  74. CONST NONE          = -1
  75. CONST YES           = 1
  76. CONST NO            = 0
  77.  
  78. ''  Global variables
  79.  
  80. GLOBAL CUIDLL$          
  81. GLOBAL SUITEINSTALL%    
  82. GLOBAL REINSTALL%       
  83. GLOBAL ASKEDREINST%     
  84. GLOBAL ENOUGH%          
  85. GLOBAL pass%
  86. GLOBAL TotalSpace&
  87. GLOBAL SESSIONFILES$    
  88. GLOBAL SCRIPTSAMPLES$   
  89. GLOBAL HOSTMODEFILES$   
  90. GLOBAL EXECUTABLES$     
  91. GLOBAL CONVERSIONS$     
  92.  
  93. GLOBAL CHECKSTATES$     
  94. GLOBAL STATUSITEMS$     
  95. GLOBAL DRIVETEXT$
  96. GLOBAL SPACESTEXT$       
  97. GLOBAL VON$
  98. GLOBAL VOFF$
  99.  
  100. GLOBAL APPNEEDS$        
  101. GLOBAL EXENEEDS$        
  102. GLOBAL SESSNEEDS$
  103. GLOBAL SCRNEEDS$
  104. GLOBAL HMODENEEDS$
  105. GLOBAL CONVNEEDS$
  106. GLOBAL DLLNEEDS$
  107. GLOBAL CAMELNEEDS$
  108.  
  109. GLOBAL DEST$            
  110. GLOBAL skip%
  111. GLOBAL DIMTEXT$
  112. GLOBAL DIMDIR$
  113. GLOBAL FILEN$
  114. GLOBAL INI$
  115. GLOBAL WINCOMMINI$             
  116. GLOBAL WCSECTION$
  117. GLOBAL IMSECTION$
  118. GLOBAL SPACESINI$
  119. GLOBAL WINFAXSPACES$
  120. GLOBAL WINCOMMSPACES$       
  121. GLOBAL VERSION$                 
  122. GLOBAL CONTXTINI$
  123. GLOBAL ICONGROUPINI$
  124. GLOBAL stars$            
  125. GLOBAL Install_Pass$
  126. GLOBAL bOverwrite$
  127. GLOBAL bFrominstall% 
  128. GLOBAL bKeepMsgFolder$
  129. CONST LOGO = 1
  130.  
  131.  
  132.  
  133. DECLARE SUB Install
  134. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  135. DECLARE FUNCTION MakeBytes(size&) AS STRING
  136. DECLARE SUB RecalcOptFiles (ftype%, size&)
  137. DECLARE SUB SetDriveStatus
  138. DECLARE SUB RecalcSpaceNeeded
  139. DECLARE SUB AddOptFilesToCopyList (ftype%)
  140. DECLARE SUB GetWinDriveFreeCost
  141. DECLARE SUB AddNeededToCopyList
  142. DECLARE SUB ReadContext
  143. DECLARE SUB SaveContext
  144. DECLARE SUB SaveList (list$, items%) 
  145. DECLARE SUB ReadList (list$, items%)
  146. DECLARE SUB DefaultContext
  147. DECLARE SUB ReadAllDrvSpaces (list$)
  148. DECLARE FUNCTION GetDrvUsage (ddrv%) AS LONG
  149. DECLARE SUB WriteDrvSpaces (ddrv%, dspaces&)
  150. DECLARE FUNCTION CalcOptCost& (ftype%)
  151. DECLARE SUB SetGaugePosition
  152.  
  153.     CUIDLL$   = "mscuistf.dll"              
  154.     HELPPROC$ = "FHelpDlgProc"              
  155.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  156.  
  157.     SESSIONFILES$   = "Session Files"       
  158.     SCRIPTSAMPLES$  = "Automation Examples"
  159.     HOSTMODEFILES$  = "Host Mode Files"
  160.     EXECUTABLES$    = "WC Executables"
  161.     CONVERSIONS$    = "Convert Programs"
  162.  
  163.     CHECKSTATES$    = "CheckItemsState"     
  164.     STATUSITEMS$    = "StatusItemsText"     
  165.     DRIVETEXT$      = "DriveStatusText"
  166.     SPACESTEXT$        = "DiskSpacesText"
  167.     VON$            = "ON"
  168.     VOFF$           = "OFF"
  169.  
  170.     APPNEEDS$   = "AppNeeds"                
  171.     EXENEEDS$   = "ExeNeeds"
  172.     HMODENEEDS$ = "HModeNeeds"
  173.     SESSNEEDS$  = "SessionNeeds"
  174.     SCRNEEDS$   = "ScriptNeeds"
  175.     EXTRACOSTS$ = "ExtraCosts"
  176.     CONVNEEDS$  = "ConvertCosts"
  177.     CAMELNEEDS$ = "CamelCosts"
  178.     DLLNEEDS$   = "DLLNeeds"
  179.     DIMTEXT$        = "IM"    
  180.     WINCOMMINI$ = MakePath(GetWindowsDir(), "WINCOMM.INI")
  181.     INI$        = "WIN.INI"
  182.     WCSECTION$  = "WinComm"
  183.     IMSECTION$  = "Internet Messenger"
  184.     CONTXTINI$  = "CONTXT.INI"
  185.     ICONGROUPINI$ = "ICONSGRP.INI"
  186.     SPACESINI$    = "SPACES.INI"
  187.     WINFAXSPACES$ = "WinFax_Spaces"
  188.     WINCOMMSPACES$ = "WinComm_Spaces"
  189.     bFrominstall% = 0  
  190.     VERSION$    = "1.1"
  191.     TotalSpace& = 0
  192.     Install_Pass$ = ""
  193.     
  194.     stars$      = "**************"
  195.  
  196.     FOR i% = 1 TO 26 STEP 1
  197.     AddListItem EXTRACOSTS$, "0"
  198.     NEXT i%
  199.     
  200.     FOR i% = EXES TO APPFILES STEP 1
  201.     AddListItem CHECKSTATES$, VOFF$
  202.     NEXT i%
  203.     
  204.     ReplaceListItem CHECKSTATES$, APPFILES, VON$
  205.     
  206.     FOR i% = EXES TO APPFILES STEP 1
  207.     AddListItem STATUSITEMS$, ""
  208.     NEXT i%
  209.  
  210.     
  211.     FOR i% = 1 TO 7 STEP 1
  212.     AddListItem DRIVETEXT$, ""
  213.     NEXT i%
  214.     
  215.     FOR i% = 1 TO 26 STEP 1
  216.     AddListItem SPACESTEXT$, "0"
  217.     NEXT i%
  218.  
  219.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  220.     IF szInf$ = "" THEN
  221.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  222.     END IF
  223.     ReadInfFile szInf$
  224.  
  225.     SetBitmap CUIDLL$, LOGO
  226.     SetTitle "Delrina WinComm PRO Setup"
  227.     SetAbout "Delrina WinComm PRO Setup", "Copyright(C) 1993 Delrina Technology Inc."
  228.  
  229.     i% = SetCopyMode(1)
  230.  
  231.     InitCTL3D HinstFrame()
  232.  
  233.  
  234.  
  235. STARTSETUP:
  236.     SUITEINSTALL% = 0
  237.     ASKEDREINST% = 0
  238.     tmp$ = GetIniKeyString (INI$, "CommSuite-Inst", "CommSuite")
  239.     IF tmp$ = "Yes" THEN
  240.         SUITEINSTALL% = 1
  241.         ReadAllDrvSpaces SPACESTEXT$
  242.         iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  243.         RemoveIniSection iniFile$, WINCOMMSPACES$, cmoNone
  244.         Install_Pass$ = GetIniKeyString(INI$, "CommSuite-Inst", "Install_Pass")
  245.         IF Install_Pass$ = "2" THEN
  246.             OpenLogFile MakePath (GetWindowsDir (), "WinComm.LOG"), 1
  247.             ReadContext            
  248.             GOTO INST
  249.         END IF        
  250.     END IF
  251.  
  252.     
  253.     OpenLogFile MakePath (GetWindowsDir (), "WinComm.LOG"), 0
  254.     WriteToLogFile stars$+" INITIALIZATION "+stars$
  255.     
  256.     IF SUITEINSTALL% = 1 THEN
  257.         WriteToLogFile "**Suite Install**"
  258.     END IF
  259.             
  260.     IF SUITEINSTALL% = 0 THEN
  261.         MaxWindow HwndFrame ()
  262.         sz$ = UIStartDlg(CUIDLL$, SPLASHSCREEN, "FInfoDlgProc", 0, "")
  263.         IF sz$ = "REACTIVATE" THEN
  264.         GOTO STARTSETUP
  265.         ELSEIF sz$ = "EXIT" THEN
  266.         UIPop 1
  267.         ERROR STFQUIT
  268.         END IF
  269.         UIPop 1
  270.     END IF
  271.     
  272.     
  273.     tmp$ = ""
  274.        DEST$ = ""
  275.     REINSTALL% = 0
  276.     GOSUB CHECKFOROLD
  277.     
  278.     
  279.     IF REINSTALL% = 1 THEN
  280.     WriteToLogFile "** Previous WinComm Properties **"
  281.     tmp$ = GetIniKeyString (INI$, WCSECTION$, "MODEMNAME")
  282.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  283.     '' If not in win.ini then will be in wincomm.ini
  284.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  285.     IF tmp$ = "" THEN
  286.         iniFile$ = WINCOMMINI$      
  287.         tmp$ = GetIniKeyString (iniFile$, WCSECTION$, "MODEMNAME")        
  288.     END IF
  289.     WriteToLogFile "Modem Type: "+tmp$
  290.     tmp$ = GetIniKeyString (iniFile$, WCSECTION$, "PORTNAME")
  291.     WriteToLogFile "Port: "+tmp$
  292.     tmp$ = GetIniKeyString (iniFile$, WCSECTION$, "PORTTYPE")
  293.     WriteToLogFile "Port Type: "+tmp$
  294.     tmp$ = GetIniKeyString (iniFile$, WCSECTION$, "PULSE")
  295.     WriteToLogFile "Pulse: "+tmp$
  296.     tmp$ = GetIniKeyString (iniFile$, WCSECTION$, "DIALPREFIX")
  297.     WriteToLogFile "Dial Prefix: "+tmp$
  298.     tmp$ = GetIniKeyString (iniFile$, WCSECTION$, "DOWNLOADDIR")
  299.     WriteToLogFile "Download Directory: "+tmp$
  300.     tmp$ = GetIniKeyString (iniFile$, WCSECTION$, "UPLOADDIR")
  301.     WriteToLogFile "Upload Directory: "+tmp$
  302.     END IF                                 
  303.  
  304.  
  305.  
  306. INSTALLTYPE:
  307.     IF Install_Pass$ = "3" THEN
  308.         sz$ = "FULL"
  309.     ELSEIF Install_Pass$ = "5" THEN
  310.         sz$ = "FULL"
  311.     ELSE
  312.         sz$ = UIStartDlg(CUIDLL$, FULLCUST, "FFullCustDlgProc", 0, "")
  313.     END IF
  314.     IF sz$ = "FULL" THEN
  315.     WriteToLogFile "FULL Install Selected"
  316.  
  317.     IF SUITEINSTALL% = 1 THEN
  318.            CreateIniKeyValue INI$, "CommSuite-Inst", "OPTION", "COMPLETE", cmoOverwrite
  319.     END IF
  320.  
  321.     UIPop 1
  322.     GOTO FULLINST
  323.     ELSEIF sz$ = "MIN" THEN
  324.     WriteToLogFile "MINIMUM Install Selected"
  325.     IF SUITEINSTALL% = 1 THEN
  326.        CreateIniKeyValue INI$, "CommSuite-Inst", "OPTION", "LAPTOP", cmoOverwrite
  327.     END IF
  328.     UIPop 1
  329.     GOTO MININST
  330.     ELSEIF sz$ = "CUST" THEN
  331.     WriteToLogFile "CUSTOM Install Selected"
  332.     UIPop 1
  333.     IF SUITEINSTALL% = 1 THEN
  334.        CreateIniKeyValue INI$, "CommSuite-Inst", "OPTION", "CUSTOM", cmoOverwrite
  335.     END IF
  336.     GOTO CUSTOM
  337.     ELSEIF sz$ = "BACK" THEN
  338.     UIPop 1
  339.     GOTO STARTSETUP
  340.     ELSEIF sz$ = "REACTIVATE" THEN
  341.     GOTO INSTALLTYPE
  342.     ELSE
  343.     GOSUB ASKQUIT
  344.     GOTO INSTALLTYPE
  345.     END IF
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354. FULLINST:
  355.     GOSUB GETPATH
  356.     
  357.     ReplaceListItem CHECKSTATES$, EXES, VON$
  358.     ReplaceListItem CHECKSTATES$, SSFILES, VON$
  359.     ReplaceListItem CHECKSTATES$, HMFILES, VON$
  360.     ReplaceListItem CHECKSTATES$, CONVERTS, VON$
  361.     ReplaceListItem CHECKSTATES$, SCRSAMPLES, VON$
  362.     ReplaceListItem CHECKSTATES$, CAMEL, VON$
  363.     
  364.     '' Clean Up Old Spaces Before Updating spaces.ini
  365.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  366.     RemoveIniSection iniFile$, WINCOMMSPACES$, cmoNone
  367.     GetWinDriveFreeCost
  368.     RecalcSpaceNeeded
  369.     IF ENOUGH% = 0 THEN
  370.     GOSUB TOOBIG
  371.     GOTO CUSTOM
  372.     END IF
  373.     GOTO INST
  374.  
  375.  
  376. MININST:
  377.     GOSUB GETPATH
  378.     
  379.     ReplaceListItem CHECKSTATES$, EXES, VON$
  380.     ReplaceListItem CHECKSTATES$, SSFILES, VOFF$
  381.     ReplaceListItem CHECKSTATES$, HMFILES, VOFF$
  382.     ReplaceListItem CHECKSTATES$, CONVERTS, VOFF$
  383.     ReplaceListItem CHECKSTATES$, SCRSAMPLES, VOFF$
  384.     ReplaceListItem CHECKSTATES$, CAMEL, VOFF$
  385.     
  386.     '' Clean Up Old Spaces Before Updating spaces.ini
  387.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  388.     RemoveIniSection iniFile$, WINCOMMSPACES$, cmoNone
  389.     GetWinDriveFreeCost
  390.     RecalcSpaceNeeded
  391.     IF ENOUGH% = 0 THEN
  392.     GOSUB TOOBIG
  393.     GOTO CUSTOM
  394.     END IF
  395.     GOTO INST
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404. CUSTOM:
  405.     GOSUB GETPATH
  406.     
  407.     ReplaceListItem CHECKSTATES$, EXES, VON$
  408.     ReplaceListItem CHECKSTATES$, SSFILES, VON$
  409.     ReplaceListItem CHECKSTATES$, HMFILES, VON$
  410.     ReplaceListItem CHECKSTATES$, CONVERTS, VON$
  411.     ReplaceListItem CHECKSTATES$, SCRSAMPLES, VON$
  412.     ReplaceListItem CHECKSTATES$, CAMEL, VON$
  413.     
  414.     '' Clean Up Old Spaces Before Updating spaces.ini
  415.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  416.     RemoveIniSection iniFile$, WINCOMMSPACES$, cmoNone
  417.     GetWinDriveFreeCost
  418.     RecalcSpaceNeeded
  419.     
  420.  
  421. CUSTOMDLG:
  422.     IF REINSTALL% = 0 THEN
  423.     sz$ = UIStartDlg(CUIDLL$, OPTIONALLIST, "FCustInstDlgProc", OPTIONALLISTHELP, HELPPROC$)
  424.     ELSE
  425.     sz$ = UIStartDlg(CUIDLL$, REINSTALLIST, "FCustInstDlgProc", REINSTALLISTHELP, HELPPROC$)
  426.     END IF
  427.     IF sz$ = "CONTINUE" THEN
  428.     '' Clean Up Old Spaces Before Updating spaces.ini
  429.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  430.     RemoveIniSection iniFile$, WINCOMMSPACES$, cmoNone
  431.     RecalcSpaceNeeded
  432.     IF ENOUGH% = 0 THEN
  433.         GOSUB TOOBIG
  434.         GOTO CUSTOMDLG
  435.     END IF
  436.     AtLeastOne% = 0
  437.     FOR i%=EXES TO CAMEL STEP 1
  438.         IF GetListItem(CHECKSTATES$, i%) = VON$ THEN
  439.         AtLeastOne% = 1
  440.         END IF
  441.     NEXT i%
  442.     IF AtLeastOne% = 0 THEN
  443.         j% = DoMsgBox ("You must enter at least one option to install, or press 'Exit Setup' if you wish to leave.", "WinComm Setup Error", MB_OK)
  444.         GOTO CUSTOMDLG
  445.     END IF
  446.     UIPop 1
  447.     GOTO INSTCUST
  448.     ELSEIF sz$="CHK1" OR sz$="CHK2" OR sz$="CHK3" OR sz$="CHK4" OR sz$="CHK5" OR sz$="CHK6" THEN
  449.     option% = VAL(MID$(sz$, 4,1))
  450.     cost& = 0
  451.     IF sz$="CHK1" THEN
  452.         cost& = CalcOptCost& (APPFILES)
  453.         IF cost& < 0 THEN
  454.             cost& = 0
  455.         END IF
  456.     END IF
  457.     cost& = cost& + CalcOptCost& (option%)
  458.     IF cost& < 0 THEN
  459.         cost& = 0
  460.     END IF
  461.     IF GetListItem (CHECKSTATES$, option%) = VON$ THEN
  462.         TotalSpace& = TotalSpace& + cost&
  463.     ELSE
  464.         TotalSpace& = TotalSpace& - cost&
  465.         cost& = 0
  466.     END IF
  467.     ReplaceListItem STATUSITEMS$, option%, MakeBytes(cost&)
  468.     ReplaceListItem DRIVETEXT$, 2, MakeBytes(TotalSpace&)
  469.     GOTO CUSTOMDLG
  470.     ELSEIF sz$ = "PATH" THEN
  471.     GOSUB GETPATH
  472.     '' Clean Up Old Spaces Before Updating spaces.ini
  473.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  474.     RemoveIniSection iniFile$, WINCOMMSPACES$, cmoNone
  475.     GetWinDriveFreeCost
  476.     RecalcSpaceNeeded
  477.     GOTO CUSTOMDLG
  478.     ELSEIF sz$ = "BACK" THEN
  479.     UIPop 1
  480.     GOTO INSTALLTYPE
  481.     ELSEIF sz$ = "REACTIVATE" THEN
  482.     '' Clean Up Old Spaces Before Updating spaces.ini
  483.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  484.     RemoveIniSection iniFile$, WINCOMMSPACES$, cmoNone
  485.     RecalcSpaceNeeded
  486.     GOTO CUSTOMDLG
  487.     ELSEIF sz$ = "EXIT" THEN
  488.     GOSUB ASKQUIT
  489.     GOTO CUSTOMDLG
  490.     ELSE
  491.     GOSUB ASKQUIT
  492.     GOTO CUSTOMDLG
  493.     END IF
  494.  
  495. INSTCUST:
  496.     IF GetListItem (CHECKSTATES$, EXES) = VON$ THEN
  497.     WriteToLogFile "Executables chosen"
  498.     END IF
  499.     IF GetListItem (CHECKSTATES$, SSFILES) = VON$ THEN
  500.     WriteToLogFile "Session files chosen"
  501.     END IF
  502.     IF GetListItem (CHECKSTATES$, HMFILES) = VON$ THEN
  503.     WriteToLogFile "Host Mode files chosen"
  504.     END IF
  505.     IF GetListItem (CHECKSTATES$, CONVERTS) = VON$ THEN
  506.     WriteToLogFile "Import for WinComm chosen"
  507.     END IF
  508.     IF GetListItem (CHECKSTATES$, SCRSAMPLES) = VON$ THEN
  509.     WriteToLogFile "DCAPI Manual and Sample files chosen"
  510.     END IF
  511.     IF GetListItem (CHECKSTATES$, CAMEL) = VON$ THEN
  512.     WriteToLogFile "Internet Messenger files chosen"
  513.     END IF
  514.     
  515.  
  516.  
  517. INST:
  518.     WriteToLogFile stars$+" STARTING INSTALLATION "+stars$
  519.     
  520.    IF Install_Pass$ <> "2" THEN
  521.     bOverwrite$ = "0"
  522.     bKeepMsgFolder$ = "0"
  523.     IF GetListItem(CHECKSTATES$, CAMEL) = VON$ THEN
  524.         path$ = MakePath(DEST$, DIMTEXT$)
  525.         path$ = MakePath(path$, "$COMPIPE")
  526.         path$ = MakePath(path$, "dbnote.dbf")        
  527.         IF DoesFileExist (path$, cmoExists) THEN 
  528.         bKeepMsgFolder$ = "1"
  529. OVERWRTIEMSGFDL:
  530.             sz$ = UIStartDlg(CUIDLL$, OVERWRITEMSGFOLDER, "FInfoDlgProc", 0, "")
  531.             IF sz$ = "REACTIVATE" THEN
  532.                 GOTO OVERWRTIEMSGFDL
  533.             ELSEIF sz$ = "EXIT" THEN        
  534.                 WriteToLogFile "NOTE: Chose to Keep Existing Message Folder"
  535.                 bKeepMsgFolder$ = "0"
  536.             END IF
  537.             UIPop 1
  538.         END IF
  539.     END IF
  540.     IF GetListItem(CHECKSTATES$, SSFILES) = VON$ THEN
  541.         IF DoesFileExist (MakePath (DEST$, "default.wcs"), cmoExists) THEN
  542. OVERWRITESESSDLG:
  543.             sz$ = UIStartDlg(CUIDLL$, ASKOVERWRITESESS, "FInfoDlgProc", 0, "")
  544.             IF sz$ = "REACTIVATE" THEN
  545.                 GOTO OVERWRITESESSDLG
  546.             ELSEIF sz$ = "EXIT" THEN        
  547.                 WriteToLogFile "NOTE: Chose to Overwrite Existing Phonebook Entries"
  548.                 bOverwrite$ = "1"
  549.             END IF
  550.             UIPop 1
  551.         END IF
  552.     END IF
  553.     IF Install_Pass$ = "1" OR Install_Pass$ = "5" THEN
  554.         SaveContext
  555.         CreateIniKeyValue INI$, "CommSuite-Inst", "PassOneStatus", "1", cmoOverwrite
  556.         CreateIniKeyValue INI$, "CommSuite-Inst", "PassTwoStatus", "1", cmoOverwrite
  557.            CreateIniKeyValue INI$, "CommSuite-Inst", "DEST", DEST$, cmoOverwrite
  558.         GOTO PASSONEQUIT           
  559.     END IF
  560.  
  561.    END IF
  562.  
  563.    install
  564.  
  565. REG:
  566.     
  567.     szWinDir$  = GetWindowsDir()
  568.     szRegFile$ = MakePath(szWinDir$, "REG.DAT")
  569.     i% = IsFileWritable(szRegFile$)
  570.     IF i% = 0 THEN
  571.     goto ENDINST
  572.     END IF
  573.  
  574.     i% = DoesRegKeyExist(".WCS")
  575.     IF i% = 0 THEN
  576.     CreateRegKeyValue ".WCS", "WinComm"
  577.     END IF
  578.  
  579.     CreateRegKeyValue "WinComm", "Delrina WinComm PRO"
  580.     szValue$ = MakePath(DEST$, "wincomm.EXE %1")
  581.     CreateRegKeyValue "wincomm\shell\open\command", szValue$
  582.     CreateRegKeyValue "wincomm\protocol\StdFileEditing\verb\0", "Edit"
  583.     szValue$ = MakePath(DEST$, "wincomm.EXE")
  584.     CreateRegKeyValue "wincomm\protocol\StdFileEditing\server", szValue$
  585.             
  586. ENDINST:
  587.  
  588.     '' Update/Create wincomm.ini entries
  589.     CreateIniKeyValue WINCOMMINI$, WCSECTION$, "VERSION", VERSION$, cmoOverwrite
  590.     CreateIniKeyValue WINCOMMINI$, WCSECTION$, "EXEPATH", DEST$, cmoOverwrite
  591.     CreateIniKeyValue WINCOMMINI$, WCSECTION$, "Directory", DEST$, cmoOverwrite
  592.     CreateIniKeyValue WINCOMMINI$, WCSECTION$, "RegInitString", "AT&FB0V1M1L2X4&D2S7=120\", cmoOverwrite
  593.  
  594.     '' Remove wincomm.ini entries
  595. ''  SP don't want to force registration if user have registered
  596. ''  RemoveIniKey WINCOMMINI$, WCSECTION$, "GWN", cmoNone
  597.     RemoveIniKey WINCOMMINI$, WCSECTION$, "IRQindex", cmoNone
  598.     
  599.     '' Copy Old wincomm section entries from win.ini to wincomm.ini
  600.     tmp$ = GetIniKeyString (INI$, "WinComm", "PORTNAME")
  601.     IF tmp$ <> "" THEN
  602.         CreateIniKeyValue WINCOMMINI$, WCSECTION$, "PORTNAME", tmp$, cmoOverwrite
  603.     END IF
  604.  
  605.     tmp$ = GetIniKeyString (INI$, "WinComm", "PORTTYPE")
  606.     IF tmp$ <> "" THEN
  607.         CreateIniKeyValue WINCOMMINI$, WCSECTION$, "PORTTYPE", tmp$, cmoOverwrite
  608.     END IF
  609.  
  610.     tmp$ = GetIniKeyString (INI$, "WinComm", "MODEMNAME")
  611.     IF tmp$ <> "" THEN
  612.         CreateIniKeyValue WINCOMMINI$, WCSECTION$, "MODEMNAME", tmp$, cmoOverwrite
  613.     END IF
  614.  
  615.     tmp$ = GetIniKeyString (INI$, "WinComm", "PULSE")
  616.     IF tmp$ <> "" THEN
  617.         CreateIniKeyValue WINCOMMINI$, WCSECTION$, "PULSE", tmp$, cmoOverwrite
  618.     END IF
  619.  
  620.     tmp$ = GetIniKeyString (INI$, "WinComm", "DIALPREFIX")
  621.     IF tmp$ <> "" THEN
  622.         CreateIniKeyValue WINCOMMINI$, WCSECTION$, "DIALPREFIX", tmp$, cmoOverwrite
  623.     END IF
  624.  
  625.     tmp$ = GetIniKeyString (INI$, "WinComm", "BAUDRATE")
  626.     IF tmp$ <> "" THEN
  627.         CreateIniKeyValue WINCOMMINI$, WCSECTION$, "BAUDRATE", tmp$, cmoOverwrite
  628.     END IF
  629.  
  630.     tmp$ = GetIniKeyString (INI$, "WinComm", "DOWNLOADDIR")
  631.     IF tmp$ <> "" THEN
  632.         CreateIniKeyValue WINCOMMINI$, WCSECTION$, "DOWNLOADDIR", tmp$, cmoOverwrite
  633.     END IF
  634.  
  635.     tmp$ = GetIniKeyString (INI$, "WinComm", "UPLOADDIR")
  636.     IF tmp$ <> "" THEN
  637.         CreateIniKeyValue WINCOMMINI$, WCSECTION$, "UPLOADDIR", tmp$, cmoOverwrite
  638.     END IF
  639.  
  640.     
  641.     '' Create Internet Messenger Section
  642.     IF GetListItem (CHECKSTATES$, CAMEL) = VON$ THEN
  643.         CreateIniKeyValue WINCOMMINI$, IMSECTION$, "ExePath", DEST$+ "\" + DIMTEXT$, cmoOverwrite
  644.     END IF
  645.  
  646.     '' for hsetup.c (wcsetup.exe)
  647.     CreateIniKeyValue WINCOMMINI$, WCSECTION$, "FromInstall", "Yes", cmoOverwrite
  648.     
  649.     
  650.     IF SUITEINSTALL% = 0 THEN    
  651.         path$ = MakePath(DEST$, "WCSETUP.EXE")
  652.     
  653.         A$ = CURDIR$
  654.         CHDRIVE DEST$
  655.         CHDIR DEST$
  656.     
  657.         MaxWindow HwndFrame ()
  658.         
  659.         IF GetListItem(CHECKSTATES$, EXES) = VON$ THEN
  660.             j% = LaunchWait (path$, "")
  661.         ELSE
  662.             j% = DoMsgBox ("Components of WinComm PRO 1.1 are installed successfully.", "WinComm PRO 1.1 Setup", MB_OK)
  663.         END IF
  664.         
  665.         CHDRIVE A$
  666.         CHDIR A$
  667.        END IF
  668.  
  669.     '' Remove Old wincomm section from win.ini
  670.     RemoveIniSection INI$, WCSECTION$, cmoNone
  671.  
  672.  
  673.  
  674. QUIT:
  675.     ON ERROR GOTO ERRQUIT
  676.  
  677.     IF ERR = 0 THEN
  678.     GOTO ERRQUIT
  679.     ELSEIF ERR = STFQUIT THEN
  680.     dlg% = EXITQUIT
  681.     WriteToLogFile "User Canceled out of Setup"
  682.     ELSEIF ERR = 13 THEN
  683.     ERR = 0
  684.     RESUME INST
  685.     ELSE
  686.     dlg% = EXITFAILURE
  687.     WriteToLogFile "Setup Failed"
  688.     END IF
  689.  
  690.  
  691. QUITL1:
  692.     IF SUITEINSTALL% = 0 THEN
  693.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  694.     END IF
  695.     IF sz$ = "REACTIVATE" THEN
  696.     GOTO QUITL1
  697.     END IF
  698.     UIPop 1
  699.     
  700.     cursor% = ShowWaitCursor ()
  701.     EndCTL3D HinstFrame()
  702.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  703.     RemoveFile iniFile$, cmoForce
  704.     CloseLogFile
  705.     END
  706.  
  707. ERRQUIT:
  708.     IF ERR = 0 THEN
  709.         sz$ = "Setup completed successfully"
  710.         IF Install_Pass$ = "2" OR Install_Pass$ = "3" THEN
  711.                CreateIniKeyValue INI$, "CommSuite-Inst", "PassTwoStatus", "1", cmoOverwrite
  712.                CreateIniKeyValue INI$, "CommSuite-Inst", "DEST", DEST$, cmoOverwrite
  713.         END IF
  714.  
  715.     ELSE
  716.         sz$ = "Setup sources were corrupted, call Delrina Corporation!"
  717.     END IF
  718.  
  719.     cursor% = ShowWaitCursor ()
  720.     WriteToLogFile sz$
  721.     EndCTL3D HinstFrame()
  722.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  723.     RemoveFile iniFile$, cmoForce
  724.     CloseLogFile
  725.     END
  726.  
  727. PASSONEQUIT:
  728.     cursor% = ShowWaitCursor ()
  729.     CloseLogFile
  730.     EndCTL3D HinstFrame()
  731.     END
  732.     
  733. CHECKFOROLD:
  734.     
  735.     IF REINSTALL% <> 3 THEN
  736.     REINSTALL% = 0
  737.     tmp$ = GetIniKeyString (INI$, WCSECTION$, "EXEPATH")
  738.     ''***********************************************************************
  739.     '' from version 1.1, no win.ini section for wincomm, moved to wincomm.ini
  740.     ''***********************************************************************
  741.     IF tmp$ = "" THEN
  742.         tmp$ = GetIniKeyString (WINCOMMINI$, WCSECTION$, "EXEPATH")
  743.     END IF
  744.     WriteToLogFile "Checking for WinComm in WIN.INI"
  745.     IF tmp$ = "" THEN
  746.         WriteToLogFile "Not Found"
  747.         DEST$ = "C" + ":\wincomm"     
  748.     ELSE
  749.         exe$ = tmp$ + "\wincomm.exe"
  750.         WriteToLogFile "Found EXEPATH="+tmp$
  751.         WriteToLogFile "Checking if WINCOMM.EXE exists"
  752.         
  753.         IF DoesFileExist (exe$, cmoExists) THEN
  754.         WriteToLogFile "WINCOMM.EXE found in the specified path"
  755.         REINSTALL% = 1
  756.         ELSE
  757.         WriteToLogFile "WINCOMM.EXE not found in the specified path"
  758.         END IF
  759.         DEST$ = tmp$
  760.     END IF
  761.     ELSE
  762.     
  763.     exe$ = DEST$ + "\wincomm.exe"
  764.     WriteToLogFile "User entered new path - checking existance: "+exe$
  765.     IF DoesFileExist (exe$, cmoExists) THEN
  766.         WriteToLogFile "WINCOMM.EXE found in the new path"
  767.         REINSTALL% = 1
  768.     ELSE
  769.         WriteToLogFile "WINCOMM.EXE not found in the new path"
  770.         REINSTALL% = 0
  771.     END IF
  772.     END IF
  773.     IF REINSTALL% = 1 THEN
  774. CFODLG:
  775.     ASKEDREINST% = 1
  776.     WriteToLogFile stars$+" WELCOME/UPDATE SCREEN "+stars$
  777.     sz$ = UIStartDlg(CUIDLL$, HAALREADYFOUND, "FInfoDlgProc", HAALREADYFOUNDHELP, HELPPROC$)
  778.     IF sz$ = "REACTIVATE" THEN
  779.         GOTO CFODLG
  780.     ELSEIF sz$ = "CONTINUE" THEN    
  781.         WriteToLogFile "Continue from NEW/UPDATE screen (Update selected)"
  782.         WriteToLogFile "************" + sz$
  783.         REINSTALL% = 1
  784.     ELSE
  785.         GOSUB AskQuit
  786.         GOTO CFODLG
  787.     END IF
  788.     UIPop 1
  789.     END IF
  790.     RETURN
  791.     
  792.  
  793.  
  794.  
  795. GETPATH:
  796.     SetSymbolValue "EditTextIn", DEST$
  797.     SetSymbolValue "EditFocus", "END"
  798.     tmp$ = DEST$
  799.  
  800. GETPATHL1:
  801.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", DESTPATHHELP, HELPPROC$)
  802.     IF sz$ = "CONTINUE" THEN
  803.     DEST$ = GetSymbolValue("EditTextOut")
  804.     IF MID$ (DEST$, LEN(DEST$), 1) = "\" THEN
  805.         DEST$ = MID$ (DEST$, 1, LEN(DEST$)-1)
  806.     END IF
  807.     IF IsDirWritable(DEST$) = 0 THEN    
  808.         GOSUB BADPATH
  809.         GOTO GETPATHL1
  810.     END IF
  811.     UIPop 1
  812.     ELSEIF sz$ = "REACTIVATE" THEN
  813.     GOTO GETPATHL1
  814.     ELSEIF sz$ = "EXIT" THEN
  815.     GOSUB ASKQUIT
  816.     GOTO GETPATH
  817.     ELSE
  818.     GOTO GETPATHL1
  819.     END IF
  820.     
  821.       IF ASKEDREINST% = 0 THEN
  822.         REINSTALL% = 3      
  823.         GOSUB CHECKFOROLD
  824.     END IF
  825.  
  826.     SetDriveStatus
  827.     ReplaceListItem DRIVETEXT$, 1, MID$(DEST$, 1, 1) + ":"
  828.  
  829.     RETURN
  830.  
  831.  
  832. BADPATH:
  833.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  834.  
  835.     IF sz$ = "REACTIVATE" THEN
  836.     GOTO BADPATH
  837.     END IF
  838.     UIPop 1
  839.     RETURN
  840.  
  841.  
  842.  
  843.  
  844.  
  845. ASKQUIT:
  846.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  847.  
  848.     IF sz$ = "EXIT" THEN
  849.     UIPopAll
  850.     ERROR STFQUIT
  851.     ELSEIF sz$ = "REACTIVATE" THEN
  852.     GOTO ASKQUIT
  853.     ELSE
  854.     UIPop 1
  855.     END IF
  856.     RETURN
  857.  
  858.  
  859.  
  860.  
  861.  
  862. TOOBIG:                                
  863.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  864.     IF sz$ = "REACTIVATE" THEN
  865.     '' Clean Up Old Spaces Before Updating spaces.ini
  866.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$ 
  867.     RemoveIniSection iniFile$, WINCOMMSPACES$, cmoNone
  868.     RecalcSpaceNeeded
  869.     SetDriveStatus
  870.     GOTO TOOBIG
  871.     ELSEIF sz$ = "CONTINUE" THEN    
  872.     UIPopAll
  873.     SetSymbolValue "EditTextIn", DEST$
  874.     GOTO GETPATHL1
  875.     END IF
  876.     UIPop 1
  877.     RETURN
  878.  
  879.  
  880. DEMOERR1:
  881.     sz$ = UIStartDlg(CUIDLL$, DEMODISKREADONLY, "FInfo0DlgProc", 0, "")
  882.     IF sz$ = "REACTIVATE" THEN
  883.     GOTO DEMOERR1
  884.     END IF
  885.     UIPop 1
  886.     RETURN
  887.  
  888.  
  889. '*************************************************************************
  890. '**
  891. '** Purpose:    Set Gauge Position to upper right corner
  892. '**
  893. '*************************************************************************
  894. SUB SetGaugePosition STATIC
  895.  
  896.     dx% = GetxDialogBaseUnits()    
  897.     x% = (( GetScreenWidth() * 4 ) / dx% ) - 160
  898.     
  899.     '' Copy Gauge is 190x90 Dlg Units            
  900.     SetCopyGaugePosition x%, 10
  901. END SUB
  902.  
  903.  
  904. '*************************************************************************
  905. '**
  906. '** Purpose:    Save a list to an ini file
  907. '**
  908. '*************************************************************************
  909. SUB SaveList (list$, items%) STATIC
  910.     iniFile$ = GetSymbolValue("STF_CWDDIR") + CONTXTINI$
  911.     FOR i% = 1 TO items% STEP 1
  912.         key$ = list$ + LTRIM$(STR$(i%))
  913.         value$ = GetListItem(list$, i%)
  914.         CreateIniKeyValue iniFile$, WCSECTION$, key$, value$, cmoOverwrite
  915.     NEXT i%        
  916. END SUB
  917.  
  918.  
  919. '**************************************************************************
  920. '**
  921. '** Purpose:    Read disk space usage from spaces.ini WinFax_Spaces section
  922. '**
  923. '**************************************************************************
  924. SUB ReadAllDrvSpaces (list$) STATIC
  925.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$
  926.     FOR i% = 1 TO 26 STEP 1
  927.         key$ = LTRIM$(STR$(i%-1)) 
  928.         value$ = GetIniKeyString (iniFile$, WINFAXSPACES$, key$)
  929.         IF value$ <> "" THEN
  930.             ReplaceListItem list$, i%, value$
  931.         END IF
  932.     NEXT i%
  933. END SUB
  934.  
  935.  
  936. '*************************************************************************
  937. '**
  938. '** Purpose:    Write disk space usage to spaces.ini WinComm_Spaces section
  939. '**
  940. '*************************************************************************
  941. SUB WriteDrvSpaces (ddrv%, dspaces&) STATIC
  942.     iniFile$ = GetSymbolValue("STF_CWDDIR") + SPACESINI$
  943.     key$ = LTRIM$(STR$(ddrv%))
  944.     value$ = LTRIM$(STR$(dspaces&))
  945.     CreateIniKeyValue iniFile$, WINCOMMSPACES$, key$, value$, cmoOverwrite
  946. END SUB
  947.  
  948.  
  949. '*************************************************************************
  950. '**
  951. '** Purpose:    Get spaces from SPACESTEXTS$
  952. '**
  953. '*************************************************************************
  954. FUNCTION GetDrvUsage (ddrv%) STATIC AS LONG
  955.     usage$ = GetListItem(SPACESTEXT$, ddrv%)
  956.     GetDrvUsage = VAL (usage$)
  957. END FUNCTION 
  958.  
  959.  
  960. '*************************************************************************
  961. '**
  962. '** Purpose:    Read a list from an ini file
  963. '**
  964. '*************************************************************************
  965. SUB ReadList (list$, items%) STATIC
  966.     iniFile$ = GetSymbolValue("STF_CWDDIR") + CONTXTINI$
  967.     FOR i% = 1 TO items% STEP 1
  968.         key$ = list$ + LTRIM$(STR$(i%)) 
  969.         value$ = GetIniKeyString (iniFile$, WCSECTION$, key$)
  970.         ReplaceListItem list$, i%, value$
  971.     NEXT i% 
  972. END SUB
  973.  
  974. '*************************************************************************
  975. '**
  976. '** Purpose:    Save Context Just Before install is called
  977. '**
  978. '*************************************************************************
  979. SUB SaveContext STATIC
  980.     iniFile$ = GetSymbolValue("STF_CWDDIR") + CONTXTINI$
  981.     SaveList CHECKSTATES$, APPFILES
  982.     SaveList STATUSITEMS$, APPFILES
  983.     SaveList DRIVETEXT$, 7
  984.     CreateIniKeyValue iniFile$, WCSECTION$, "DEST", DEST$, cmoOverwrite
  985.     CreateIniKeyValue iniFile$, WCSECTION$, "bOverwrite", bOverwrite$, cmoOverwrite
  986.     CreateIniKeyValue iniFile$, WCSECTION$, "bKeepMsgFolder", bKeepMsgFolder$, cmoOverwrite
  987. END SUB
  988.  
  989.  
  990. '*************************************************************************
  991. '**
  992. '** Purpose:    Provide default Context Just Before install is called
  993. '**
  994. '*************************************************************************
  995. SUB DefaultContext STATIC
  996.     FOR i% = 1 TO APPFILES STEP 1
  997.         ReplaceListItem CHECKSTATES$, i%, VON$
  998.     NEXT i%
  999.     bOverwrite$ = "0"        
  1000. END SUB
  1001.  
  1002. '*************************************************************************
  1003. '**
  1004. '** Purpose:    Read Context Just Before install is called
  1005. '**
  1006. '*************************************************************************
  1007. SUB ReadContext STATIC    
  1008.     iniFile$ = GetSymbolValue("STF_CWDDIR") + CONTXTINI$
  1009.     ReadList CHECKSTATES$, APPFILES
  1010.     ReadList STATUSITEMS$, APPFILES
  1011.     ReadList DRIVETEXT$, 7
  1012.     DEST$ = GetIniKeyString (iniFile$, WCSECTION$, "DEST")
  1013.     bOverwrite$ = GetIniKeyString (iniFile$, WCSECTION$, "bOverwrite") 
  1014.     bKeepMsgFolder$ = GetIniKeyString (iniFile$, WCSECTION$, "bKeepMsgFolder")
  1015.     ENOUGH% = 0
  1016.     SUITEINSTALL% = 1
  1017. END SUB
  1018.  
  1019.  
  1020. '*************************************************************************
  1021. '**
  1022. '** Purpose:    Copy necessary and optional files onto the user's hard drive.
  1023. '**
  1024. '*************************************************************************
  1025. SUB install STATIC
  1026.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  1027.     CreateDir DEST$, cmoNone            
  1028.     convert% = 0
  1029.  
  1030.     ClearCopyList
  1031.     bFrominstall% = 1
  1032.     
  1033.     AddNeededToCopyList
  1034.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  1035.  
  1036.     width% = GetScreenWidth()
  1037.     IF width% <= 800 THEN
  1038.     AddSectionKeyFileToCopyList "PRF Files", "prf1prf", SrcDir$, DEST$
  1039.     ELSE
  1040.     AddSectionKeyFileToCopyList "PRF Files", "prf2prf", SrcDir$, DEST$
  1041.     END IF
  1042.  
  1043.     AddSectionFilesToCopyList "WC Executables - EXCA", SrcDir$, DEST$
  1044.     convert% = 0
  1045.     FOR i% = EXES TO APPFILES-1 STEP 1  
  1046.     IF GetListItem(CHECKSTATES$, i%) = VON$ THEN
  1047.         IF i% <> SSFILES THEN
  1048.             AddOptFilesToCopyList i%
  1049.         ELSE
  1050.             IF DoesFileExist (MakePath (DEST$, "default.wcs"), cmoExists) THEN
  1051.                 IF bOverwrite$ = "1" THEN                
  1052.                     AddOptFilesToCopyList i%
  1053.                 END IF
  1054.             ELSE
  1055.                 AddOptFilesToCopyList i%
  1056.             END IF
  1057.             
  1058.             
  1059.             IF DoesFileExist (MakePath (DEST$, "hostlist.wcs"), cmoExists) THEN
  1060.                 IF bOverwrite$ = "1" THEN
  1061.                     AddSectionFilesToCopyList "XSession Files", GetSymbolValue("STF_SRCDIR"), DEST$
  1062.                 END IF
  1063.             ELSE
  1064.                 AddSectionFilesToCopyList "XSession Files", GetSymbolValue("STF_SRCDIR"), DEST$
  1065.             END IF
  1066.         END IF
  1067.         IF i% = CONVERTS THEN
  1068.         convert% = 1
  1069.         END IF
  1070.     END IF
  1071.     NEXT i%
  1072.  
  1073.     ClearBillboardList
  1074. ''    AddToBillboardList "mscuistf.dll", BILLBOARD1, "BillboardDlg", 1
  1075. ''    AddToBillboardList "mscuistf.dll", BILLBOARD2, "BillboardDlg", 1
  1076. ''    AddToBillboardList "mscuistf.dll", BILLBOARD3, "BillboardDlg", 1
  1077. ''    AddToBillboardList "mscuistf.dll", BILLBOARD4, "BillboardDlg", 1
  1078. ''    AddToBillboardList "mscuistf.dll", BILLBOARD5, "BillboardDlg", 1
  1079.  
  1080.     AddToBillboardList "mscuistf.dll", PANEL1, "FModelessBottomLeftDlgProc", 1
  1081.     AddToBillboardList "mscuistf.dll", PANEL2, "FModelessBottomLeftDlgProc", 1
  1082.     AddToBillboardList "mscuistf.dll", PANEL3, "FModelessBottomLeftDlgProc", 1
  1083.     AddToBillboardList "mscuistf.dll", PANEL4, "FModelessBottomLeftDlgProc", 1
  1084.     AddToBillboardList "mscuistf.dll", PANEL5, "FModelessBottomLeftDlgProc", 1
  1085.     
  1086. IF GetListItem (CHECKSTATES$, CAMEL) = VON$ THEN    
  1087.     AddToBillboardList "mscuistf.dll", PANEL6, "FModelessBottomLeftDlgProc", 1
  1088.     AddToBillboardList "mscuistf.dll", PANEL7, "FModelessBottomLeftDlgProc", 1
  1089.     AddToBillboardList "mscuistf.dll", PANEL8, "FModelessBottomLeftDlgProc", 1
  1090. END IF    
  1091.     
  1092.     MaxWindow HwndFrame ()
  1093.     SetGaugePosition
  1094.     CopyFilesInCopyList
  1095.  
  1096. IF GetListItem (CHECKSTATES$, CAMEL) = VON$ THEN
  1097.  
  1098.  
  1099.     '' Create Camel Subdirectories
  1100.  
  1101.     path$ = MakePath(DEST$, DIMTEXT$)
  1102.     
  1103.     subpath$ = MakePath(path$, "$COMPIPE")
  1104.     CreateDir subpath$, cmoNone
  1105.     
  1106.     subpath$ = MakePath(path$, "$PACKFOL")
  1107.     CreateDir subpath$, cmoNone
  1108.     
  1109.     subpath$ = MakePath(path$, "$PENDING")
  1110.     CreateDir subpath$, cmoNone
  1111.     
  1112.     subpath$ = MakePath(path$, "DELETED")
  1113.     CreateDir subpath$, cmoNone
  1114.     
  1115.     subpath$ = MakePath(path$, "DRAFT")
  1116.     CreateDir subpath$, cmoNone
  1117.     
  1118.     subpath$ = MakePath(path$, "INCOMING")
  1119.     CreateDir subpath$, cmoNone
  1120.     
  1121.     subpath$ = MakePath(path$, "OUTGOING")
  1122.     CreateDir subpath$, cmoNone
  1123.     
  1124.     subpath$ = MakePath(path$, "PCNOTE.PC")
  1125.     CreateDir subpath$, cmoNone
  1126.  
  1127.     subpath$ = MakePath(path$, "$UIPIPE")
  1128.     CreateDir subpath$, cmoNone
  1129.     
  1130.     subpath$ = MakePath(path$, "TMP")
  1131.     CreateDir subpath$, cmoNone
  1132.  
  1133. IF bKeepMsgFolder$ = "0" THEN
  1134.     '' Copy/Overwrite the dbnote.dbf and dbnote.dbt files to the subdir's
  1135.  
  1136.     DIMDIR$ = DEST$ + "\" + DIMTEXT$
  1137.     pass% = 0
  1138.     FILEN$ = "dbnote.dbf"
  1139.     Src$ = MakePath(DIMDIR$, FILEN$)
  1140. CopyDbnote:
  1141.     Dst$ = MakePath(DIMDIR$, "$COMPIPE\" + FILEN$)
  1142.     CopyFile Src$, Dst$, cmoNone, 0
  1143.     Dst$ = MakePath(DIMDIR$, "$PENDING\" + FILEN$)
  1144.     CopyFile Src$, Dst$, cmoNone, 0
  1145.     Dst$ = MakePath(DIMDIR$, "$PACKFOL\" + FILEN$)
  1146.     CopyFile Src$, Dst$, cmoNone, 0
  1147.     Dst$ = MakePath(DIMDIR$, "DELETED\" + FILEN$)
  1148.     CopyFile Src$, Dst$, cmoNone, 0
  1149.     Dst$ = MakePath(DIMDIR$, "DRAFT\" + FILEN$)
  1150.     CopyFile Src$, Dst$, cmoNone, 0
  1151.     Dst$ = MakePath(DIMDIR$, "INCOMING\" + FILEN$)
  1152.     CopyFile Src$, Dst$, cmoNone, 0
  1153.     Dst$ = MakePath(DIMDIR$, "OUTGOING\" + FILEN$)
  1154.     CopyFile Src$, Dst$, cmoNone, 0
  1155.     Dst$ = MakePath(DIMDIR$, "PCNOTE.PC\" + FILEN$)
  1156.     CopyFile Src$, Dst$, cmoNone, 0
  1157.  
  1158.     IF pass% = 0 THEN
  1159.         pass% = 1
  1160.         FILEN$ = "dbnote.dbt"
  1161.         Src$ = MakePath(DIMDIR$, FILEN$)
  1162.         GOTO CopyDbnote
  1163.     END IF
  1164. END IF
  1165. END IF
  1166.  
  1167.     sz$ = "Delrina WinComm PRO 1.1"
  1168.     CurIniNum& = 0
  1169.     
  1170.     suite$ = GetSymbolValue("STF_CWDDIR") + ICONGROUPINI$
  1171.     
  1172.     IF SUITEINSTALL% = 0 THEN
  1173.         CreateProgmanGroup sz$, "", cmoNone
  1174.         ShowProgmanGroup  sz$, 1, cmoNone
  1175.         WriteToLogFile sz$ + " Program Manager group created"
  1176.     END IF
  1177.     IF GetListItem(CHECKSTATES$, EXES) = VON$ THEN
  1178.         IF SUITEINSTALL% = 0 THEN
  1179.             CreateProgmanItem sz$, "Delrina WinComm PRO "+VERSION$, MakePath(DEST$,"wincomm.exe"), "", cmoOverwrite
  1180.             WriteToLogFile "Delrina WinComm PRO Program Manager item created"
  1181.         ELSE
  1182.             CreateIniKeyValue suite$, "WinComm", LTRIM$(STR$(CurIniNum&)), "[AddItem ("+MakePath(DEST$, "wincomm.exe")+", Delrina WinComm PRO "+VERSION$+")]", cmoOverwrite
  1183.             CurIniNum& = CurIniNum& + 1
  1184.         END IF
  1185.     END IF
  1186.     
  1187.     IF GetListItem(CHECKSTATES$, CAMEL) = VON$ THEN
  1188.         IF SUITEINSTALL% = 0 THEN
  1189.             CreateProgmanItem sz$, "Internet Messenger", MakePath(DEST$+"\"+DIMTEXT$, DIMTEXT$+".exe"), "", cmoOverwrite
  1190.             WriteToLogFile "Internet Messenger Program Manager item created"
  1191.         ELSE
  1192.             CreateIniKeyValue suite$, "WinComm", LTRIM$(STR$(CurIniNum&)), "[AddItem (" + MakePath(DEST$+"\"+DIMTEXT$, DIMTEXT$+".exe") + ", Internet Messenger)]", cmoOverwrite
  1193.             CurIniNum& = CurIniNum& + 1
  1194.         END IF        
  1195.     END IF   
  1196.  
  1197.  
  1198.     IF convert% = 1 THEN
  1199.         IF SUITEINSTALL% = 0 THEN
  1200.         CreateProgmanItem sz$, "Import for WinComm", MakePath(DEST$,"import.exe"), "", cmoOverwrite
  1201.         WriteToLogFile "Import for WinComm Program Manager item created"
  1202.         ELSE
  1203.             CreateIniKeyValue suite$, "WinComm", LTRIM$(STR$(CurIniNum&)), "[AddItem ("+MakePath(DEST$,"import.exe")+", Import for WinComm)]", cmoOverwrite
  1204.             CurIniNum& = CurIniNum& + 1
  1205.         END IF
  1206.     END IF
  1207.  
  1208.     IF SUITEINSTALL% = 0 THEN
  1209.         tmp$ = MakePath(szWinDir$, "notepad.exe") + " "+ MakePath(DEST$, "readme.")
  1210.         CreateProgmanItem sz$, "WinComm Read Me", tmp$, "", cmoOverwrite
  1211.         WriteToLogFile "Delrina WinComm PRO Read Me Program Manager item created"
  1212.         tmp$ = MakePath(szWinDir$, "notepad.exe") + " " + MakePath (GetWindowsDir (), "wincomm.log")
  1213.         CreateProgmanItem sz$, "WinComm Install Log", tmp$, "", cmoOverwrite
  1214.         WriteToLogFile "Delrina WinComm PRO Install Log Program Manager item created"
  1215.         tmp$ = MakePath(DEST$, "deltest.exe")
  1216.         CreateProgmanItem sz$, "Delrina TEST", tmp$, "", cmoOverwrite
  1217.         WriteToLogFile "Delrina TEST Program Manager item created"
  1218.     ELSE
  1219.         tmp$ = MakePath(szWinDir$, "notepad.exe") + " "+ MakePath(DEST$, "readme.")
  1220.         CreateIniKeyValue suite$, "WinComm", LTRIM$(STR$(CurIniNum&)), "[AddItem ("+tmp$+", WinComm Read Me)]", cmoOverwrite
  1221.         CurIniNum& = CurIniNum& + 1
  1222.         tmp$ = MakePath(szWinDir$, "notepad.exe") + " " + MakePath (GetWindowsDir (), "wincomm.log")
  1223.         CreateIniKeyValue suite$, "WinComm", LTRIM$(STR$(CurIniNum&)), "[AddItem ("+tmp$+", WinComm Install Log)]", cmoOverwrite
  1224.         CurIniNum& = CurIniNum& + 1
  1225.         tmp$ = MakePath(DEST$, "deltest.exe")
  1226.         CreateIniKeyValue suite$, "WinComm", LTRIM$(STR$(CurIniNum&)), "[AddItem (" + tmp$ + ", Delrina TEST)]", cmoOverwrite
  1227.         CurIniNum& = CurIniNum& + 1
  1228.     END IF
  1229.     tmp$ = ""
  1230.     sz$ = ""
  1231.     suite$ = ""
  1232. END SUB
  1233.  
  1234.  
  1235. '*************************************************************************
  1236. '**
  1237. '** Purpose:     
  1238. '**
  1239. '*************************************************************************
  1240. SUB GetWinDriveFreeCost STATIC
  1241.     CursorSave% = ShowWaitCursor()
  1242.     
  1243.     ClearCopyList
  1244.     
  1245.     SrcDir$   = GetSymbolValue("STF_SRCDIR")
  1246.     szSysDir$ = GetWindowsSysDir()
  1247.     szWinDir$ = GetWindowsDir()
  1248.  
  1249.  
  1250.     tmp$ = MakePath(szSysDir$, "wfxcomm.drv")
  1251.     IF DoesFileExist (tmp$, femExists) THEN
  1252.     szyourVer$ = GetVersionOfFile(tmp$)
  1253.     szourVer$  = GetSectionKeyVersion("Windows System", "wfxcommdrv")
  1254.     IF szourVer$ > szyourVer$ THEN
  1255.         AddSectionKeyFileToCopyList "Windows System", "wfxcommdrv", SrcDir$, szSysDir$
  1256.     END IF
  1257.     ELSE
  1258.         AddSectionKeyFileToCopyList "Windows System", "wfxcommdrv", SrcDir$, szSysDir$
  1259.     END IF
  1260.  
  1261.  
  1262.     
  1263.     tmp$ = MakePath(szSysDir$, "CTL3D.DLL")
  1264.     IF DoesFileExist (tmp$, femExists) THEN
  1265.     szyourVer$ = GetVersionOfFile(tmp$)
  1266.     szourVer$  = GetSectionKeyVersion("Needed DLL Files", "ctl3ddll")
  1267.     IF szourVer$ > szyourVer$ THEN
  1268.         AddSectionKeyFileToCopyList "Needed DLL Files", "ctl3ddll", SrcDir$, szSysDir$
  1269.     END IF
  1270.     ELSE
  1271.     AddSectionKeyFileToCopyList "Needed DLL Files", "ctl3ddll", SrcDir$, szSysDir$
  1272.     END IF
  1273.  
  1274.  
  1275.     
  1276.     '' Always add REGDATA.DAT for now
  1277.     AddSectionKeyFileToCopyList "Needed DLL Files", "regdatadat", SrcDir$, szWinDir$
  1278.  
  1279.  
  1280.     
  1281.     IF GetListItem (CHECKSTATES$, CAMEL) = VON$ THEN
  1282.     tmp$ = MakePath(szSysDir$, "CTL3DV2.DLL")
  1283.     IF DoesFileExist (tmp$, femExists) THEN
  1284.     szyourVer$ = GetVersionOfFile(tmp$)
  1285.     szourVer$  = GetSectionKeyVersion("Needed DLL Files", "ctl3dv2dll")
  1286.     IF szourVer$ > szyourVer$ THEN
  1287.         AddSectionKeyFileToCopyList "Needed DLL Files", "ctl3dv2dll", SrcDir$, szSysDir$
  1288.     END IF
  1289.     ELSE
  1290.     AddSectionKeyFileToCopyList "Needed DLL Files", "ctl3dv2dll", SrcDir$, szSysDir$
  1291.     END IF
  1292.     AddSectionKeyFileToCopyList "Windows", "imini", SrcDir$, szWinDir$
  1293.     END IF
  1294.     
  1295.  
  1296.     IF GetListItem (CHECKSTATES$, HMFILES) = VON$ THEN
  1297.     tmp$ = MakePath(szSysDir$, "VBRUN200.DLL")
  1298.     IF DoesFileExist (tmp$, femExists) THEN
  1299.         szyourVer$ = GetVersionOfFile(tmp$)
  1300.         szourVer$  = GetSectionKeyVersion("Host Mode Files", "vbrun200dll")
  1301.         IF szourVer$ > szyourVer$ THEN
  1302.         AddSectionKeyFileToCopyList "Host Mode Files", "vbrun200dll", SrcDir$, szSysDir$
  1303.         END IF
  1304.     ELSE
  1305.         AddSectionKeyFileToCopyList "Host Mode Files", "vbrun200dll", SrcDir$, szSysDir$
  1306.     END IF
  1307.     END IF
  1308.     
  1309.  
  1310.     
  1311.     IF IsDirWritable (szSysDir$) THEN
  1312.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  1313.     WinDriveFree& = GetFreeSpaceForDrive (WinDrive$)
  1314.     IF SUITEINSTALL% = 1 THEN
  1315.         WinDriveFree& = WinDriveFree& - (GetDrvUsage (ASC (WinDrive$) - ASC ("A") + 1) * 1024 )
  1316.     END IF
  1317.     AdditionalSpaceNeeded& = GetCopyListCost (EXTRACOST$, DLLNEEDS$, "")
  1318.     ndrive% = ASC(ucase$(WinDrive$)) - ASC("A") + 1
  1319.     WinDriveCost& = VAL(GetListItem(DLLNEEDS$, ndrive%))
  1320.     ELSE
  1321.     j% = DoMsgBox ("WinComm PRO Setup cannot write to: "+szSysDir$+" Please modify attributes using File Manager and try again.", "WinComm Setup Error", MB_ICONSTOP+MB_OK)
  1322.     RestoreCursor CursorSave%
  1323.     ERROR STFQUIT
  1324.     END IF
  1325.  
  1326.     ReplaceListItem DRIVETEXT$, 4, WinDrive$ + ":"
  1327.     ReplaceListItem DRIVETEXT$, 5, MakeBytes (WinDriveCost&)
  1328.     ReplaceListItem DRIVETEXT$, 6, MakeBytes (WinDriveFree&)
  1329.     ReplaceListItem DRIVETEXT$, 7, DEST$
  1330.  
  1331.     
  1332.     IF WinDriveCost& > WinDriveFree& THEN
  1333.     tmp$ = "WinComm PRO Setup must copy certain files to your Windows Drive, but there is not enough free drive space.  "
  1334.     tmp$ = tmp$ + "Please free approximately " + MakeBytes (WinDriveCost& - WinDriveFree&)
  1335.     j% = DoMsgBox (tmp$, "WinComm PRO Setup Error", MB_OK)
  1336.     RestoreCursor CursorSave%
  1337.     ERROR STFQUIT
  1338.     END IF
  1339.     
  1340.     IF SUITEINSTALL% = 1 THEN
  1341.         WriteDrvSpaces (ASC (WinDrive$) - ASC ("A")), WinDriveCost& /1024
  1342.     END IF
  1343.  
  1344.     tmp$ = ""
  1345.     RestoreCursor CursorSave%
  1346. END SUB
  1347.  
  1348.  
  1349. '*************************************************************************
  1350. '**
  1351. '** Purpose:     Adds the Needed DLLs to the copy list
  1352. '**
  1353. '*************************************************************************
  1354. SUB AddNeededToCopyList STATIC
  1355.     CursorSave% = ShowWaitCursor()
  1356.     
  1357.     SrcDir$   = GetSymbolValue("STF_SRCDIR")
  1358.     szSysDir$ = GetWindowsSysDir()
  1359.     szWinDir$ = GetWindowsDir()
  1360.  
  1361.  
  1362.     
  1363.  
  1364.     tmp$ = MakePath(szSysDir$, "wfxcomm.drv")
  1365.     IF DoesFileExist (tmp$, femExists) THEN
  1366.     szyourVer$ = GetVersionOfFile(tmp$)
  1367.     szourVer$  = GetSectionKeyVersion("Windows System", "wfxcommdrv")
  1368.     IF szourVer$ > szyourVer$ THEN
  1369.         AddSectionKeyFileToCopyList "Windows System", "wfxcommdrv", SrcDir$, szSysDir$
  1370.     END IF
  1371.     ELSE
  1372.         AddSectionKeyFileToCopyList "Windows System", "wfxcommdrv", SrcDir$, szSysDir$
  1373.     END IF
  1374.  
  1375.  
  1376.  
  1377.     tmp$ = MakePath(szSysDir$, "CTL3D.DLL")
  1378.     IF DoesFileExist (tmp$, femExists) THEN
  1379.     szyourVer$ = GetVersionOfFile(tmp$)
  1380.     szourVer$  = GetSectionKeyVersion("Needed DLL Files", "ctl3ddll")
  1381.     IF szourVer$ > szyourVer$ THEN
  1382.         AddSectionKeyFileToCopyList "Needed DLL Files", "ctl3ddll", SrcDir$, szSysDir$
  1383.     END IF
  1384.     ELSE
  1385.     AddSectionKeyFileToCopyList "Needed DLL Files", "ctl3ddll", SrcDir$, szSysDir$
  1386.     END IF
  1387.  
  1388.  
  1389.     '' Always add REGDATA.DAT for now
  1390.     AddSectionKeyFileToCopyList "Needed DLL Files", "regdatadat", SrcDir$, szWinDir$
  1391.  
  1392.  
  1393.  
  1394.     IF GetListItem (CHECKSTATES$, CAMEL) = VON$ THEN
  1395.     tmp$ = MakePath(szSysDir$, "CTL3DV2.DLL")
  1396.     IF DoesFileExist (tmp$, femExists) THEN
  1397.     szyourVer$ = GetVersionOfFile(tmp$)
  1398.     szourVer$  = GetSectionKeyVersion("Needed DLL Files", "ctl3dv2dll")
  1399.     IF szourVer$ > szyourVer$ THEN
  1400.         AddSectionKeyFileToCopyList "Needed DLL Files", "ctl3dv2dll", SrcDir$, szSysDir$
  1401.     END IF
  1402.     ELSE
  1403.     AddSectionKeyFileToCopyList "Needed DLL Files", "ctl3dv2dll", SrcDir$, szSysDir$
  1404.     END IF
  1405.     AddSectionKeyFileToCopyList "Windows", "imini", SrcDir$, szWinDir$
  1406.     END IF
  1407.  
  1408.  
  1409.     tmp$ = ""
  1410.     RestoreCursor CursorSave%
  1411. END SUB
  1412.  
  1413.  
  1414. '*************************************************************************
  1415. '**
  1416. '** Purpose:     Recalculates disk space for the given optional file.
  1417. '**
  1418. '*************************************************************************
  1419. SUB RecalcOptFiles (ftype%, totsize&) STATIC
  1420.     IF GetListItem (CHECKSTATES$, ftype%) = VON$ OR ftype% = APPFILES THEN
  1421.         cost& = CalcOptCost& (ftype%)
  1422.         IF ftype% = EXES THEN
  1423.             cost& = cost& + CalcOptCost& (APPFILES)
  1424.         END IF
  1425.         IF cost& > 0 THEN
  1426.             totsize& = totsize& + cost&
  1427.             ReplaceListItem STATUSITEMS$, ftype%, MakeBytes(cost&)
  1428.         ELSE
  1429.             ReplaceListItem STATUSITEMS$, ftype%, MakeBytes(0)
  1430.         END IF
  1431.     ELSE
  1432.         ReplaceListItem STATUSITEMS$, ftype%, MakeBytes(0)
  1433.     END IF
  1434. END SUB
  1435.  
  1436.     
  1437. '*************************************************************************
  1438. '**
  1439. '** Purpose:   Calculates disk space needed for the given option - ftype%
  1440. '**
  1441. '*************************************************************************
  1442. FUNCTION CalcOptCost& (ftype%) STATIC
  1443.         CursorSave% = ShowWaitCursor()
  1444.     
  1445.         ClearCopyList
  1446.         
  1447.         AddOptFilesToCopyList ftype%    
  1448.                         
  1449.         IF ftype% = EXES THEN
  1450.         ListSym$ = EXENEEDS$
  1451.         ELSEIF ftype% = APPFILES THEN
  1452.         ListSym$ = APPNEEDS$
  1453.         ELSEIF ftype% = HMFILES THEN
  1454.         ListSym$ = HMODENEEDS$
  1455.         ELSEIF ftype% = SSFILES THEN
  1456.         ListSym$ = SESSNEEDS$
  1457.         ELSEIF ftype% = SCRSAMPLES THEN
  1458.         ListSym$ = SCRNEEDS$
  1459.         ELSEIF ftype% = CONVERTS THEN
  1460.         ListSym$ = CONVNEEDS$
  1461.         ELSEIF ftype% = CAMEL THEN
  1462.         ListSym$ = CAMELNEEDS$
  1463.         END IF
  1464.     
  1465.         AditionalSpaceNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  1466.     
  1467.         drive$   = MID$(DEST$, 1, 1)
  1468.         ndrive%  = ASC(ucase$(drive$)) - ASC("A") + 1
  1469.         CalcOptCost& = VAL(GetListItem(ListSym$, ndrive%))
  1470.         RestoreCursor CursorSave%
  1471.         ListSym$ = ""
  1472. END FUNCTION
  1473.  
  1474.  
  1475. '*************************************************************************
  1476. '**
  1477. '** Purpose:    Recalculates disk space needed according to the current
  1478. '**             destination path.
  1479. '**
  1480. '*************************************************************************
  1481. SUB RecalcSpaceNeeded STATIC
  1482.     CursorSave% = ShowWaitCursor()
  1483.  
  1484.     
  1485.     totneed& = 0
  1486.  
  1487.     FOR i% = EXES to APPFILES-1 STEP 1
  1488.     RecalcOptFiles i%, totneed&
  1489.     NEXT i%
  1490.     ReplaceListItem DRIVETEXT$, 2, MakeBytes(totneed&)
  1491.  
  1492.     free& = GetFreeSpaceForDrive(MakePath(DEST$,""))
  1493.     IF SUITEINSTALL% = 1 THEN
  1494.         free& = free& - ( GetDrvUsage (ASC (DEST$) - ASC ("A") + 1) * 1024 )    
  1495.     END IF
  1496.     IF free& > totneed& THEN
  1497.         ENOUGH% = 1
  1498.         IF SUITEINSTALL% = 1 THEN
  1499.             WriteDrvSpaces (ASC (DEST$) - ASC ("A")), totneed&/1024
  1500.         END IF
  1501.     ELSE
  1502.     ENOUGH% = 0
  1503.     END IF
  1504.     TotalSpace& = totneed&
  1505.     RestoreCursor CursorSave%
  1506. END SUB
  1507.  
  1508.  
  1509. '*************************************************************************
  1510. '**
  1511. '** Purpose:    Adds the specified option files to the copy list.
  1512. '**
  1513. '*************************************************************************
  1514. SUB AddOptFilesToCopyList (ftype%) STATIC
  1515.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  1516.     IF ftype% = EXES THEN
  1517.  
  1518.     AddSectionFilesToCopyList "WC Executables", SrcDir$, DEST$
  1519.  
  1520.     AddSectionFilesToCopyList "WC Executables - EXCA", SrcDir$, DEST$
  1521.  
  1522.     ELSEIF ftype% = APPFILES THEN
  1523.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  1524.  
  1525.     width% = GetScreenWidth()
  1526.     IF width% <= 800 THEN
  1527.         AddSectionKeyFileToCopyList "PRF Files", "prf1prf", SrcDir$, DEST$
  1528.     ELSE
  1529.         AddSectionKeyFileToCopyList "PRF Files", "prf2prf", SrcDir$, DEST$
  1530.     END IF
  1531.  
  1532.     ELSEIF ftype% = HMFILES THEN
  1533.     AddSectionKeyFileToCopyList "Host Mode Files", "welcometxt", SrcDir$, DEST$
  1534.     AddSectionKeyFileToCopyList "Host Mode Files", "wchostwcs", SrcDir$, DEST$
  1535.     AddSectionKeyFileToCopyList "Host Mode Files", "wchostexe", SrcDir$, DEST$
  1536.     AddSectionKeyFileToCopyList "Host Mode Files", "wcvbtxt",   SrcDir$, DEST$
  1537.  
  1538.     szSysDir$ = GetWindowsSysDir()
  1539.     szVBRUNDLL$ = MakePath(szSysDir$, "VBRUN200.DLL")
  1540.     j% = IsDirWritable(szSysDir$)   
  1541.  
  1542.     e% = DoesFileExist(szVBRUNDLL$, femExists)
  1543.     IF e% = 1 THEN
  1544.         szyourVer$ = GetVersionOfFile(szVBRUNDLL$)
  1545.         szourVer$  = GetSectionKeyVersion("Host Mode Files", "vbrun200dll")
  1546.         IF (szourVer$ > szyourVer$) THEN
  1547.         IF j% = 1 THEN
  1548.             AddSectionKeyFileToCopyList "Host Mode Files", "vbrun200dll", SrcDir$, szSysDir$
  1549.         ELSE
  1550.             AddSectionKeyFileToCopyList "Host Mode Files", "vbrun200dll", SrcDir$, DEST$
  1551.         END IF
  1552.         END IF
  1553.     ELSE
  1554.         AddSectionKeyFileToCopyList "Host Mode Files", "vbrun200dll", SrcDir$, szSysDir$
  1555.     END IF
  1556.  
  1557.     ELSEIF ftype% = SSFILES THEN
  1558.     AddSectionFilesToCopyList "Session Files", SrcDir$, DEST$
  1559.  
  1560.  
  1561.  
  1562.                            
  1563.     ELSEIF ftype% = SCRSAMPLES THEN
  1564.  
  1565.     path$ = MakePath(DEST$, "EXAMPLES")
  1566.     IF bFrominstall% = 1 THEN
  1567.         CreateDir path$, cmoNone 
  1568.     END IF   
  1569.     AddSectionFilesToCopyList "API Doc", SrcDir$, path$
  1570.  
  1571.     path$ = MakePath(path$, "HOST")
  1572.     IF bFrominstall% = 1 THEN
  1573.         CreateDir path$, cmoNone    
  1574.     END IF
  1575.     AddSectionFilesToCopyList "Host Sources", SrcDir$, path$
  1576.  
  1577.  
  1578.     ELSEIF ftype% = CONVERTS THEN
  1579.         AddSectionFilesToCopyList "Convert Programs", SrcDir$, DEST$
  1580.         AddSectionKeyFileToCopyList "WC Executables", "wcsfdll", SrcDir$, DEST$
  1581.  
  1582.     ELSEIF ftype% = CAMEL THEN
  1583.         path$ = MakePath(DEST$, DIMTEXT$)
  1584.         IF bFrominstall% = 1 THEN
  1585.             CreateDir path$, cmoNone
  1586.         END IF
  1587.         AddSectionFilesToCopyList DIMTEXT$, SrcDir$, path$
  1588.         AddSectionFilesToCopyList "IM Related", SrcDir$, DEST$
  1589.     END IF
  1590.  
  1591.     SrcDir$ = ""
  1592. END SUB
  1593.  
  1594.  
  1595. '*************************************************************************
  1596. '**
  1597. '** Purpose:    Sets drive status info according to latest disk space calcs.
  1598. '**
  1599. '*************************************************************************
  1600. SUB SetDriveStatus STATIC
  1601.  
  1602.     drive$ = MID$(DEST$, 1, 1)
  1603.     free& = GetFreeSpaceForDrive(drive$)
  1604.     IF SUITEINSTALL% = 1 THEN
  1605.         free& = free& - ( GetDrvUsage (ASC (drive$) - ASC ("A") + 1) * 1024 )
  1606.     END IF
  1607.     tempstr$ = MakeBytes(free&)
  1608.     ReplaceListItem DRIVETEXT$, 3, tempstr$
  1609.  
  1610. END SUB
  1611.  
  1612.  
  1613. '*************************************************************************
  1614. '**
  1615. '** Purpose:    Appends a file name to the end of a directory path,
  1616. '**             inserting a backslash character as needed.
  1617. '**
  1618. '*************************************************************************
  1619. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  1620.     IF szDir$ = "" THEN
  1621.     MakePath = szFile$
  1622.     ELSEIF szFile$ = "" THEN
  1623.     MakePath = szDir$
  1624.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  1625.     MakePath = szDir$ + szFile$
  1626.     ELSE
  1627.     MakePath = szDir$ + "\" + szFile$
  1628.     END IF
  1629. END FUNCTION
  1630.  
  1631.  
  1632. '*************************************************************************
  1633. '**
  1634. '** Purpose:    Prepare a string for display.
  1635. '**
  1636. '*************************************************************************
  1637. FUNCTION MakeBytes (size&) STATIC AS STRING
  1638.     IF size& < 1024 THEN
  1639.     MakeBytes = STR$(size&) + " bytes"
  1640.     ELSE
  1641.     MakeBytes = STR$(size&/1024) + " K"
  1642.     END IF
  1643. END FUNCTION
  1644.