home *** CD-ROM | disk | FTP | other *** search
/ software.ibm.com / www6.software.ibm.com.zip / www6.software.ibm.com / software / plugins / wtn142b1.exe / WEBTALK.MST < prev   
Text File  |  1996-02-13  |  13KB  |  458 lines

  1. '**************************************************************************
  2. '*               WebTalker Native Setup - Moshe Flam
  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 ASKQUIT       = 200
  12. CONST DESTPATH      = 300
  13. CONST EXITFAILURE   = 400
  14. CONST EXITQUIT      = 600
  15. CONST EXITSUCCESS   = 700
  16. CONST OPTIONS       = 800
  17. CONST APPHELP       = 900
  18. CONST CUSTINST      = 6200
  19. CONST TOOBIG        = 6300
  20. CONST BADPATH       = 6400 
  21. CONST CDCONFIRMINFO = 7300
  22. CONST CDGETNAMEORG  = 7500
  23.  
  24. ''Bitmap ID
  25. CONST LOGO         = 1
  26.  
  27. ''File Types
  28. CONST APPFILES     = 1
  29. CONST WINFILES     = 2
  30. 'CONST QUIET_INSTALL = 2
  31. CONST SOUNDTEST    = 3
  32.  
  33.  
  34. GLOBAL APPNAME$     ''Application name.
  35. GLOBAL APPPROG$     ''Applications program name.
  36. GLOBAL APPHLP$      ''Applications help name.
  37. GLOBAL APPSHORT$    ''Applications short name.
  38. GLOBAL DEST$        ''Application destination directory.
  39. GLOBAL WINDRIVE$    ''Windows drive letter.
  40. 'MFLAM GLOBAL WINFILES$    ''files to be installed in windows directory
  41. 'MFLAM GLOBAL SYSFILES$    ''files to be installed in system directory.
  42.  
  43. ''CustInst list symbol names
  44. GLOBAL APPNEEDS$   ''Application filesize needs
  45. ''rem GLOBAL WINDIRNEEDS$   ''Windows directory needs
  46. ''rem GLOBAL SYSDIRNEEDS$   ''Windows\system directory needs
  47. GLOBAL EXTRACOSTS&    ''Extra costs
  48. GLOBAL BIGLIST$       ''List of option files cost calc results (boolean)
  49.  
  50. ''Dialog list symbol names
  51. GLOBAL CHECKSTATES$
  52. GLOBAL STATUSTEXT$
  53. GLOBAL DRIVETEXT$
  54.  
  55.  
  56. DECLARE SUB RecalcOptFiles (ftype%)
  57. DECLARE SUB RecalcPath
  58. DECLARE SUB SetDriveStatus
  59. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  60. DECLARE SUB _PlayMciFile LIB "mscuistf.dll" (szFile$)
  61. DECLARE SUB _StopMciFile LIB "mscuistf.dll" (szFile$)
  62.  
  63. INIT:
  64.     APPNAME$  = "The IBM WebTalker" 
  65.     APPPROG$  = "SDP32"
  66.     APPHLP$   = "SDP"
  67.     APPSHORT$ = "WebTalk"
  68.  
  69.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  70.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  71.  
  72.     SetBitmap CUIDLL$, LOGO
  73.     SetTitle APPNAME$ + " Setup"
  74.  
  75.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  76.     IF szInf$ = "" THEN
  77.         szInf$ = GetSymbolValue("STF_CWDDIR") + APPSHORT$ + ".INF"
  78.     END IF
  79.     ReadInfFile szInf$
  80.  
  81.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  82.     DEST$    = WINDRIVE$ + ":\" + APPSHORT$
  83.  
  84.     ''CustInst list symbols
  85.     CHECKSTATES$ = "CheckItemsState"
  86.     STATUSTEXT$  = "StatusItemsText"
  87.     DRIVETEXT$   = "DriveStatusText"
  88.     FOR i% = 1 TO 3 STEP 1
  89.         AddListItem CHECKSTATES$, "ON"
  90.     NEXT i%
  91.     FOR i% = 1 TO 3 STEP 1
  92.         AddListItem STATUSTEXT$, ""
  93.     NEXT i%
  94.     FOR i% = 1 TO 7 STEP 1
  95.         AddListItem DRIVETEXT$, ""
  96.     NEXT i%
  97.     ReplaceListItem DRIVETEXT$, 7, DEST$
  98.  
  99.     ''Disk cost list symbols
  100.     APPNEEDS$   = "AppNeeds"
  101.     BIGLIST$    = "BigList"
  102.     FOR i% = 1 TO 3 STEP 1
  103.         AddListItem BIGLIST$, ""
  104.     NEXT i%
  105.  
  106.     RecalcPath
  107.     SetDriveStatus
  108.  
  109. 'MF TESTING THE MIDI... HOPE THIS WORKS!
  110. 'MFLAM    szMidi$ = MakePath(GetSymbolValue("STF_SRCDIR"),"WEBTALK.MID")
  111. 'MFLAM    _PlayMciFile szMidi$
  112. 'MFLAM    szMidi$ = ""
  113.  
  114. '$IFDEF DEBUG
  115.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  116. '$ENDIF ''DEBUG
  117.  
  118.  
  119.  
  120. CUSTINST:
  121.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  122.     IF sz$ = "CONTINUE" THEN
  123.         ''Install only if it will fit.
  124.         FOR i% = 1 TO 3 STEP 1
  125.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  126.                 GOSUB TOOBIG
  127.                 GOTO CUSTINST
  128.             END IF
  129.         NEXT i%
  130.         UIPop 1
  131. 'MFLAM: next line if you want email
  132. 'MFLAM:        GOSUB EMAIL
  133.         GOTO INSTALL
  134.     ELSEIF sz$ = "PATH" THEN
  135.         GOTO GETPATH
  136.     ELSEIF sz$ = "CHK1" THEN
  137.         GOTO CUSTINST
  138.     ELSEIF sz$ = "CHK2" THEN
  139.         GOTO CUSTINST
  140.     ELSEIF sz$ = "CHK3" THEN
  141.         GOTO CUSTINST
  142.     ELSEIF sz$ = "BTN3" THEN
  143.         GOTO SOUNDTEST
  144.     ELSEIF sz$ = "REACTIVATE" THEN
  145.         GOTO CUSTINST
  146.     ELSE
  147.         GOSUB ASKQUIT
  148.         GOTO CUSTINST
  149.     END IF
  150.  
  151.  
  152.  
  153. INSTALL:
  154. 'MFLAM    _PlayMciFile MakePath(GetSymbolValue("STF_SRCDIR"),"ifu.wav")
  155.     ClearCopyList
  156.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  157.     AddSectionFilesToCopyList "WinFiles", SrcDir$, GetWindowsDir
  158.     AddSectionFilesToCopyList "SysFiles", SrcDir$, MakePath(GetWindowsDir,"system\")
  159.     AddSectionFilesToCopyList "AppFiles", SrcDir$, DEST$
  160.     SrcDir$ = ""
  161. 'MFLAM    _PlayMciFile MakePath(GetSymbolValue("STF_SRCDIR"),"anytime.wav")
  162.  
  163.     CreateDir DEST$, cmoNone
  164. 'MFLAM    _PlayMciFile MakePath(GetSymbolValue("STF_SRCDIR"),"anyplace.wav")
  165.     CopyFilesInCopyList
  166.  
  167.  
  168.     CreateProgmanGroup APPNAME$, "", cmoNone
  169.     ShowProgmanGroup  APPNAME$, 1, cmoNone
  170.     CreateProgmanItem APPNAME$, APPNAME$, MakePath(DEST$,APPPROG$ + ".exe"), "", cmoOverwrite
  171.     CreateProgmanItem APPNAME$, APPNAME$ + " Help", MakePath(DEST$,APPHLP$ + ".hlp"), "", cmoOverwrite
  172.  
  173.  
  174. QUIT:
  175.     ON ERROR GOTO ERRQUIT
  176.  
  177.     IF ERR = 0 THEN
  178. 'MFLAM    _PlayMciFile MakePath(GetSymbolValue("STF_SRCDIR"),"ifu.wav")
  179.         dlg% = EXITSUCCESS
  180.     ELSEIF ERR = STFQUIT THEN
  181.         dlg% = EXITQUIT
  182.     ELSE
  183.         dlg% = EXITFAILURE
  184.     END IF
  185. QUITL1:
  186.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  187.     IF sz$ = "REACTIVATE" THEN
  188.         GOTO QUITL1
  189.     END IF
  190.     UIPop 1
  191.  
  192.     END
  193.  
  194. ERRQUIT:
  195.     i% = DoMsgBox("Setup sources were corrupted, email mflam@VNET.IBM.COM", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  196.     END
  197.  
  198.  
  199.  
  200. GETPATH:
  201.     SetSymbolValue "EditTextIn", DEST$
  202.     SetSymbolValue "EditFocus", "END"
  203. GETPATHL1:
  204.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  205.  
  206.     IF sz$ = "CONTINUE" THEN
  207.         olddest$ = DEST$
  208.         DEST$ = GetSymbolValue("EditTextOut")
  209.  
  210.         ''Validate new path.
  211.         IF IsDirWritable(DEST$) = 0 THEN
  212.             GOSUB BADPATH
  213.             GOTO GETPATHL1
  214.         END IF
  215.         UIPop 1
  216.  
  217.         ''Truncate display if too long.
  218.         IF LEN(DEST$) > 23 THEN
  219.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  220.         ELSE
  221.             ReplaceListItem DRIVETEXT$, 7, DEST$
  222.         END IF
  223.  
  224.         ''Recalc if path changed.
  225.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  226.             RecalcPath
  227.             SetDriveStatus
  228.         END IF
  229.  
  230.         olddest$ = ""
  231.         GOTO CUSTINST
  232.     ELSEIF sz$ = "REACTIVATE" THEN
  233.         RecalcPath
  234.         SetDriveStatus
  235.         GOTO GETPATHL1
  236.     ELSEIF sz$ = "EXIT" THEN
  237.         GOSUB ASKQUIT
  238.         GOTO GETPATHL1
  239.     ELSE
  240.         UIPop 1
  241.         GOTO CUSTINST
  242.     END IF
  243.  
  244.  
  245. 'QUIET_INSTALL:
  246. WINFILES:
  247. OPT1L1:
  248.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  249. 'mf    newopt$ = GetSymbolValue("ButtonChecked")
  250. 'MFLAM    szMidi$ = MakePath(GetSymbolValue("STF_SRCDIR"),"WEBTALK.MID")
  251. 'MFLAM    _StopMciFile szMidi$
  252. 'MFLAM    szMidi$ = ""
  253.  
  254.     IF sz$ = "CONTINUE" THEN
  255.         UIPop 1
  256.         GOTO CUSTINST
  257.     ELSEIF sz$ = "REACTIVATE" THEN
  258.         GOTO OPT1L1
  259.     ELSEIF sz$ = "EXIT" THEN
  260.         GOSUB ASKQUIT
  261.         GOTO OPT1L1
  262.     ELSE
  263.         UIPop 1
  264.         GOTO CUSTINST
  265.     END IF
  266.  
  267.  
  268.  
  269. SOUNDTEST:
  270. OPT2L1:
  271.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  272.  
  273.     IF sz$ = "CONTINUE" THEN
  274.         UIPop 1
  275.         GOTO CUSTINST
  276.     ELSEIF sz$ = "REACTIVATE" THEN
  277.         GOTO OPT2L1
  278.     ELSEIF sz$ = "EXIT" THEN
  279.         GOSUB ASKQUIT
  280.         GOTO OPT2L1
  281.     ELSE
  282.         UIPop 1
  283.         GOTO CUSTINST
  284.     END IF
  285.  
  286. EMAIL:
  287.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  288.     IF sz$ = "EXIT" THEN
  289.         GOSUB ASKQUIT 
  290.     END IF
  291.     ini$ = MakePath(DEST$, APPPROG$ + ".INI")
  292.     CreateIniKeyValue ini$, "Section 1", "Key 1", "Value 1" , cmoNone
  293.     CreateIniKeyValue ini$, "Section 2", "Key 2", "Value 2" , cmoNone
  294.     CreateIniKeyValue ini$, "Section 3", "Key 3", "Value 3" , cmoNone
  295.     ini$ = ""
  296.     
  297.     UIPop 1
  298.     RETURN
  299.     
  300.  
  301. TOOBIG:
  302.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  303.     IF sz$ = "REACTIVATE" THEN
  304.         RecalcPath
  305.         SetDriveStatus
  306.         GOTO TOOBIG
  307.     END IF
  308.     UIPop 1
  309.     RETURN
  310.  
  311.  
  312.  
  313. BADPATH:
  314.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  315.     IF sz$ = "REACTIVATE" THEN
  316.         RecalcPath
  317.         SetDriveStatus
  318.         GOTO BADPATH
  319.     END IF
  320.     UIPop 1
  321.     RETURN
  322.  
  323.  
  324.  
  325. ASKQUIT:
  326.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  327.  
  328.     IF sz$ = "EXIT" THEN
  329.         UIPopAll
  330.         ERROR STFQUIT
  331.     ELSEIF sz$ = "REACTIVATE" THEN
  332.         GOTO ASKQUIT
  333.     ELSE
  334.         UIPop 1
  335.     END IF
  336.     RETURN
  337.  
  338. '**
  339. '** Purpose:
  340. '**     Recalculates disk space and sets option status info according
  341. '**     to the current destination path.
  342. '** Arguments:
  343. '**     none.
  344. '** Returns:
  345. '**     none.
  346. '*************************************************************************
  347. SUB RecalcPath STATIC
  348.  
  349.  
  350. ''Rem was:    RecalcOptFiles 
  351.     CursorSave% = ShowWaitCursor()
  352.     ClearCopyList
  353.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  354.     AddSectionFilesToCopyList "AppFiles", SrcDir$, DEST$
  355.     AddSectionFilesToCopyList "WinFiles", SrcDir$, GetWindowsDir
  356.     AddSectionFilesToCopyList "SysFiles", SrcDir$, MakePath(GetWindowsDir,"system\")
  357. ''    SrcDir$ = ""
  358.  
  359.     ''Add extra cost to Windows drive for ini/progman, etc.
  360.     nWinDrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  361.     EXTRACOSTS& = 10240
  362.  
  363.     StillNeed& = GetCopyListCost("", APPNEEDS$, "")
  364.  
  365.     cost& = 0
  366.     FOR i% = 1 TO 26 STEP 1
  367.         cost&  = cost& + VAL(GetListItem(APPNEEDS$, i%))
  368.     NEXT i%
  369.  
  370.     IF StillNeed& > 0 THEN
  371.         ReplaceListItem BIGLIST$, APPFILES, "YES"
  372.     ELSE
  373.         ReplaceListItem BIGLIST$, APPFILES, ""
  374.     END IF
  375.  
  376.     RestoreCursor CursorSave%
  377. END SUB
  378.  
  379.  
  380. '**
  381. '** Purpose:
  382. '**     Sets drive status info according to latest disk space calcs.
  383. '** Arguments:
  384. '**     none.
  385. '** Returns:
  386. '**     none.
  387. '*************************************************************************
  388. SUB SetDriveStatus STATIC
  389.  
  390.     CursorSave% = ShowWaitCursor()
  391.     ClearCopyList
  392.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  393.     AddSectionFilesToCopyList "WinFiles", SrcDir$, GetWindowsDir
  394.     AddSectionFilesToCopyList "SysFiles", SrcDir$, MakePath(GetWindowsDir,"system\")
  395.     AddSectionFilesToCopyList "AppFiles", SrcDir$, DEST$
  396. ''    SrcDir$ = ""
  397.  
  398.     StillNeed& = GetCopyListCost("", APPNEEDS$, "")
  399.  
  400.     drive$ = MID$(DEST$, 1, 1)
  401.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  402. ''REM: oldConst:       cost& = 2505236 + 77784
  403.                            
  404.     cost& = 0                       
  405.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + EXTRACOSTS&
  406.     free& = GetFreeSpaceForDrive(drive$)
  407.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  408.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  409.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  410.  
  411.     RestoreCursor CursorSave%
  412.  
  413.     IF drive$ = WINDRIVE$ THEN
  414.         ReplaceListItem DRIVETEXT$, 4, ""
  415.         ReplaceListItem DRIVETEXT$, 5, ""
  416.         ReplaceListItem DRIVETEXT$, 6, ""
  417.     ELSE
  418.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  419.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + EXTRACOSTS&
  420.     ''mflam: sysfiles are ctl3d=25104 and d2hstuff=52096 and inistuff=584
  421.     ''rem  : cost& = 25104 + 52096 + 584
  422.         IF cost& = 0 THEN
  423.             ReplaceListItem DRIVETEXT$, 4, ""
  424.             ReplaceListItem DRIVETEXT$, 5, ""
  425.             ReplaceListItem DRIVETEXT$, 6, ""
  426.         ELSE
  427.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  428.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  429.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  430.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  431.         END IF
  432.     END IF
  433. END SUB
  434.  
  435.  
  436. '**
  437. '** Purpose:
  438. '**     Appends a file name to the end of a directory path,
  439. '**     inserting a backslash character as needed.
  440. '** Arguments:
  441. '**     szDir$  - full directory path (with optional ending "\")
  442. '**     szFile$ - filename to append to directory
  443. '** Returns:
  444. '**     Resulting fully qualified path name.
  445. '*************************************************************************
  446. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  447.     IF szDir$ = "" THEN
  448.         MakePath = szFile$
  449.     ELSEIF szFile$ = "" THEN
  450.         MakePath = szDir$
  451.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  452.         MakePath = szDir$ + szFile$
  453.     ELSE
  454.         MakePath = szDir$ + "\" + szFile$
  455.     END IF
  456. END FUNCTION
  457.  
  458.