home *** CD-ROM | disk | FTP | other *** search
/ software.ibm.com / www6.software.ibm.com.zip / www6.software.ibm.com / software / plugins / icm120g1.exe / ICPHONE.MST < prev    next >
Text File  |  1996-04-01  |  14KB  |  472 lines

  1. '**************************************************************************
  2. '*   ICPhone Mwave Setup - With Uninstall code disabled - 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, used for icons.
  36. GLOBAL APPHLP$      ''Applications helpfile name, used for icons.
  37. GLOBAL APPSHORT$    ''Applications short name, used for directory.
  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$  = "IBM ICPhone" 
  65.     APPPROG$  = "SDP"
  66.     APPSHORT$ = "ICPhone"
  67.     APPHLP$   = "SDP_EN"
  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"),"ICPhone.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"),"ICPhone.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. UNINSTALL:
  324. 'THESE SHOULD BE DECLARED IN HEADER:
  325. ' declare function pmDeleteGroup LIB "pmdde.dll" (Group$) as integer
  326. ' declare function pmShowGroup LIB "pmdde.dll" (Group$, Cmd%) as integer
  327. ' declare function pmDeleteItem LIB "pmdde.dll" (Group$) as integer
  328.  
  329.  
  330. '   RemoveFile( MakePath(DEST$) + "*.*" , cmoForce)
  331. '   RemoveDir( MakePath(DEST$) )
  332. '   RemoveFile( GetWindowsDir + APPPROG$ + "*.ini", cmoForce)
  333. '   ShowProgmanGroup  APPNAME$, 1, cmoNone
  334. '   pmDeleteItem (APPNAME$)
  335. '   pmDeleteItem (APPNAME$ + " Help")
  336. '   pmDeleteGroup (APPNAME$)
  337.  
  338.  
  339. ASKQUIT:
  340.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  341.  
  342.     IF sz$ = "EXIT" THEN
  343.         UIPopAll
  344.         ERROR STFQUIT
  345.     ELSEIF sz$ = "REACTIVATE" THEN
  346.         GOTO ASKQUIT
  347.     ELSE
  348.         UIPop 1
  349.     END IF
  350.     RETURN
  351.  
  352. '**
  353. '** Purpose:
  354. '**     Recalculates disk space and sets option status info according
  355. '**     to the current destination path.
  356. '** Arguments:
  357. '**     none.
  358. '** Returns:
  359. '**     none.
  360. '*************************************************************************
  361. SUB RecalcPath STATIC
  362.  
  363.  
  364. ''Rem was:    RecalcOptFiles 
  365.     CursorSave% = ShowWaitCursor()
  366.     ClearCopyList
  367.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  368.     AddSectionFilesToCopyList "AppFiles", SrcDir$, DEST$
  369.     AddSectionFilesToCopyList "WinFiles", SrcDir$, GetWindowsDir
  370.     AddSectionFilesToCopyList "SysFiles", SrcDir$, MakePath(GetWindowsDir,"system\")
  371. ''    SrcDir$ = ""
  372.  
  373.     ''Add extra cost to Windows drive for ini/progman, etc.
  374.     nWinDrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  375.     EXTRACOSTS& = 10240
  376.  
  377.     StillNeed& = GetCopyListCost("", APPNEEDS$, "")
  378.  
  379.     cost& = 0
  380.     FOR i% = 1 TO 26 STEP 1
  381.         cost&  = cost& + VAL(GetListItem(APPNEEDS$, i%))
  382.     NEXT i%
  383.  
  384.     IF StillNeed& > 0 THEN
  385.         ReplaceListItem BIGLIST$, APPFILES, "YES"
  386.     ELSE
  387.         ReplaceListItem BIGLIST$, APPFILES, ""
  388.     END IF
  389.  
  390.     RestoreCursor CursorSave%
  391. END SUB
  392.  
  393.  
  394. '**
  395. '** Purpose:
  396. '**     Sets drive status info according to latest disk space calcs.
  397. '** Arguments:
  398. '**     none.
  399. '** Returns:
  400. '**     none.
  401. '*************************************************************************
  402. SUB SetDriveStatus STATIC
  403.  
  404.     CursorSave% = ShowWaitCursor()
  405.     ClearCopyList
  406.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  407.     AddSectionFilesToCopyList "WinFiles", SrcDir$, GetWindowsDir
  408.     AddSectionFilesToCopyList "SysFiles", SrcDir$, MakePath(GetWindowsDir,"system\")
  409.     AddSectionFilesToCopyList "AppFiles", SrcDir$, DEST$
  410. ''    SrcDir$ = ""
  411.  
  412.     StillNeed& = GetCopyListCost("", APPNEEDS$, "")
  413.  
  414.     drive$ = MID$(DEST$, 1, 1)
  415.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  416. ''REM: oldConst:       cost& = 2505236 + 77784
  417.                            
  418.     cost& = 0                       
  419.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + EXTRACOSTS&
  420.     free& = GetFreeSpaceForDrive(drive$)
  421.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  422.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  423.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  424.  
  425.     RestoreCursor CursorSave%
  426.  
  427.     IF drive$ = WINDRIVE$ THEN
  428.         ReplaceListItem DRIVETEXT$, 4, ""
  429.         ReplaceListItem DRIVETEXT$, 5, ""
  430.         ReplaceListItem DRIVETEXT$, 6, ""
  431.     ELSE
  432.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  433.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + EXTRACOSTS&
  434.     ''mflam: sysfiles are ctl3d=25104 and d2hstuff=52096 and inistuff=584
  435.     ''rem  : cost& = 25104 + 52096 + 584
  436.         IF cost& = 0 THEN
  437.             ReplaceListItem DRIVETEXT$, 4, ""
  438.             ReplaceListItem DRIVETEXT$, 5, ""
  439.             ReplaceListItem DRIVETEXT$, 6, ""
  440.         ELSE
  441.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  442.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  443.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  444.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  445.         END IF
  446.     END IF
  447. END SUB
  448.  
  449.  
  450. '**
  451. '** Purpose:
  452. '**     Appends a file name to the end of a directory path,
  453. '**     inserting a backslash character as needed.
  454. '** Arguments:
  455. '**     szDir$  - full directory path (with optional ending "\")
  456. '**     szFile$ - filename to append to directory
  457. '** Returns:
  458. '**     Resulting fully qualified path name.
  459. '*************************************************************************
  460. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  461.     IF szDir$ = "" THEN
  462.         MakePath = szFile$
  463.     ELSEIF szFile$ = "" THEN
  464.         MakePath = szDir$
  465.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  466.         MakePath = szDir$ + szFile$
  467.     ELSE
  468.         MakePath = szDir$ + "\" + szFile$
  469.     END IF
  470. END FUNCTION
  471.  
  472.