home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Internet Business Development Kit / PRODUCT_CD.iso / sqlsvr / clients / win16 / sqltools.mst < prev    next >
Encoding:
Text File  |  1995-12-14  |  23.2 KB  |  739 lines

  1. ''***************************************************************
  2. ''* This is the setup script for the Microsoft SQL Tools
  3. ''*
  4. ''* Modification History
  5. ''*
  6. ''* Trish Millines-7/8/92- Upgraded to version 2.0 of Setup
  7. ''*                        Made changes for SQL Object Manager
  8. ''* Trish Millines-10/8/92 - Added routines to load in stored procs.
  9. ''* Trish Millines-11/23/92 - Finished adding routines to load in
  10. ''*                           stored procs.  Fixed bugs.
  11. ''* Casey Kiernan - 06/15/93 - tightened it up and fixed bugs
  12. ''* XavierS - 10/25/94 - Added Multiprot NetLib support
  13. ''***************************************************************
  14.  
  15. '$DEFINE DEBUG  ''Define for script development/debugging
  16.  
  17. '$INCLUDE 'setupapi.inc'
  18. '$INCLUDE 'msdetect.inc'
  19. '$INCLUDE 'mscpydis.inc'    ''System
  20.  
  21.  
  22. ''Dialog ID's
  23. CONST WELCOME       = 100
  24. CONST ASKQUIT       = 200
  25. CONST DESTPATH      = 300
  26. CONST EXITFAILURE   = 400
  27. CONST EXITQUIT      = 600
  28. CONST EXITSUCCESS   = 700
  29. CONST OPTIONS       = 800
  30. CONST APPHELP       = 900
  31. CONST RENAMEOLDDLL  = 950
  32. CONST AUTOEXECUPDATE  = 955
  33. CONST ASKSKIPAUTOEXEC  = 958
  34. CONST RENAMEERRDLG  = 960
  35.  
  36. CONST ISQLWDISKETTE = 1200
  37. CONST SETLOCATION   = 1300
  38. CONST CUSTHELP      = 1400
  39. CONST LOGINHELP     = 2300
  40. CONST LOGINFAIL     = 2400
  41. CONST WELCOMEHELP   = 1500
  42. CONST PATHHELP      = 1600
  43.  
  44. CONST CUSTINST      = 6200
  45. CONST TOOBIG        = 6300
  46. CONST BADPATH       = 6400
  47. CONST BILLBOARD     = 4545
  48. CONST CONNECTTOSERVER = 2100
  49. CONST EXECTSQL        = 2200
  50.  
  51. CONST WM_SYSCOMMAND = 274
  52. CONST SC_MAXIMIZE = 61488
  53.  
  54. ''Bitmap ID
  55. CONST LOGO = 1
  56.  
  57. ''File Types
  58. CONST ISQLW          = 1    ''ISQLW Procedures
  59. CONST CLIENTCONFIG   = 2   ''SQL Obj Procedures
  60. CONST SQLBOOKS         = 3   '' SQL Books on line
  61. CONST BASEFILES      = 4    ''dblib DLLs and the Sqltools.dll file
  62.  
  63. GLOBAL DEST$        ''Default destination directory.
  64. GLOBAL BOOKDEST$        ''Default help destination directory.
  65. GLOBAL SQLROOT$        ''SQL Root
  66. GLOBAL WINDRIVE$    ''Windows drive letter.
  67. GLOBAL WINDOWSDIR$  ''Windows directory
  68. GLOBAL SQLTOOLS$    ''Name of the sqltools series
  69.  
  70. ''CustInst list symbol names
  71. GLOBAL ISQLWNEEDS$      ''ISQL/w costs per drive
  72. GLOBAL CLIENTNEEDS$     ''Client Config costs per drive
  73. GLOBAL BASENEEDS$       ''Base files costs per drive
  74. GLOBAL BOOKNEEDS$       ''SQL Books Online costs
  75. GLOBAL EXTRACOSTS$      ''List of extra costs to add per drive
  76. GLOBAL BIGLIST$         ''List of option files cost calc results (boolean)
  77. GLOBAL NETLIB$            ''Net Lib to put in DSQUERY
  78. GLOBAL WINSYSDIR$        ''Window system directory
  79. GLOBAL SQLBOOKINI$    '' location of msin.ini
  80.  
  81. ''Dialog list symbol names
  82. GLOBAL CHECKSTATES$
  83. GLOBAL STATUSTEXT$
  84. GLOBAL DRIVETEXT$
  85.  
  86. ''TSQL Execute symbol names
  87. GLOBAL SERVERNAME$     ''Name of the SQL Server to install scripts on
  88. GLOBAL SERVERVERSION$  ''SQL Server version
  89. GLOBAL TSQLFILE$       ''Name of the Transact-SQL File to process
  90. GLOBAL TSQLRETURN$     ''SUCCEED or FAIL
  91.  
  92. DECLARE SUB AddOptFilesToCopyList (ftype%)
  93. DECLARE SUB RecalcOptFiles (ftype%)
  94. DECLARE SUB RecalcPath
  95. DECLARE SUB SetDriveStatus
  96. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  97. DECLARE FUNCTION BitmapCntrlInit LIB "mscuistf.dll" as INTEGER
  98. DECLARE FUNCTION SendMessage LIB "user"(hwnd%, wMsg%, wParam%, lParam&)
  99. DECLARE FUNCTION GetWinSystemDir LIB "mscuistf.dll" (szBuf$, cbBuf%) AS INTEGER
  100. DECLARE FUNCTION GetWindowsNTVersion LIB "mscuistf.dll" (szBuf$, cbBuf%) AS INTEGER
  101.  
  102. INIT:
  103.     SetSymbolValue "DLLCurrentVersion", "1995.12.13.0"
  104.  
  105.  
  106.  
  107.     hwnd% = HwndFrame()
  108.     istatus% = SendMessage(hwnd%, WM_SYSCOMMAND, SC_MAXIMIZE,0)   ''Maximize the window
  109.  
  110.     '' Get the Window's system directory
  111.     cb% = 256
  112.     szBuf$ = STRING$(cb%, 32)
  113.     cbRet% = GetWinSystemDir(szBuf$, cb%)
  114.  
  115.     WINSYSDIR$ = szBuf$
  116.     SQLBOOKINI$ = GetWindowsDir()+"INFOVIEW.INI"
  117.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  118.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  119.     SQLTOOLS$ = "SQL Server Tools"
  120.     SetBitmap CUIDLL$, LOGO
  121.     SetTitle "Microsoft SQL Server Client Tools Setup"
  122.  
  123.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  124.     IF szInf$ = "" THEN
  125.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SQLTOOLS.INF"
  126.     END IF
  127.     ReadInfFile szInf$
  128.     szVer$ = STRING$(cb%, 32)
  129.     cbRet% = GetWindowsNTVersion(szVer$, cb%)
  130.  
  131.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  132.     WINDOWSDIR$ = GetWindowsDir()
  133.     SQLROOT$ = WINDRIVE$ + ":\mssql"
  134.     DEST$ = SQLROOT$ + "\BIN"
  135.     BOOKDEST$ = SQLROOT$ + "\BOOKS"
  136.  
  137.     ''CustInst list symbols
  138.     CHECKSTATES$ = "CheckItemsState"
  139.     STATUSTEXT$  = "StatusItemsText"
  140.     DRIVETEXT$   = "DriveStatusText"
  141.     RENAMEDLLS$  = "HuntedVersionDLLs"
  142.     DLLVERSNING$ = "DLLCurrentVersion"
  143.     AUTOEXECUPD$ = "AutoexecUpdate"
  144.     NETLIBSEL$   = "NetLibSelection"
  145.  
  146.     NETLIB$ = "DBNMP3"
  147.  
  148.     AddListItem CHECKSTATES$, "ON"     ''ISQL/w
  149.     AddListItem CHECKSTATES$, "ON"     ''Client Config
  150.     AddListItem CHECKSTATES$, "ON"     ''SQL Books online
  151.     AddListItem CHECKSTATES$, "ON"     ''Base files (DLLs) checked on
  152.  
  153.     FOR i% = 1 TO 4 STEP 1
  154.     AddListItem STATUSTEXT$, ""
  155.     NEXT i%
  156.     FOR i% = 1 TO 7 STEP 1
  157.     AddListItem DRIVETEXT$, ""
  158.     NEXT i%
  159.     ReplaceListItem DRIVETEXT$, 7, SQLROOT$
  160.  
  161.     AddListItem NETLIBSEL$,  "Named Pipes"
  162.     AddListItem NETLIBSEL$,  "Novell SPX"
  163.     AddListItem NETLIBSEL$,  "Banyan Vines"
  164.     AddListItem NETLIBSEL$,  "TCPIP Sockets"
  165.     AddListItem NETLIBSEL$,  "Multi-protocol"
  166.  
  167.     AddListItem RENAMEDLLS$, "dbnmp3.dll"
  168.     AddListItem RENAMEDLLS$, "dbmsspx3.dll"
  169.     AddListItem RENAMEDLLS$, "dbmsvin3.dll"
  170.     AddListItem RENAMEDLLS$, "dbmssoc3.dll"
  171.     AddListItem RENAMEDLLS$, "w3dblib.dll"
  172.     AddListItem RENAMEDLLS$, "msdblib3.dll"
  173.     AddListItem RENAMEDLLS$, "dbmsrpc3.dll"
  174.  
  175.     ''Disk cost list symbols
  176.     ISQLWNEEDS$     = "ISQLWNeeds"
  177.     CLIENTNEEDS$    = "ClientNeeds"
  178.     BASENEEDS$      = "BaseNeeds"
  179.     BOOKNEEDS$      = "SQLBookNeeds"
  180.  
  181.     EXTRACOSTS$ = "ExtraCosts"
  182.     BIGLIST$    = "BigList"
  183.     FOR i% = 1 TO 6 STEP 1
  184.     AddListItem BIGLIST$, ""
  185.     NEXT i%
  186.     FOR i% = 1 TO 26 STEP 1
  187.     AddListItem EXTRACOSTS$, "0"
  188.     NEXT i%
  189.  
  190.     FOR i% = 1 TO 26 STEP 1
  191.     AddListItem ISQLWNEEDS$, "0"
  192.     NEXT i%
  193.     FOR i% = 1 TO 26 STEP 1
  194.     AddListItem CLIENTNEEDS$, "0"
  195.     NEXT i%
  196.     FOR i% = 1 TO 26 STEP 1
  197.     AddListItem BASENEEDS$, "0"
  198.     NEXT i%
  199.     FOR i% = 1 TO 26 STEP 1
  200.     AddListItem BOOKNEEDS$, "0"
  201.     NEXT i%
  202.  
  203.  
  204. WELCOME:
  205.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", WELCOMEHELP, HELPPROC$)
  206.     IF sz$ = "CONTINUE" THEN
  207.     UIPop 1
  208.     ELSE
  209.     GOSUB ASKQUIT
  210.     GOTO WELCOME
  211.     END IF
  212.  
  213. GETPATH:
  214.     SetSymbolValue "EditTextIn", SQLROOT$
  215.     SetSymbolValue "EditFocus", "END"
  216. GETPATHL1:
  217.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", PATHHELP, HELPPROC$)
  218.     SQLROOT$ = GetSymbolValue("EditTextOut")
  219.     DEST$ = SQLROOT$ + "\BIN"
  220.     BOOKDEST$ = SQLROOT$ + "\BOOKS"
  221.  
  222.     IF sz$ = "CONTINUE" THEN
  223.         IF IsDirWritable(SQLROOT$) = 0 THEN
  224.         GOSUB BADPATH
  225.         GOTO GETPATHL1
  226.         END IF
  227.         UIPop 1
  228.     ELSEIF sz$ = "REACTIVATE" THEN
  229.         GOTO GETPATHL1
  230.     ELSE
  231.         GOSUB ASKQUIT
  232.         GOTO GETPATH
  233.     END IF
  234.  
  235. ''********************************************************************
  236. ''* Display the custom installation dialog.  As each item is checked,
  237. ''* the disk space requirements are recalculated
  238. ''********************************************************************
  239.  
  240.  RecalcPath
  241.  SetDriveStatus
  242.  
  243. CUSTINST:
  244.     ReplaceListItem DRIVETEXT$, 7, SQLROOT$
  245.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", CUSTHELP, HELPPROC$)
  246.  
  247.     IF sz$ = "CONTINUE" THEN
  248.         ''Install only if it will fit.
  249.         FOR i% = 1 TO 4 STEP 1
  250.         IF GetListItem(BIGLIST$, i%) <> "" THEN
  251.         GOSUB TOOBIG
  252.         GOTO CUSTINST
  253.         END IF
  254.         NEXT i%
  255.         UIPop 1
  256.         GOTO CHECKCD
  257.     ELSEIF sz$ = "PATH" THEN
  258.         GOTO GETPATH
  259.     ELSEIF sz$ = "CHK1" THEN
  260.         RecalcOptFiles ISQLW
  261.         SetDriveStatus
  262.         GOTO CUSTINST
  263.     ELSEIF sz$ = "CHK2" THEN
  264.         RecalcOptFiles CLIENTCONFIG
  265.         SetDriveStatus
  266.         GOTO CUSTINST
  267.     ELSEIF sz$ = "CHK3" THEN
  268.         RecalcOptFiles SQLBOOKS
  269.         SetDriveStatus
  270.         GOTO CUSTINST
  271.     ELSEIF sz$ = "CMB1" THEN
  272.         COMBOSEL$ = GetSymbolValue("CMBSEL")
  273.         IF COMBOSEL$ = "1" THEN
  274.           NETLIB$ = "DBNMP3"
  275.         ELSEIF COMBOSEL$ = "2" THEN
  276.           NETLIB$ = "DBMSSPX3"
  277.         ELSEIF COMBOSEL$ = "3" THEN
  278.           NETLIB$ = "DBMSVIN3"
  279.     ELSEIF COMBOSEL$ = "4" THEN
  280.       NETLIB$ = "DBMSSOC3"
  281.         ELSEIF COMBOSEL$ = "5" THEN
  282.           NETLIB$ = "DBMSRPC3"
  283.     END IF
  284.         GOTO CUSTINST
  285.     ELSEIF sz$ = "REACTIVATE" THEN
  286.         RecalcPath
  287.         SetDriveStatus
  288.         GOTO CUSTINST
  289.     ELSE
  290.         GOSUB ASKQUIT
  291.         GOTO CUSTINST
  292.     END IF
  293.  
  294. ''********************************************************************
  295. ''* Create the destination directory.
  296. ''* Note: Size checking is being turned off because we can install
  297. ''* files from any version of our products, but won't necessarily know
  298. ''* the sizes of the files.
  299. ''********************************************************************
  300.  
  301. CHECKCD:
  302.  
  303.    SrcDir$ = GetSymbolValue("STF_SRCDIR")
  304.    I% = DoesFileExist(SrcDir$ + "ISQLW.EXE",0)
  305.    if I% = 1 THEN
  306.       GOTO CREATEDEST
  307.    ELSE
  308.       sz$ = UIStartDlg(CUIDLL$, ISQLWDISKETTE, "FQuitDlgProc", 1100,  HELPPROC$)
  309.       UIPopAll
  310.       ERROR STFQUIT
  311.    END IF
  312.  
  313. CREATEDEST:
  314.     CreateDir DEST$, cmoVital                 ''Create the destination directory
  315.     if GetListItem(CHECKSTATES$, SQLBOOKS) = "ON" THEN
  316.        CreateDir BOOKDEST$, cmoVital                 ''Create the Help files destination directory
  317.     END IF
  318.     i% = SetSizeCheckMode(scmOff)
  319.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  320.  
  321.  
  322. RENAMEOLDDLLS:
  323.     sz$ = UIStartDlg(CUIDLL$, RENAMEOLDDLL, "FCustRenameDLLDlgProc", CUSTHELP, HELPPROC$)
  324.     IF sz$ = "RENAME_ERROR" THEN
  325.       UIPop 1
  326.       GOTO RENAMEERR
  327.     END IF
  328.     UIPop 1
  329.  
  330.     IF szVer$ = "TRUE" THEN
  331.       GOTO COPYDLLFILES
  332.     ENDIF
  333.  
  334. UPDATEAUTOEXEC:
  335.     AddListItem AUTOEXECUPD$, DEST$
  336.     AddListItem AUTOEXECUPD$, "TRUE"
  337.     AddListItem AUTOEXECUPD$, "FALSE"
  338.     sz$ = UIStartDlg(CUIDLL$, AUTOEXECUPDATE, "FCustUpdateAutoexecDlgProc", CUSTHELP, HELPPROC$)
  339.     IF sz$ = "AUTOEXEC_ERROR" THEN
  340.       UIPop 1
  341.       GOTO AUTOEXECERR
  342.     END IF
  343.     UIPop 1
  344.  
  345.  
  346. ''********************************************************************
  347. ''* If installing any of the products, then copy over the base files
  348. ''* which include the DLLs
  349. ''********************************************************************
  350.  
  351. COPYDLLFILES:
  352.     i% = BitmapCntrlInit()                ''Initialize the billboard bitmap
  353.     ClearCopyList                         ''Clear the copy list
  354.  
  355.  
  356.  
  357. ''********************************************************************
  358. ''* Prompt user for the Administrator diskette if they checked the
  359. ''* option to install it.
  360. ''* Run the normal copy disincentive check.  Save the org and name for
  361. ''* use with the other tool installations if they are new one's
  362. ''* NOTE: At some point we may also want to save other copy
  363. ''* disincentive information
  364. ''* Copy the files.
  365. ''********************************************************************
  366.  
  367. ISQLWDISKETTE:                                  ''Prompt for SQL Admin diskette
  368.  ClearCopyList                             ''Clear the copy list
  369.  
  370.      SrcDir$ = GetSymbolValue("STF_SRCDIR")
  371.      AddSectionFilesToCopyList "DblibDlls", SrcDir$, DEST$
  372.      AddSectionFilesToCopyList "SystemDLLs", DEST$, WINSYSDIR$
  373.      AddSectionFilesToCopyList "Readme", SrcDir$, SQLROOT$
  374.  
  375.  IF GetListItem(CHECKSTATES$, CLIENTCONFIG) = "ON" OR  GetListItem(CHECKSTATES$, ISQLW) = "ON" OR GetListItem(CHECKSTATES$, SQLBOOKS) = "ON" THEN
  376.  
  377.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  378.  
  379.     IF GetListItem(CHECKSTATES$, ISQLW) = "ON" THEN
  380.       AddSectionFilesToCopyList "Isqlw", SrcDir$, DEST$
  381.     END IF
  382.     IF GetListItem(CHECKSTATES$, SQLBOOKS) = "ON" THEN
  383.       AddSectionFilesToCopyList "SQLBooks", SrcDir$, BOOKDEST$
  384.       AddSectionFilesToCopyList "SQLBooksEXE", SrcDir$, DEST$
  385.     END IF
  386.  
  387.     IF GetListItem(CHECKSTATES$, CLIENTCONFIG) = "ON" THEN
  388.       AddSectionFilesToCopyList "dbver", SrcDir$, SQLROOT$
  389.     END IF
  390.  
  391.     SetCopyGaugePosition 170, 145
  392.     CopyFilesInCopyList                   ''Copy the files
  393.  END IF
  394.  
  395.  
  396.  
  397.  
  398. ''********************************************************************
  399. ''* Create the Sqltools.ini file.
  400. ''********************************************************************
  401.  
  402. MAKEINIFILE:
  403.  
  404.     CreateIniKeyValue "WIN.INI","SQLMONITOR","DBNMP3","?1:\\?1\pipe\winsql\backup", cmoOverwrite
  405.     CreateIniKeyValue "WIN.INI","SQLMONITOR","DBMSSPX3","?1:?1_mon", cmoOverwrite
  406.     CreateIniKeyValue "WIN.INI","SQLMONITOR","DBMSVIN3","?1@?2:?1_mon?2", cmoOverwrite
  407.     CreateIniKeyValue "WIN.INI","SQLMONITOR","DBMSSOC3","?1,?2:?1,1434", cmoOverwrite
  408.     CreateIniKeyValue "WIN.INI","SQLSERVER","DSQUERY",NETLIB$, cmoOverwrite
  409.     IF GetListItem(CHECKSTATES$, SQLBOOKS) = "ON" THEN
  410.        CreateIniKeyValue SQLBOOKINI$,"SQLBOOKS.Settings","licensed.name","SQL Server Client",cmoNone
  411.        CreateIniKeyValue SQLBOOKINI$,"SQLBOOKS.Settings","licensed.organization","SQL Server Liscensee",cmoNone
  412.        CreateIniKeyValue SQLBOOKINI$,"SQLBOOKS.Settings","license_version","6/1/95",cmoNone
  413.        CreateIniKeyValue SQLBOOKINI$,"SQLBOOKS.Settings","license_last_read","6/1/95",cmoNone
  414.        CreateIniKeyValue SQLBOOKINI$,"series","SQLBOOKS","SQLBOOKS.MVB",cmoOverwrite
  415.        CreateIniKeyValue SQLBOOKINI$,"all titles","SQLBOOKS.MVB","SQLBOOKS.MVB",cmoOverwrite
  416.        CreateIniKeyValue SQLBOOKINI$,"SQLBOOKS.MVB","title","SQL Server Books Online",cmoOverwrite
  417.        CreateIniKeyValue SQLBOOKINI$,"SQLBOOKS.MVB","installtype","Complete",cmoOverwrite
  418.        CreateIniKeyValue SQLBOOKINI$,"SQLBOOKS.MVB","path",BOOKDEST$,cmoOverwrite
  419.        CreateIniKeyValue SQLBOOKINI$,"SQLBOOKS.MVB","Exe",MakePath(DEST$,"infoview.exe"),cmoOverwrite
  420.        CreateIniKeyValue SQLBOOKINI$,"SQLBOOKS.MVB","LocalDir",DEST$,cmoOverwrite
  421.     END IF
  422.  
  423.  
  424.  
  425. ''********************************************************************
  426. ''* Create the Sqltools program manager group.
  427. ''********************************************************************
  428.  
  429. MAKEPROGGROUP:
  430.  
  431.     grp$ = MakePath(WINDOWSDIR$, "sqltools.grp")
  432.     CreateProgmanGroup SQLTOOLS$,grp$,cmoNone
  433.  
  434.     IF GetListItem(CHECKSTATES$, CLIENTCONFIG) = "ON" THEN
  435.        sqldbexe$ = MakePath(SQLROOT$, "w3dbver.exe")
  436.       CreateProgmanItem SQLTOOLS$,"SQL Client Configuration Utility", sqldbexe$, "", cmoOverwrite
  437.     END IF
  438.     IF GetListItem(CHECKSTATES$, ISQLW) = "ON" THEN
  439.        sqldbexe$ = MakePath(DEST$, "isqlw.exe")
  440.       CreateProgmanItem SQLTOOLS$,"ISQL/w", sqldbexe$, "", cmoOverwrite
  441.     END IF
  442.     IF GetListItem(CHECKSTATES$, SQLBOOKS) = "ON" THEN
  443.        sqldbexe$ = MakePath(DEST$, "infoview.exe") + " SQLBOOKS.MVB"
  444.        sqlico$ = MakePath(DEST$, "sqlbooks.ico")
  445.       CreateProgmanItem SQLTOOLS$,"SQL Server Books Online", sqldbexe$,  sqlico$, cmoOverwrite
  446.     END IF
  447.  
  448.     sqlreadme$ = MakePath(SQLROOT$, "readme.txt")
  449.     CreateProgmanItem SQLTOOLS$,"Release Notes", "NOTEPAD.EXE " + sqlreadme$, "", cmoOverwrite
  450.  
  451.     ShowProgManGroup SQLTOOLS$, 1,cmoNone
  452.  
  453. ''********************************************************************
  454. ''* This is the exit routine.
  455. ''* If loaded any stored procedures, first remove the W3DBLIB.DLL and
  456. ''* DBNMP3.DLL files from the windows\system directory.
  457. ''********************************************************************
  458.  
  459. QUIT:
  460.  
  461.     ON ERROR GOTO ERRQUIT
  462.  
  463.     IF ERR = 0 THEN
  464.     dlg% = EXITSUCCESS
  465.     ELSEIF ERR = STFQUIT THEN
  466.     dlg% = EXITQUIT
  467.     ELSE
  468.     dlg% = EXITFAILURE
  469.     END IF
  470.  
  471. QUITL1:
  472.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  473.     IF sz$ = "REACTIVATE" THEN
  474.     GOTO QUITL1
  475.     END IF
  476.     UIPop 1
  477.     END
  478.  
  479. RENAMEERR:
  480.     sz$ = UIStartDlg(CUIDLL$, RENAMEERRDLG, "FInfo0DlgProc", 0, "")
  481.     IF sz$ = "REACTIVATE" THEN
  482.     GOTO RENAMEERR
  483.     END IF
  484.     UIPop 1
  485.     END
  486.  
  487. AUTOEXECERR:
  488.     sz$ = UIStartDlg(CUIDLL$, ASKSKIPAUTOEXEC, "FInfoDlgProc", 0, "")
  489.     IF sz$ = "CONTINUE" THEN
  490.     UIPop 1
  491.     GOTO COPYDLLFILES
  492.     ELSEIF sz$ = "REACTIVATE" THEN
  493.     GOTO AUTOEXECERR
  494.     ELSEIF sz$ = "EXIT" THEN
  495.     UIPop 1
  496.     dlg% = EXITQUIT
  497.     GOTO QUITL1
  498.     END IF
  499.     UIPop 1
  500.     END
  501.  
  502. ERRQUIT:
  503.     i% = DoMsgBox("Setup sources were corrupted, call product support!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  504.     END
  505.  
  506. TOOBIG:
  507.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  508.     IF sz$ = "REACTIVATE" THEN
  509.     RecalcPath
  510.     SetDriveStatus
  511.     GOTO TOOBIG
  512.     END IF
  513.     UIPop 1
  514.     RETURN
  515.  
  516. BADPATH:
  517.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  518.     IF sz$ = "REACTIVATE" THEN
  519.     GOTO BADPATH
  520.     END IF
  521.     UIPop 1
  522.     RETURN
  523.  
  524. LOGONFAILED:
  525.     sz$ = UIStartDlg(CUIDLL$, LOGINFAIL, "FQuitDlgProc", 0, "")
  526.  
  527.     IF sz$ = "EXIT" THEN
  528.     UIPopAll
  529.     ERROR STFQUIT
  530.     ELSEIF sz$ = "REACTIVATE" THEN
  531.     GOTO LOGONFAILED
  532.     ELSE
  533.       UIPop 1
  534.     END IF
  535.     RETURN
  536.  
  537. ASKQUIT:
  538.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  539.  
  540.     IF sz$ = "EXIT" THEN
  541.     UIPopAll
  542.     ERROR STFQUIT
  543.     ELSEIF sz$ = "REACTIVATE" THEN
  544.     GOTO ASKQUIT
  545.     ELSE
  546.     UIPop 1
  547.     END IF
  548.     RETURN
  549.  
  550. '**
  551. '** Purpose:
  552. '**     Adds the specified option files to the copy list.
  553. '** Arguments:
  554. '**     ftype%  - type of files to add, one of the following:
  555. '**             ADMINFILES, OBJFILES, BASEFILES
  556. '** Returns:
  557. '**     none.
  558. '*************************************************************************
  559. SUB AddOptFilesToCopyList (ftype%) STATIC
  560.  
  561.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  562.  
  563.     IF  ftype% = BASEFILES THEN
  564.       AddSectionFilesToCopyList "DblibDlls", SrcDir$, DEST$
  565.     ELSEIF  GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  566.     IF ftype% = ISQLW THEN
  567.       AddSectionFilesToCopyList "Isqlw", SrcDir$, DEST$
  568.     ELSEIF ftype% = CLIENTCONFIG THEN
  569.       AddSectionFilesToCopyList "dbver", SrcDir$, SQLROOT$
  570.     ELSEIF ftype% = SQLBOOKS THEN
  571.       AddSectionFilesToCopyList "SQLBooks", SrcDir$, BOOKDEST$
  572.       AddSectionFilesToCopyList "SQLBooksEXE", SrcDir$, DEST$
  573.     END IF
  574.     SrcDir$ = ""
  575.     END IF
  576. END SUB
  577.  
  578. '**
  579. '** Purpose:
  580. '**     Recalculates disk space for the given option files and sets
  581. '**     the status info symbol "StatusItemsText".
  582. '** Arguments:
  583. '**     ftype% - type of files to add, one of the following:
  584. '**             ADMINFILES, OBJFILES, BASEFILES
  585. '** Returns:
  586. '**     none.
  587. '*************************************************************************
  588. SUB RecalcOptFiles (ftype%) STATIC
  589.     CursorSave% = ShowWaitCursor()
  590.     ClearCopyList
  591.     AddOptFilesToCopyList ftype%
  592.  
  593.     fExtra% = 0
  594.     IF ftype% = ISQLW THEN
  595.     ListSym$ = ISQLWNEEDS$
  596.     IF GetListItem(CHECKSTATES$, ISQLW) = "ON" THEN
  597.     ''Add extra cost to Windows drive for ini/progman, etc.
  598.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  599.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  600.     fExtra% = 1
  601.     END IF
  602.     ELSEIF ftype% = CLIENTCONFIG THEN
  603.     ListSym$ = CLIENTNEEDS$
  604.     IF GetListItem(CHECKSTATES$, CLIENTCONFIG) = "ON" THEN
  605.     ''Add extra cost to Windows drive for ini/progman, etc.
  606.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  607.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  608.     fExtra% = 1
  609.     END IF
  610.     ELSEIF ftype% = SQLBOOKS THEN
  611.     ListSym$ = BOOKNEEDS$
  612.     IF GetListItem(CHECKSTATES$, SQLBOOKS) = "ON" THEN
  613.     ''Add extra cost to Windows drive for ini/progman, etc.
  614.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  615.     ReplaceListItem EXTRACOSTS$, ndrive%, "2048"
  616.     fExtra% = 1
  617.     END IF
  618.     ELSEIF ftype% = BASEFILES THEN
  619.     ListSym$ = BASENEEDS$
  620. '    IF GetListItem(CHECKSTATES$, BASEFILES) = "ON" THEN
  621.     ''Add extra cost to Windows drive for ini/progman, etc.
  622.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  623.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  624.     fExtra% = 1
  625.  '   END IF
  626.     END IF
  627.  
  628.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  629. ''I% = DoMsgBox (STR$(StillNeed&),"still need for " + ListSym$,1)
  630.  
  631.     cost& = 0
  632.     FOR i% = 1 TO 26 STEP 1
  633.     cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  634. ''I% = DoMsgBox (LstSym$,"listsym" + STR$(I%),1)
  635. ''I% = DoMsgBox (EXTRACOST$,"extracost",1)
  636.  
  637.     NEXT i%
  638.  
  639.     if cost& < 0 THEN
  640.       ReplaceListItem STATUSTEXT$, ftype%, "0 K"
  641.     ELSE
  642.       ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  643.     ENDIF
  644.  
  645. ''I% = DoMsgBox (STR$(cost& / 1024) + " K","Status text type = " + STR$(ftype%),1)
  646.  
  647.     IF StillNeed& > 0 THEN
  648.     ReplaceListItem BIGLIST$, ftype%, "YES"
  649.     ELSE
  650.     ReplaceListItem BIGLIST$, ftype%, ""
  651.     END IF
  652.  
  653.     IF fExtra% THEN
  654.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  655.     END IF
  656.     RestoreCursor CursorSave%
  657.     ListSym$ = ""
  658. END SUB
  659.  
  660. '**
  661. '** Purpose:
  662. '**     Recalculates disk space and sets option status info according
  663. '**     to the current destination path.
  664. '** Arguments:
  665. '**     none.
  666. '** Returns:
  667. '**     none.
  668. '*************************************************************************
  669. SUB RecalcPath STATIC
  670.  
  671.     CursorSave% = ShowWaitCursor()
  672.  
  673.     RecalcOptFiles ISQLW
  674.     RecalcOptFiles CLIENTCONFIG
  675.     RecalcOptFiles SQLBOOKS
  676.     RecalcOptFiles BASEFILES
  677.  
  678.     RestoreCursor CursorSave%
  679. END SUB
  680.  
  681.  
  682. '**
  683. '** Purpose:
  684. '**     Sets drive status info according to latest disk space calcs.
  685. '** Arguments:
  686. '**     none.
  687. '** Returns:
  688. '**     none.
  689. '*************************************************************************
  690. SUB SetDriveStatus STATIC
  691.  
  692.     drive$ = MID$(DEST$, 1, 1)
  693.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  694.     cost& =  VAL(GetListItem(ISQLWNEEDS$, ndrive%)) + VAL(GetListItem(CLIENTNEEDS$, ndrive%))+ VAL(GetListItem(BOOKNEEDS$, ndrive%))+ VAL(GetListItem(BASENEEDS$, ndrive%))
  695.     free& = GetFreeSpaceForDrive(drive$)
  696.  
  697.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  698.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  699.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  700.  
  701.     IF drive$ = WINDRIVE$ THEN
  702.     ReplaceListItem DRIVETEXT$, 4, ""
  703.     ReplaceListItem DRIVETEXT$, 5, ""
  704.     ELSE
  705.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  706.     cost& = VAL(GetListItem(ISQLWNEEDS$, ndrive%))  + VAL(GetListItem(CLIENTNEEDS$, ndrive%))+ VAL(GetListItem(BOOKNEEDS$, ndrive%))+ VAL(GetListItem(BASENEEDS$, ndrive%))
  707.     IF cost& = 0 THEN
  708.     ReplaceListItem DRIVETEXT$, 4, ""
  709.     ReplaceListItem DRIVETEXT$, 5, ""
  710.     ELSE
  711.     free& = GetFreeSpaceForDrive(WINDRIVE$)
  712.     ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  713.     ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  714.     END IF
  715.     END IF
  716. END SUB
  717.  
  718. '**
  719. '** Purpose:
  720. '**     Appends a file name to the end of a directory path,
  721. '**     inserting a backslash character as needed.
  722. '** Arguments:
  723. '**     szDir$  - full directory path (with optional ending "\")
  724. '**     szFile$ - filename to append to directory
  725. '** Returns:
  726. '**     Resulting fully qualified path name.
  727. '*************************************************************************
  728. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  729.     IF szDir$ = "" THEN
  730.     MakePath = szFile$
  731.     ELSEIF szFile$ = "" THEN
  732.     MakePath = szDir$
  733.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  734.     MakePath = szDir$ + szFile$
  735.     ELSE
  736.     MakePath = szDir$ + "\" + szFile$
  737.     END IF
  738. END FUNCTION
  739.