home *** CD-ROM | disk | FTP | other *** search
/ Behind the Mask / BTMASK.iso / btm.mst < prev    next >
Text File  |  1995-03-30  |  26KB  |  819 lines

  1. '**************************************************************************
  2. '*                       Behind the Mask setup
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.                                  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. rem String id's
  11. rem -----------
  12. rem Note: If MSSETUP were really smart, we could use the
  13. rem #defines in DIALOGS.HR. Instead, we must manually
  14. rem keep them in step
  15. rem ----------------------------------------------------
  16.     CONST STR_PLAYER    = 1024         ''Movie Player
  17.     CONST STR_VIEWER    = 1025         ''Picture Viewer
  18.     CONST STR_GROUP     = 1026         ''Program Manager group
  19.     CONST STR_TITLE     = 1027         ''Installer Title
  20.     CONST STR_MSG1      = 1028         ''Version error message part 1
  21.     CONST STR_MSG2      = 1029         ''Version error message part 2
  22.     CONST STR_MSG3      = 1030         ''Remove obsolete files?
  23.     CONST STR_WARNING   = 1031         ''Warning
  24.     CONST STR_HELP      = 1032         ''Help
  25.     CONST STR_SAMPLE    = 1033         ''Sample movie
  26.  
  27. rem Dialog ID's
  28. rem -----------
  29. CONST WELCOME      = 100
  30. CONST ASKQUIT      = 200
  31. CONST DESTPATH     = 300
  32. CONST EXITFAILURE  = 400
  33. CONST EXITQUIT     = 600
  34. CONST EXITSUCCESS  = 700
  35. CONST OPTIONS      = 800
  36. CONST HELP_WELCOME = 900
  37. CONST CHECK           = 2500
  38. CONST CUSTINST     = 6200
  39. CONST TOOBIG       = 6300
  40. CONST BADPATH      = 6400
  41. CONST HELP_CUSTINST =6404
  42. CONST HELP_GOODIES = 6404
  43. CONST HELP_OPTIONS = 6404
  44. CONST HELP_DESTPATH =6407
  45.  
  46. rem Windows in the QTW DLL
  47. rem ----------------------------------------------------
  48. CONST NUKEOLD       = 101          ''  WARNING FOR OLDER VERSIONS
  49. CONST OLDMESS       = 102          '' MODELESS DIALOGUE BOX FOR OLDER VERSIONS
  50.  
  51. rem Other consts from QTW
  52. rem ----------------------------------------------------
  53. CONST FILES_REMOVED = 1
  54. CONST FILES_SKIPPED = 2
  55.  
  56. ''Bitmap ID
  57. CONST LOGO         = 1
  58.  
  59. ''File Types
  60. CONST BTMFILES     = 1
  61. CONST GOODIESFILES = 2
  62. CONST NUMFILETYPES = 2
  63.  
  64. '' Goodies
  65. CONST WALLPAPER  = 1
  66. CONST SOUNDS     = 2
  67. CONST NUMGOODIES = 2
  68.  
  69. GLOBAL DEST$        ''Default destination directory.
  70. GLOBAL WINDRIVE$    ''Windows drive letter.
  71. GLOBAL BTMOPT$     ''Option selection from BTM option dialog.
  72. GLOBAL GOODIESOPT$     ''Option selection from GOODIES option dialog.
  73.  
  74. ''CustInst list symbol names
  75. GLOBAL BTMNEEDS$    ''Option list costs per drive
  76. GLOBAL GOODIESNEEDS$
  77.  
  78. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  79. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  80.  
  81. ''Dialog list symbol names
  82. GLOBAL CHECKSTATES$
  83. GLOBAL STATUSTEXT$
  84. GLOBAL DRIVETEXT$
  85.  
  86. GLOBAL CUIDLL$
  87.  
  88. DECLARE SUB AddOptFilesToCopyList (ftype%)
  89. DECLARE SUB RecalcOptFiles (ftype%)
  90. DECLARE SUB RecalcPath
  91. DECLARE SUB SetDriveStatus
  92. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  93. DECLARE FUNCTION MakePath2 (szBase$,szPath$, szFile$) AS STRING
  94. DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  95. DECLARE FUNCTION PlaySound LIB "mscuistf.dll" (szSoundFile$, bSync%) AS INTEGER
  96. DECLARE FUNCTION FullFrame LIB "mscuistf.dll" (wHwnd%) AS INTEGER
  97. DECLARE FUNCTION GetDeviceCaps LIB "GDI.EXE" (hDC%, wCap%) AS INTEGER
  98. DECLARE FUNCTION GetResourceString LIB "setupenu.dll" (szResource$, idString%) AS INTEGER
  99. DECLARE FUNCTION CheckForOld AS INTEGER
  100. DECLARE FUNCTION RemoveOldQTFiles (FilePath$) AS INTEGER
  101.  
  102. INIT:
  103.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  104.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  105.  
  106.     SetBitmap CUIDLL$, LOGO
  107.     SetTitle "Behind the Mask Setup"
  108.  
  109.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  110.     IF szInf$ = "" THEN
  111.         szInf$ = GetSymbolValue("STF_CWDDIR") + "BTM.INF"
  112.     END IF
  113.     ReadInfFile szInf$
  114.  
  115.     i% = FullFrame(HwndFrame)    
  116.     i% = PlaySound(GetSymbolValue("STF_SRCDIR")+"GOODIES\SOUNDS\LUGNUTS.WAV", 1)
  117.     
  118.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  119.     DEST$ = WINDRIVE$ + ":\BTM"
  120.  
  121.     ''CustInst list symbols
  122.     CHECKSTATES$ = "CheckItemsState"
  123.     STATUSTEXT$  = "StatusItemsText"
  124.     DRIVETEXT$   = "DriveStatusText"
  125.     FOR i% = 1 TO NUMFILETYPES STEP 1
  126.         AddListItem CHECKSTATES$, "ON"
  127.     NEXT i%
  128.     FOR i% = 1 TO NUMFILETYPES STEP 1
  129.         AddListItem STATUSTEXT$, ""
  130.     NEXT i%
  131.     FOR i% = 1 TO 7 STEP 1
  132.         AddListItem DRIVETEXT$, ""
  133.     NEXT i%
  134.     ReplaceListItem DRIVETEXT$, 7, DEST$
  135.  
  136.     ''Disk cost list symbols
  137.     BTMNEEDS$  = "BTMNeeds"
  138.     GOODIESNEEDS$  = "GOODIESNeeds"
  139.     EXTRACOSTS$ = "ExtraCosts"
  140.     BIGLIST$    = "BigList"
  141.     FOR i% = 1 TO NUMFILETYPES STEP 1
  142.         AddListItem BIGLIST$, ""
  143.     NEXT i%
  144.     FOR i% = 1 TO 26 STEP 1
  145.         AddListItem EXTRACOSTS$, "0"
  146.     NEXT i%
  147.  
  148.     ''File Option Variables
  149.     BTMOPT$ = "1"
  150.  
  151.     GOODIESOPT$ = "GOODIESOpts"
  152.     FOR i% = 1 TO NUMGOODIES STEP 1
  153.         AddListItem GOODIESOPT$, "ON"
  154.     NEXT i%
  155.  
  156.     RecalcPath
  157.     SetDriveStatus
  158.  
  159. '$IFDEF DEBUG
  160.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  161. '$ENDIF ''DEBUG
  162.  
  163.  
  164. WELCOME:
  165.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", HELP_WELCOME, HELPPROC$)
  166.     IF sz$ = "CONTINUE" THEN
  167.         UIPop 1
  168.     ELSE
  169.         GOSUB ASKQUIT
  170.         GOTO WELCOME
  171.     END IF
  172.  
  173. CUSTINST:
  174.  
  175.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", HELP_CUSTINST, HELPPROC$)
  176.     
  177.     IF sz$ = "CONTINUE" THEN
  178.         ''Install only if it will fit.
  179.         FOR i% = 1 TO NUMFILETYPES STEP 1
  180.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  181.                 GOSUB TOOBIG
  182.                 GOTO CUSTINST
  183.             END IF
  184.         NEXT i%
  185.         UIPop 1
  186.         GOTO INSTALL
  187.     ELSEIF sz$ = "PATH" THEN
  188.         GOTO GETPATH
  189.     ELSEIF sz$ = "CHK1" THEN
  190.         RecalcOptFiles BTMFILES
  191.         SetDriveStatus
  192.         GOTO CUSTINST
  193.     ELSEIF sz$ = "CHK2" THEN
  194.         RecalcOptFiles GOODIESFILES
  195.         SetDriveStatus
  196.         GOTO CUSTINST
  197.     ELSEIF sz$ = "BTN1" THEN
  198.         GOTO BTMFILES
  199.     ELSEIF sz$ = "BTN2" THEN
  200.         GOTO GOODIESFILES
  201.     ELSEIF sz$ = "EXIT" THEN
  202.         GOSUB ASKQUIT
  203.         GOTO CUSTINST       
  204.     ELSE
  205.         RecalcPath
  206.         SetDriveStatus
  207.         GOTO CUSTINST
  208.     END IF
  209.  
  210. INSTALL:
  211.  
  212.     i% = PlaySound(GetSymbolValue("STF_SRCDIR")+"GOODIES\SOUNDS\LETSROCK.WAV", 1)
  213.  
  214.     WinDir$ = GetWindowsDir
  215.     SysDir$ = GetWindowsSysDir
  216.     SrcDir$ = GetSymbolvalue("STF_SRCDIR")
  217.  
  218.     ClearCopyList
  219.     
  220.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  221.     AddOptFilesToCopyList BTMFILES
  222.     AddOptFilesToCopyList GOODIESFILES
  223.  
  224.     CreateDir DEST$, cmoNone
  225.     
  226.     CopyFilesInCopyList
  227.     
  228.     IF GetListItem(CHECKSTATES$, BTMFILES) = "ON" THEN
  229.  
  230.     REM ----------------------------------------------------------------------
  231.     REM  Install QTW
  232.     REM ----------------------------------------------------------------------
  233.         
  234.         ClearCopyList
  235.  
  236.         AddSectionFilesToCopyList "QTWWIN", SrcDir$ + "GOODIES\QT\WIN\", WinDir$
  237.         AddSectionFilesToCopyList "QTWSYS", SrcDir$ + "GOODIES\QT\SYS\", SysDir$
  238.     
  239.         j% = CheckForOld()
  240.         
  241.         CopyFilesInCopyList         
  242.  
  243.         
  244.     REM -----------------------------------------------------------------------------------
  245.     REM  Set up Program Manager
  246.     REM -----------------------------------------------------------------------------------
  247.  
  248.         readmepath$ = MakePath(DEST$, "README.WRI")
  249.  
  250.         IF BTMOPT$ = "1" THEN
  251.             exepath$ = MakePath(SrcDir$, "B_T_MASK.EXE")
  252.         
  253.         ELSE
  254.             exepath$ = MakePath(DEST$, "B_T_MASK.EXE")
  255.  
  256.             ini$ = MakePath(DEST$, "BTM.INI")
  257.             CreateIniKeyValue ini$, "Behind The Mask", "MediaPath", GetSymbolValue("STF_SRCDIR") , cmoNone
  258.             ini$ = ""
  259.         END IF
  260.  
  261.            CreateProgmanGroup "Behind The Mask", "", cmoNone
  262.            ShowProgmanGroup "Behind The Mask", 1, cmoNone
  263.  
  264.         CreateProgmanItem "Behind The Mask", "Behind The Mask", exepath$, MakePath(DEST$,"BTM.ICO"), cmoOverwrite
  265.            CreateProgmanItem "Behind The Mask", "Read Me", "WRITE " + readmepath$, "", cmoOverwrite
  266.            
  267.  
  268.         REM ------------Quicktime stuff-----------------------
  269.         
  270.            inia$ = MakePath(WinDir$, "WIN.INI")
  271.            inib$ = MakePath(WinDir$, "WIN.QTW")
  272.            CopyFile inia$, inib$, cmoOverwrite, 0
  273.            inia$ = MakePath(WinDir$, "SYSTEM.INI")
  274.            inib$ = MakePath(WinDir$, "SYSTEM.QTW")
  275.            CopyFile inia$, inib$, cmoOverwrite, 0
  276.            CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(WinDir$,"player.exe") + " ^.mov", cmoOverwrite
  277.            CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(WinDir$,"viewer.exe") + " ^.pic", cmoOverwrite
  278.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  279.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  280.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  281.            i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(SysDir$, "mciqtw.drv"), "SYSTEM.INI")
  282.  
  283.         rem Compatibility hacks.
  284.            i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "SYSTEM.INI")
  285.            CreateIniKeyValue "WIN.INI", "Mach", "devicebitmap", "off", cmoOverwrite
  286.  
  287.         rem Update Registration Database
  288.         rem ----------------------------
  289.            RUN MakePath(WinDir$, "player.exe") + " install"
  290.            RUN MakePath(WinDir$, "viewer.exe") + " install"
  291.  
  292.         rem Create QTW.INI
  293.         rem ----------------
  294.            ini$ = MakePath(WinDir$, "QTW.INI")
  295.            CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  296.            RemoveIniKey ini$, "video", "optimize", cmoNone
  297.  
  298.         rem Create a Program Manager group
  299.         rem ------------------------------
  300.         
  301.            i% = GetResourceString (CUIDLL$, STR_GROUP)
  302.            GROUP$ = GetSymbolValue ("ResourceString")
  303.            CreateProgmanGroup GROUP$, "", cmoNone
  304.            ShowProgmanGroup GROUP$, 1, cmoNone
  305.  
  306.            i% = GetResourceString (CUIDLL$, STR_PLAYER)
  307.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(WinDir$,"player.exe"), "", cmoOverwrite
  308.            i% = GetResourceString (CUIDLL$, STR_VIEWER)
  309.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(WinDir$,"viewer.exe"), "", cmoOverwrite
  310.            CreateProgmanItem GROUP$, "Read Me", MakePath(WinDir$,"readme.exe"), "", cmoOverwrite
  311.     END IF
  312.     
  313.  
  314.  
  315.  
  316. QUIT:
  317.     ON ERROR GOTO ERRQUIT
  318.  
  319.     IF ERR = 0 THEN
  320.         dlg% = EXITSUCCESS
  321.     ELSEIF ERR = STFQUIT THEN
  322.         dlg% = EXITQUIT
  323.     ELSE
  324.         dlg% = EXITFAILURE
  325.     END IF
  326. QUITL1:
  327.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  328.     IF sz$ = "REACTIVATE" THEN
  329.         GOTO QUITL1
  330.     END IF
  331.     UIPop 1
  332.  
  333.     i% = PlaySound(GetSymbolValue("STF_SRCDIR")+"GOODIES\SOUNDS\GETOUT.WAV", 1 )
  334.     END
  335.  
  336. ERRQUIT:
  337.     i% = DoMsgBox("Setup sources were corrupted, call Crossover Technologies at (212)777-1190!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  338.     END
  339.  
  340.  
  341.  
  342. GETPATH:
  343.     SetSymbolValue "EditTextIn", DEST$
  344.     SetSymbolValue "EditFocus", "END"
  345. GETPATHL1:
  346.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", HELP_DESTPATH, HELPPROC$)
  347.  
  348.     IF sz$ = "CONTINUE" THEN
  349.         olddest$ = DEST$
  350.         DEST$ = GetSymbolValue("EditTextOut")
  351.  
  352.         ''Validate new path.
  353.         IF IsDirWritable(DEST$) = 0 THEN
  354.             GOSUB BADPATH
  355.             GOTO GETPATHL1
  356.         END IF
  357.         UIPop 1
  358.  
  359.         ''Truncate display if too long.
  360.         IF LEN(DEST$) > 23 THEN
  361.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  362.         ELSE
  363.             ReplaceListItem DRIVETEXT$, 7, DEST$
  364.         END IF
  365.  
  366.         ''Recalc if path changed.
  367.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  368.             RecalcPath
  369.             SetDriveStatus
  370.         END IF
  371.  
  372.         olddest$ = ""
  373.         GOTO CUSTINST
  374.     ELSEIF sz$ = "REACTIVATE" THEN
  375.         RecalcPath
  376.         SetDriveStatus
  377.         GOTO GETPATHL1
  378.     ELSEIF sz$ = "EXIT" THEN
  379.         GOSUB ASKQUIT
  380.         GOTO GETPATHL1
  381.     ELSE
  382.         UIPop 1
  383.         GOTO CUSTINST
  384.     END IF
  385.  
  386.  
  387.  
  388. BTMFILES:
  389.     SetSymbolValue "RadioDefault", BTMOPT$  
  390.     
  391. BTML1:
  392.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", HELP_OPTIONS, HELPPROC$)
  393.     newopt$ = GetSymbolValue("ButtonChecked")
  394.  
  395.     IF sz$ = "CONTINUE" THEN
  396.         UIPop 1
  397.         IF newopt$ <> BTMOPT$ THEN
  398.             BTMOPT$ = newopt$
  399.             RecalcOptFiles BTMFILES
  400.             SetDriveStatus
  401.             
  402.         END IF
  403.         newopt$ = ""
  404.         GOTO CUSTINST
  405.     ELSEIF sz$ = "REACTIVATE" THEN
  406.         RecalcPath
  407.         SetDriveStatus
  408.         GOTO BTML1
  409.     ELSEIF sz$ = "EXIT" THEN
  410.         GOSUB ASKQUIT
  411.         GOTO BTML1
  412.     ELSE
  413.         UIPop 1
  414.         newopt$ = ""
  415.         GOTO CUSTINST
  416.     END IF
  417.  
  418.  
  419. GOODIESFILES:
  420.     FOR i% = 1 TO NUMGOODIES STEP 1
  421.         AddListItem "CheckItemsIn", GetListItem(GOODIESOPT$, i%)
  422.     NEXT i%
  423.  
  424.     
  425. GOODIESL1:
  426.     sz$ = UIStartDlg(CUIDLL$, CHECK, "FCheckDlgProc", HELP_GOODIES, HELPPROC$)
  427.  
  428.     IF sz$ = "CONTINUE" THEN
  429.         UIPop 1
  430.         FOR i% = 1 TO NUMGOODIES STEP 1
  431.             ReplaceListItem GOODIESOPT$, i%, GetListItem("CheckItemsOut", i%)
  432.         NEXT i%
  433.         RecalcOptFiles GOODIESFILES
  434.         SetDriveStatus
  435.         GOTO GOODIESL2
  436.     ELSEIF sz$ = "REACTIVATE" THEN
  437.         RecalcPath
  438.         SetDriveStatus
  439.         GOTO GOODIESL1
  440.     ELSEIF sz$ = "EXIT" THEN
  441.         GOSUB ASKQUIT
  442.         GOTO GOODIESL1
  443.     ELSE
  444.         UIPop 1
  445.         GOTO GOODIESL2
  446.     END IF
  447.     
  448. GOODIESL2:
  449.     RemoveSymbol("CheckItemsIn")
  450.     GOTO CUSTINST
  451.     
  452.  
  453. TOOBIG:
  454.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  455.     IF sz$ = "REACTIVATE" THEN
  456.         RecalcPath
  457.         SetDriveStatus
  458.         GOTO TOOBIG
  459.     END IF
  460.     UIPop 1
  461.     RETURN
  462.  
  463.  
  464.  
  465. BADPATH:
  466.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  467.     IF sz$ = "REACTIVATE" THEN
  468.         RecalcPath
  469.         SetDriveStatus
  470.         GOTO BADPATH
  471.     END IF
  472.     UIPop 1
  473.     RETURN
  474.  
  475.  
  476.  
  477. ASKQUIT:
  478.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  479.  
  480.     IF sz$ = "EXIT" THEN
  481.         UIPopAll
  482.         ERROR STFQUIT
  483.     ELSEIF sz$ = "REACTIVATE" THEN
  484.         GOTO ASKQUIT
  485.     ELSE
  486.         UIPop 1
  487.     END IF
  488.     RETURN
  489.  
  490.  
  491.  
  492. '**
  493. '** Purpose:
  494. '**     Adds the specified option files to the copy list.
  495. '** Arguments:
  496. '**     ftype%  - type of files to add, one of the following:
  497. '**             APPFILES, BTMFILES, GOODIESFILES
  498. '** Returns:
  499. '**     none.
  500. '*************************************************************************
  501.  
  502. SUB AddOptFilesToCopyList (ftype%) STATIC   
  503.  
  504.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  505.         IF ftype% = BTMFILES THEN
  506.             SrcDir$ = GetSymbolValue("STF_SRCDIR")
  507.  
  508.             IF BTMOPT$ = "2" THEN
  509.                 AddSectionFilesToCopyList "BTMFILES", SrcDir$, DEST$
  510.                 ReplaceListItem STATUSTEXT$, BTMFILES, "Behind the Mask will run from the hard drive."
  511.             ELSE
  512.                 ReplaceListItem STATUSTEXT$, BTMFILES, "Behind the Mask will run from the CD-ROM."
  513.             END IF
  514.             
  515. rem            AddSectionFilesToCopyList "QTWWIN", SrcDir$ + "GOODIES\QT\WIN\", GetWindowsDir
  516. rem            AddSectionFilesToCopyList "QTWSYS", SrcDir$ + "GOODIES\QT\SYS\", GetWindowsSysDir
  517.  
  518.         ELSEIF ftype% = GOODIESFILES THEN
  519.             SrcDir$ = GetSymbolValue("STF_SRCDIR") + "GOODIES\"
  520.  
  521.             IF ((GetListItem(GOODIESOPT$, WALLPAPER) = "ON") AND (GetListItem(GOODIESOPT$, SOUNDS) = "ON")) THEN
  522.                 AddSectionFilesToCopyList "WALLPAPER", MakePath2(SrcDir$,"WALLPAPR",""), GetWindowsDir
  523.                 AddSectionFilesToCopyList "SOUNDS", MakePath2(SrcDir$,"SOUNDS",""), GetWindowsDir
  524.                 ReplaceListItem STATUSTEXT$, GOODIESFILES, "Wallpaper and sounds will be copied."
  525.  
  526.             ELSEIF GetListItem(GOODIESOPT$, WALLPAPER) = "ON" THEN
  527.                 AddSectionFilesToCopyList "WALLPAPER", MakePath2(SrcDir$,"WALLPAPR",""), GetWindowsDir
  528.                 ReplaceListItem STATUSTEXT$, GOODIESFILES, "Only wallpaper will be copied."
  529.  
  530.             ELSEIF GetListItem(GOODIESOPT$, SOUNDS) = "ON" THEN
  531.                 AddSectionFilesToCopyList "SOUNDS", MakePath2(SrcDir$,"SOUNDS",""), GetWindowsDir
  532.                 ReplaceListItem STATUSTEXT$, GOODIESFILES, "Only sounds will be copied."
  533.  
  534.             ELSE
  535.                 ReplaceListItem STATUSTEXT$, GOODIESFILES, "Nothing will be copied."
  536.  
  537.             ENDIF
  538.          END IF
  539.  
  540.         SrcDir$ = ""
  541.     ELSE
  542.         IF ftype% = BTMFILES THEN
  543.             ReplaceListItem STATUSTEXT$, BTMFILES, "Behind the Mask will not be set up."
  544.         ELSEIF ftype% = GOODIESFILES THEN
  545.             ReplaceListItem STATUSTEXT$, GOODIESFILES, "Nothing will be copied."
  546.         ENDIF
  547.     ENDIF    
  548.     
  549. END SUB
  550.  
  551.  
  552. '**
  553. '** Purpose:
  554. '**     Recalculates disk space for the given option files and sets
  555. '**     the status info symbol "StatusItemsText".
  556. '** Arguments:
  557. '**     ftype% - type of files to add, one of the following:
  558. '**             QTWFILES, BTMFILES, GOODIESFILES
  559. '** Returns:
  560. '**     none.
  561. '*************************************************************************
  562. SUB RecalcOptFiles (ftype%) STATIC
  563.     CursorSave% = ShowWaitCursor()
  564.     ClearCopyList
  565.     AddOptFilesToCopyList ftype%
  566.  
  567.     fExtra% = 0
  568.     IF ftype% = BTMFILES THEN
  569.         ListSym$ = BTMNEEDS$
  570.     ELSEIF ftype% = GOODIESFILES THEN
  571.         ListSym$ = GOODIESNEEDS$
  572.     END IF
  573.  
  574.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  575.  
  576.     cost& = 0
  577.     FOR i% = 1 TO 26 STEP 1
  578.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  579.     NEXT i%
  580.  
  581. ''  ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  582.  
  583.     IF StillNeed& > 0 THEN
  584.         ReplaceListItem BIGLIST$, ftype%, "YES"
  585.     ELSE
  586.         ReplaceListItem BIGLIST$, ftype%, ""
  587.     END IF
  588.  
  589.     IF fExtra% THEN
  590.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  591.     END IF
  592.     RestoreCursor CursorSave%
  593.     ListSym$ = ""
  594. END SUB
  595.  
  596.  
  597. '**
  598. '** Purpose:
  599. '**     Recalculates disk space and sets option status info according
  600. '**     to the current destination path.
  601. '** Arguments:
  602. '**     none.
  603. '** Returns:
  604. '**     none.
  605. '*************************************************************************
  606. SUB RecalcPath STATIC
  607.  
  608.     CursorSave% = ShowWaitCursor()
  609.  
  610.     RecalcOptFiles BTMFILES
  611.     RecalcOptFiles GOODIESFILES
  612.  
  613.     RestoreCursor CursorSave%
  614. END SUB
  615.  
  616.  
  617. '**
  618. '** Purpose:
  619. '**     Sets drive status info according to latest disk space calcs.
  620. '** Arguments:
  621. '**     none.
  622. '** Returns:
  623. '**     none.
  624. '*************************************************************************
  625. SUB SetDriveStatus STATIC
  626.  
  627.     drive$ = MID$(DEST$, 1, 1)
  628.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  629.     cost& = VAL(GetListItem(BTMNEEDS$, ndrive%)) + VAL(GetListItem(GOODIESNEEDS$, ndrive%))
  630.     
  631.     free& = GetFreeSpaceForDrive(drive$)
  632.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  633.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  634.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  635.  
  636.     IF drive$ = WINDRIVE$ THEN
  637.         ReplaceListItem DRIVETEXT$, 4, ""
  638.         ReplaceListItem DRIVETEXT$, 5, ""
  639.         ReplaceListItem DRIVETEXT$, 6, ""
  640.     ELSE
  641.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  642.         cost& = VAL(GetListItem(BTMNEEDS$, ndrive%)) + VAL(GetListItem(GOODIESNEEDS$, ndrive%)) 
  643.  
  644.         IF cost& = 0 THEN
  645.             ReplaceListItem DRIVETEXT$, 4, ""
  646.             ReplaceListItem DRIVETEXT$, 5, ""
  647.             ReplaceListItem DRIVETEXT$, 6, ""
  648.         ELSE
  649.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  650.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  651.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  652.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  653.         END IF
  654.     END IF
  655. END SUB
  656.  
  657.  
  658. '**
  659. '** Purpose:
  660. '**     Appends a file name to the end of a directory path,
  661. '**     inserting a backslash character as needed.
  662. '** Arguments:
  663. '**     szDir$  - full directory path (with optional ending "\")
  664. '**     szFile$ - filename to append to directory
  665. '** Returns:
  666. '**     Resulting fully qualified path name.
  667. '*************************************************************************
  668. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  669.     IF szDir$ = "" THEN
  670.         MakePath = szFile$
  671.     ELSEIF szFile$ = "" THEN
  672.         MakePath = szDir$
  673.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  674.         MakePath = szDir$ + szFile$
  675.     ELSE
  676.         MakePath = szDir$ + "\" + szFile$
  677.     END IF
  678. END FUNCTION
  679.  
  680. FUNCTION MakePath2 (szBase$, szPath$, szFile$) STATIC AS STRING
  681.  
  682.     IF szBase$ = "" THEN
  683.         temp$ = szPath$
  684.     ELSEIF szPath$ = "" THEN
  685.         temp$ = szBase$
  686.     ELSEIF MID$(szBase$, LEN(szBase$), 1) = "\" THEN
  687.            temp$ = szBase$ + szPath$
  688.     ELSE
  689.         temp$ = szBase$ + "\" + szPath$
  690.     END IF
  691.     
  692.     MakePath2 = MakePath(temp$, szFile$)
  693. END FUNCTION
  694.  
  695. rem Check for Older versions of the Quicktime For Windows components
  696. rem ---------------------------------------------------------------
  697. FUNCTION CheckForOld STATIC AS INTEGER
  698.  
  699.     sz$ = UIStartDlg(CUIDLL$, OLDMESS, "FModelessDlgProc", 0, "")
  700.  
  701. CheckForOld1:
  702.     cursor% = ShowWaitCursor()
  703.     OldFilePath$ = FindFileUsingFileOpen("qtim.dll")
  704.     RestoreCursor cursor%
  705.     IF (OldFilePath$ <> "") THEN
  706.         j% = RemoveOldQTFiles(OldFilePath$)
  707.         IF j% = FILES_REMOVED THEN
  708.             GOTO CheckForOld1
  709.         END IF
  710.     END IF
  711.  
  712. CheckForOld2:
  713.     cursor% = ShowWaitCursor()
  714.     OldFilePath$ = FindFileUsingFileOpen("qtimcmgr.dll")
  715.     RestoreCursor cursor%
  716.     IF (OldFilePath$ <> "") THEN
  717.         j% = RemoveOldQTFiles(OldFilePath$)
  718.         IF j% = FILES_REMOVED THEN
  719.             GOTO CheckForOld2
  720.         END IF
  721.     END IF
  722.  
  723.     GetLocalHardDrivesList "HardDrives"
  724.     NumDrives% = GetListLength("HardDrives")
  725.  
  726.     IF (NUMDRIVES% > 0) THEN
  727.         FOR i% = 1 TO NumDrives% STEP 1
  728.             CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
  729.             CheckForOld3:
  730.                 cursor% = ShowWaitCursor()
  731.                 OldFilePath$ = FindFileInTree("qtim.dll",CurrentDrive$)
  732.                 RestoreCursor cursor%
  733.                 IF (OldFilePath$ <> "") THEN
  734.                     j% = RemoveOldQTFiles(OldFilePath$)
  735.                     IF j% = FILES_REMOVED THEN
  736.                         GOTO CheckForOld3
  737.                     END IF
  738.                 END IF
  739.  
  740.             CheckForOld4:
  741.                 cursor% = ShowWaitCursor()
  742.                 OldFilePath$ = FindFileInTree("qtimcmgr.dll",CurrentDrive$)
  743.                 RestoreCursor cursor%
  744.                 IF (OldFilePath$ <> "") THEN
  745.                     j% = RemoveOldQTFiles(OldFilePath$)
  746.                     IF j% = FILES_REMOVED THEN
  747.                         GOTO CheckForOld4
  748.                     END IF
  749.                 END IF
  750.         NEXT i%
  751.     END IF
  752.  
  753.     UIPOP 1
  754.  
  755. END FUNCTION
  756.  
  757. FUNCTION RemoveOldQTFiles (FilePath$) STATIC AS INTEGER
  758.  
  759.     RemoveOldQTFiles = FILES_SKIPPED
  760.  
  761.     SPLITPATH FilePath$, drv$, dir$, filename$, ext$
  762.     DeadPath$ = drv$ + dir$
  763.  
  764.   rem check version resources if they exist
  765.       szVersion$ = GetVersionOfFile(FilePath$)
  766.  
  767.   rem dialog choices are Remove,Skip ("Continue","Back" buttons)
  768.     SetSymbolValue "EditTextIn", "Found Version [" + szVersion$ + "] on " + DeadPath$
  769.     sz$ = UIStartDlg(CUIDLL$, NUKEOLD, "FEditDlgProc", 0, "")
  770.     UIPop 1
  771.  
  772.     IF sz$ = "BACK" THEN
  773.         EXIT FUNCTION
  774.     END IF
  775.  
  776.     IF sz$ <> "CONTINUE" THEN
  777.         EXIT FUNCTION
  778.     END IF
  779.  
  780.     rem all versions
  781.         RemoveFile MakePath(DeadPath$, "qtim.dll"), cmoForce
  782.         RemoveFile MakePath(DeadPath$, "qtimcmgr.dll"), cmoForce
  783.     rem version 1.0.0
  784.         RemoveFile MakePath(DeadPath$, "qcmc.dll"), cmoForce
  785.         RemoveFile MakePath(DeadPath$, "qtjpeg.dll"), cmoForce
  786.         RemoveFile MakePath(DeadPath$, "qtraw.dll"), cmoForce
  787.         RemoveFile MakePath(DeadPath$, "qtsmc.dll"), cmoForce
  788.         RemoveFile MakePath(DeadPath$, "qtrpza.dll"), cmoForce
  789.         RemoveFile MakePath(DeadPath$, "qtrle.dll"), cmoForce
  790.         RemoveFile MakePath(DeadPath$, "qtcvid.dll"), cmoForce
  791.         RemoveFile MakePath(DeadPath$, "qtrt21.dll"), cmoForce
  792.         RemoveFile MakePath(DeadPath$, "qtvhdw.dll"), cmoForce
  793.     rem version 1.1.x and later
  794.         RemoveFile MakePath(DeadPath$, "mciqtw.drv"), cmoForce
  795.         RemoveFile MakePath(DeadPath$, "qcmc.qtc"), cmoForce
  796.         RemoveFile MakePath(DeadPath$, "qtjpeg.qtc"), cmoForce
  797.         RemoveFile MakePath(DeadPath$, "qtraw.qtc"), cmoForce
  798.         RemoveFile MakePath(DeadPath$, "qtsmc.qtc"), cmoForce
  799.         RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
  800.         RemoveFile MakePath(DeadPath$, "qtrle.qtc"), cmoForce
  801.         RemoveFile MakePath(DeadPath$, "qtcvid.qtc"), cmoForce
  802.         RemoveFile MakePath(DeadPath$, "qtrt21.qtc"), cmoForce
  803.         RemoveFile MakePath(DeadPath$, "navg.qtc"), cmoForce
  804.         RemoveFile MakePath(DeadPath$, "qtiv31.qtc"), cmoForce
  805.     rem version 1.9 and later
  806.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  807.         RemoveFile MakePath(DeadPath$, "qtyvu9.qtc"), cmoForce
  808.         RemoveFile MakePath(DeadPath$, "qtmsvc.qtc"), cmoForce
  809.         RemoveFile MakePath(DeadPath$, "qtiv32.qtc"), cmoForce
  810.         RemoveFile MakePath(DeadPath$, "qtiyvu9.qtc"), cmoForce
  811.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  812.         RemoveFile MakePath(DeadPath$, "dhio_dh.qtc"), cmoForce
  813.         RemoveFile MakePath(DeadPath$, "reelmgic.qtc"), cmoForce
  814.  
  815.     RemoveOldQTFiles = FILES_REMOVED
  816.  
  817. END FUNCTION
  818.  
  819.