home *** CD-ROM | disk | FTP | other *** search
/ Windows NT Super Tune-Up Kit / PIE-WindowsNTSuperTuneUpKit-1997.iso / BNCHMARK / SVRBENCH / NW41 / NW41CO.EXE / SB30.MS_ / SB30.MS
Text File  |  1996-01-05  |  8KB  |  294 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST EXITRESTART   = 750
  18. CONST OPTIONS       = 800
  19. CONST APPHELP       = 900
  20. CONST BADPATH1      = 6400
  21. CONST BADPATH2      = 6401
  22. CONST BADPATH3      = 6402
  23. CONST BADPATH4        = 6403
  24.  
  25. CONST TRUE        = -1
  26. CONST FALSE        = 0
  27.  
  28. ''Bitmap ID
  29. CONST LOGO = 1
  30.  
  31. CONST WS_VISIBLE=&H10000000
  32. CONST WS_BORDER=&H00800000
  33. CONST WS_CLIPCHILDREN=&H02000000
  34. CONST GWL_STYLE=-16
  35. CONST SW_SHOWMAXIMIZED=3
  36.  
  37. GLOBAL DEST$        ''Default destination directory.
  38. GLOBAL DEST2$       ''Current Port Directory.
  39. GLOBAL OPTCUR$      ''Option selection from option dialog.
  40. GLOBAL DestDrive$
  41. GLOBAL PRODUCTNAME$
  42. GLOBAL WinDrive$
  43. GLOBAL SrcDir$
  44.  
  45. DECLARE SUB Install
  46. DECLARE FUNCTION CheckSpace () AS INTEGER
  47. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  48.  
  49. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  50. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%,offset%,style&) AS LONG
  51.  
  52. INIT:
  53.     PRODUCTNAME$ = "ServerBench 3.0 Controller for NetWare"
  54.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  55.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  56.  
  57.     SetBitmap CUIDLL$, LOGO
  58.     SetTitle PRODUCTNAME$ + " Setup"
  59.  
  60.     hWnd% = HwndFrame()
  61.     i1& = SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  62.     j1% = ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  63.  
  64.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  65.  
  66.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  67.     IF szInf$ = "" THEN
  68.         szInf$ = MakePath(GetSymbolValue("STF_CWDDIR"),"sb30.inf")
  69.     END IF
  70.     ReadInfFile szInf$
  71.  
  72.     OPTCUR$ = "1"
  73.     DEST$ = "C:\SB30"
  74.     IF SrcDir$ = DEST$ THEN
  75.         DEST$ = "C:\SVRBENCH"
  76.     END IF
  77.  
  78.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  79.     IF IsDriveValid(WinDrive$) = 0 THEN
  80.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  81.         GOTO QUIT
  82.     END IF
  83.  
  84. WELCOME:
  85.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  86.     IF sz$ = "CONTINUE" THEN
  87.         UIPop 1
  88.     ELSE
  89.         GOSUB ASKQUIT
  90.         GOTO WELCOME
  91.     END IF
  92.  
  93. GETPATH:
  94.     SetSymbolValue "EditTextIn", DEST$
  95.     SetSymbolValue "EditFocus", "END"
  96. GETPATHL1:
  97.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  98.     DEST$ = GetSymbolValue("EditTextOut")
  99.  
  100.         DEST2$=DEST$
  101.         DEST$ =DEST2$ + "\nw41"
  102.  
  103.     IF sz$ = "CONTINUE" THEN
  104.  
  105.         IF MakePath(SrcDir$,"") = MakePath(DEST$,"") THEN
  106.             dlg% = BADPATH1
  107.             GOSUB BADPATH
  108.             GOTO GETPATHL1
  109.         END IF
  110.  
  111.     DestDrive$ = MID$(DEST$, 1, 1)
  112.  
  113.     IF IsDriveValid(DestDrive$) = 0 THEN
  114.             dlg% = BADPATH2
  115.             GOSUB BADPATH
  116.           GOTO GETPATHL1
  117.     END IF
  118.         IF IsDirWritable(DEST$) = 0 THEN
  119.             dlg% = BADPATH3
  120.         GOSUB BADPATH
  121.         GOTO GETPATHL1
  122.     END IF
  123.  
  124.     UIPop 1
  125.  
  126.     ELSEIF sz$ = "REACTIVATE" THEN
  127.         GOTO GETPATHL1
  128.     ELSEIF sz$ = "BACK" THEN
  129.         GOTO GETPATHL1
  130.     ELSE
  131.         GOSUB ASKQUIT
  132.         GOTO GETPATH
  133.     END IF
  134.  
  135.     IF CheckSpace() = FALSE THEN
  136.     GOTO GETPATH
  137.     END IF
  138.  
  139.     Install
  140.  
  141.  
  142. QUIT:
  143.     ON ERROR GOTO ERRQUIT
  144.  
  145.     IF ERR = 0 THEN
  146.         IF RestartListEmpty() = 0 THEN
  147.         dlg% = EXITRESTART
  148.         ELSE
  149.             dlg% = EXITSUCCESS
  150.         END IF
  151.     ELSEIF ERR = STFQUIT THEN
  152.         dlg% = EXITQUIT
  153.     ELSE
  154.         dlg% = EXITFAILURE
  155.     END IF
  156. QUITL1:
  157.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  158.     IF sz$ = "REACTIVATE" THEN
  159.         GOTO QUITL1
  160.     END IF
  161.     UIPop 1
  162.  
  163.     IF dlg% = EXITRESTART THEN
  164.     j% = ExitExecRestart()
  165.     END IF
  166.     END
  167.  
  168. ERRQUIT:
  169.     i% = DoMsgBox("Setup sources were corrupted, call ZDBOp!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  170.     END
  171.  
  172.  
  173.  
  174. BADPATH:
  175.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  176.     IF sz$ = "REACTIVATE" THEN
  177.         GOTO BADPATH
  178.     END IF
  179.     UIPop 1
  180.     RETURN
  181.  
  182.  
  183.  
  184. ASKQUIT:
  185.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  186.  
  187.     IF sz$ = "EXIT" THEN
  188.         UIPopAll
  189.         ERROR STFQUIT
  190.     ELSEIF sz$ = "REACTIVATE" THEN
  191.         GOTO ASKQUIT
  192.     ELSE
  193.         UIPop 1
  194.     END IF
  195.     RETURN
  196.  
  197.  
  198.  
  199. '**
  200. '** Purpose:
  201. '**     Builds the copy list and performs all installation operations.
  202. '** Arguments:
  203. '**     none.
  204. '** Returns:
  205. '**     none.
  206. '*************************************************************************
  207. STATIC FUNCTION CheckSpace() AS INTEGER
  208.  
  209.     ClearCopyList
  210.  
  211.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  212.     AddSectionFilesToCopyList "Suites", SrcDir$, MakePath(DEST$,"SUITES")
  213.     AddSectionFilesToCopyList "Docs", SrcDir$, MakePath(DEST$,"DOCS")
  214.  
  215.     FOR i% = 1 TO 26 STEP 1
  216.         AddListItem "EXTRA", "0"
  217.     NEXT i%
  218.  
  219.     wd% = ASC(ucase$(WinDrive$)) - ASC("A") + 1
  220.     dd% = ASC(ucase$(DestDrive$)) - ASC("A") + 1
  221.  
  222.     ReplaceListItem "EXTRA", wd%, "10240"
  223.  
  224.     spaceNeeded& = GetCopyListCost("EXTRA","COST","NEEDED")
  225.     IF spaceNeeded& = 0 THEN
  226.     CheckSpace = TRUE
  227.     ELSE
  228.     CheckSpace = FALSE
  229.     w& = VAL(GetListItem("NEEDED",wd%))
  230.     d& = VAL(GetListItem("NEEDED",dd%))
  231.     m$ = "There is not enough disk space to install ServerBench."
  232.     IF d& > 0 THEN
  233.         m$ = m$ + CHR$(10) + CHR$(10)
  234.         m$ = m$ + "You need an additional " + STR$((d&+999)/1000) + " kilobytes on drive " + DestDrive$ + "."
  235.             m$ = m$ + " Choose another installation drive, or free additional space on drive " + DestDrive$ + "."
  236.         END IF
  237.     IF (w& > 0) AND (wd% <> dd%) THEN
  238.         m$ = m$ + CHR$(10) + CHR$(10)
  239.         m$ = m$ + "You must free an additional " + STR$((w&+999)/1000) + " kilobytes on drive " + WinDrive$
  240.             m$ = m$ + " before installing ServerBench."
  241.     END IF
  242.     i% = DoMsgBox(m$,"Insufficient Disk Space",MB_TASKMODAL+MB_OK+MB_ICONHAND)
  243.     END IF
  244.  
  245.  
  246. END FUNCTION
  247.  
  248. STATIC SUB Install
  249.  
  250.     CreateDir DEST$, cmoNone
  251.     CreateDir MakePath(DEST$,"DOCS"), cmoNone
  252.     CreateDir MakePath(DEST$,"RESULTS"), cmoNone
  253.     CreateDir MakePath(DEST$,"SUITES"), cmoNone
  254.  
  255.     SetRestartDir DEST$
  256.  
  257.     CopyFilesInCopyList
  258.  
  259.     CreateProgmanGroup "Ziff-Davis Benchmarks", "", cmoNone
  260.     ShowProgmanGroup  "Ziff-Davis Benchmarks", 1, cmoNone
  261.     CreateProgmanItem "Ziff-Davis Benchmarks", PRODUCTNAME$, MakePath(DEST$,"sb30a.exe"), "", cmoOverwrit
  262. '    CreateProgmanItem "Ziff-Davis Benchmarks", "Readme", MakePath(DEST$,"readme.txt"), "", cmoOverwrit
  263.  
  264. END SUB
  265.  
  266.  
  267.  
  268. '**
  269. '** Purpose:
  270. '**     Appends a file name to the end of a directory path,
  271. '**     inserting a backslash character as needed.
  272. '** Arguments:
  273. '**     szDir$  - full directory path (with optional ending "\")
  274. '**     szFile$ - filename to append to directory
  275. '** Returns:
  276. '**     Resulting fully qualified path name.
  277. '*************************************************************************
  278. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  279.     IF szDir$ = "" THEN
  280.         MakePath = szFile$
  281.     ELSEIF szFile$ = "" THEN
  282.     IF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  283.         MakePath = MID$(szDir$, 1, LEN(szDir$)-1)
  284.     ELSE
  285.         MakePath = szDir$
  286.     END IF
  287.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  288.         MakePath = szDir$ + szFile$
  289.     ELSE
  290.         MakePath = szDir$ + "\" + szFile$
  291.     END IF
  292. END FUNCTION
  293.  
  294.