home *** CD-ROM | disk | FTP | other *** search
/ Headcandy / HEADCNDY.BIN / setup.mst / setup.mst
Text File  |  1994-12-19  |  22KB  |  604 lines

  1. rem ---------------------------------------------------------------------
  2. rem
  3. rem SETUP.MST    - MSSETUP Installation Script
  4. rem
  5. rem                Version 2.0
  6. rem
  7. rem                (c) Copyright 1988-1994 Apple Computer, Inc. All Rights Reserved.
  8. rem
  9. rem                Revised: 12 October 1994
  10. rem                Tony Knight, Apple Computer
  11. rem ---------------------------------------------------------------------
  12.  
  13.  
  14. rem Required includes to interface with MSSETUP DLL's
  15. rem -------------------------------------------------
  16. '$INCLUDE 'setupapi.inc'
  17. '$INCLUDE 'msdetect.inc'
  18.  
  19.  
  20. rem Dialog box id's
  21. rem ---------------
  22. rem Note: If MSSETUP were really smart, we could use the
  23. rem #defines in DIALOGS.HR. Instead, we must manually
  24. rem keep them in step
  25. rem ----------------------------------------------------
  26.     CONST NUKEOLD       = 101          ''  WARNING FOR OLDER VERSIONS
  27.     CONST OLDMESS       = 102          '' MODELESS DIALOGUE BOX FOR OLDER VERSIONS
  28.     CONST DESTPATH      = 300          ''Gets destination path
  29.     CONST EXITQUIT      = 600          ''Exits on user request
  30.     CONST EXITSUCCESS   = 700          ''Exits when install is done
  31.     CONST OPTIONS       = 800          ''Gets AUTOEXEC.BAT options
  32.     CONST ASKSETUP      = 1100         ''Gets installation type (Local etc)
  33.     CONST TOOBIG        = 6300         ''Not enough space on target disk error
  34.     CONST BADPATH       = 6400         ''Bad destination path error
  35.     CONST BADWINDOWS    = 6500         ''Wrong Windows release
  36.     CONST EXITFAILURE   = 6600         ''Exits on error
  37.  
  38.  
  39. rem String id's
  40. rem -----------
  41. rem Note: If MSSETUP were really smart, we could use the
  42. rem #defines in DIALOGS.HR. Instead, we must manually
  43. rem keep them in step
  44. rem ----------------------------------------------------
  45.     CONST STR_PLAYER    = 1024         ''Movie Player
  46.     CONST STR_VIEWER    = 1025         ''Picture Viewer
  47.     CONST STR_GROUP     = 1026         ''Program Manager group
  48.     CONST STR_TITLE     = 1027         ''Installer Title
  49.     CONST STR_MSG1      = 1028         ''Version error message part 1
  50.     CONST STR_MSG2      = 1029         ''Version error message part 2
  51.     CONST STR_MSG3      = 1030         ''Remove obsolete files?
  52.     CONST STR_WARNING   = 1031         ''Warning
  53.     CONST STR_HELP      = 1032         ''Help
  54.     CONST STR_SAMPLE    = 1033         ''Sample movie
  55.  
  56.  
  57. rem Miscellaneous Constants
  58. rem -----------------------
  59.     CONST NOLOGO = 1                   ''Dummy NULL bitmap (must be 1)
  60.     CONST LOGO = 2                     ''Background bitmap
  61.     CONST MOVIE = 2                    ''Movie placeholder bitmap
  62.     CONST NOSPACE = 1                  ''No space to complete install
  63.     CONST INSTALLOK = 2                ''Install completed OK
  64.     CONST INSTALLFAILED =3             ''Install failed for some reason
  65.     CONST FILES_REMOVED = 1
  66.     CONST FILES_SKIPPED = 2
  67.  
  68. rem Global Variables
  69. rem ----------------
  70.     GLOBAL SOURCE$                     ''Source directory
  71.     GLOBAL DEST$                       ''Default destination directory
  72.     GLOBAL DEST2$                       '' DEST FOR WINDOWS QTW .EXE'S
  73.     GLOBAL DEST3$                       '' DEST FOR DOCUMENTATION AND INTERFACES
  74.     GLOBAL LOCALINST$                  ''Local install
  75.     GLOBAL CLIENTINST$                 ''Client install
  76.     GLOBAL SERVERINST$                 ''Server install
  77.     GLOBAL SETUPPATH$                  ''Setup destination path
  78.     GLOBAL SETUPTYPE$                  ''local,client,server
  79.     GLOBAL EXTRACOSTS$                 ''List of extra costs to add per drive
  80.     GLOBAL APPNEEDS$                   ''Disk space costs per drive
  81.     GLOBAL SECTIONKEY$                 ''INF file section key
  82.     GLOBAL SUCCESS%                    ''Installation completion code
  83.  
  84.     GLOBAL CUIDLL$                     ''User interface DLL
  85.     GLOBAL HELPPROC$                   ''Help dialog procedure
  86.  
  87.  
  88. rem Initialize global vriables
  89. rem --------------------------
  90.     SOURCE$         = GetSymbolValue("STF_SRCDIR")
  91.     DEST$           = GetWindowsSysDir
  92.     DEST2$          = GetWindowsDir
  93.     DEST3$          = "C:\QTW"
  94.     LOCALINST$      = "1"
  95.     CLIENTINST$     = "2"
  96.     SERVERINST$     = "3"
  97.     SETUPPATH$      = DEST$
  98.     SETUPTYPE$      = LOCALINST$
  99.     APPNEEDS$       = "AppNeeds"
  100.     EXTRACOSTS$     = "ExtraCosts"
  101.     SECTIONKEY$     = "SectionKey"
  102.     SUCCESS%        = INSTALLFAILED
  103.  
  104.     FOR i% = 1 TO 26 STEP 1
  105.         AddListItem EXTRACOSTS$, "16384"
  106.     NEXT i%
  107.  
  108.     rem
  109.     rem default dest to first hard drive
  110.     rem since some OEM systems don't start at C:
  111.     rem
  112.     GetLocalHardDrivesList "HardDrives"
  113.     NumDrives% = GetListLength("HardDrives")
  114.  
  115.     IF (NUMDRIVES% > 0) THEN
  116.         DEST3$ = GetListItem("HardDrives",1) + ":\QTW"
  117.     END IF
  118.  
  119. rem Get name of localized user interface dialogs
  120. rem --------------------------------------------
  121.     CUIDLL$ = "SETUP"+GetIniKeyString("WIN.INI", "intl", "sLanguage")+".DLL"
  122.     IF DoesFileExist(CUIDLL$, femExists) = 0 THEN
  123.        CUIDLL$ = "SETUPENU.DLL"
  124.     END IF
  125.  
  126.  
  127. rem Subroutines and Functions
  128. rem -------------------------
  129.     DECLARE FUNCTION Install AS INTEGER
  130.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  131.     DECLARE FUNCTION GetQTWVersion LIB "setupenu.dll" (szDLL$) AS INTEGER
  132.     DECLARE FUNCTION GetResourceString LIB "setupenu.dll" (szResource$, idString%) AS INTEGER
  133.     DECLARE FUNCTION StartCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  134.     DECLARE FUNCTION StopCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  135.     DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  136.     DECLARE FUNCTION CheckForOld AS INTEGER
  137.     DECLARE FUNCTION RemoveOldQTFiles (FilePath$) AS INTEGER
  138.     DECLARE FUNCTION CheckForSpace (DrivePath$) AS INTEGER
  139.  
  140. rem Initialize custom setup logic
  141. rem -----------------------------
  142.     SetBitmap CUIDLL$, NOLOGO
  143.     i% = GetResourceString (CUIDLL$, STR_TITLE)
  144.     SetTitle GetSymbolValue ("ResourceString")
  145.     i% = StartCustomSetup (HinstFrame(), HwndFrame ())
  146.     i% = SetBeepingMode(1)
  147.  
  148. rem Make sure that we are running on Windows 3.1 or better
  149. rem ------------------------------------------------------
  150.     IF GetWindowsMajorVersion() < 3 THEN
  151.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  152.        UIPop 1
  153.        GOTO CLEANUP
  154.     END IF
  155.  
  156.     IF (GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 10) THEN
  157.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  158.        UIPop 1
  159.        GOTO CLEANUP
  160.     END IF
  161.  
  162.  
  163. rem Make sure that we are running on a 286 or better
  164. rem ------------------------------------------------
  165.     IF GetWinFlags() AND 2 THEN
  166.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  167.        UIPop 1
  168.        GOTO CLEANUP
  169.     END IF
  170.  
  171. rem -------------------------------------------------------------------
  172.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  173.  
  174.     IF szInf$ = "" THEN
  175.        szTemp$ = GetSymbolValue("STF_SRCDIR")
  176.        SPLITPATH szTemp$, drv$, dir$, filename$, ext$
  177.        szInf$ = szTemp$ + "SETUP.INF"
  178.     END IF
  179.  
  180.     ReadInfFile szInf$
  181.  
  182.  
  183. rem Get the setup type: Local, Client or Server
  184. rem -------------------------------------------
  185. ITYPE:
  186.     SetSymbolValue "RadioDefault", SETUPTYPE$
  187.  
  188. ITYPEL1:
  189.     sz$ = UIStartDlg(CUIDLL$, ASKSETUP, "FRadioDlgProc", 0, "")
  190.  
  191.     SETUPTYPE$ = GetSymbolValue("ButtonChecked")
  192.  
  193.  
  194.     IF sz$ = "CONTINUE" THEN
  195.        UIPop(1)
  196.  
  197.     ELSEIF sz$ = "REACTIVATE" THEN
  198.        GOTO ITYPEL1
  199.  
  200.     ELSE
  201.        GOSUB ASKQUIT
  202.        GOTO ITYPE
  203.  
  204.     END IF
  205.  
  206.     rem Get the destination path for server install; if it's bad, we display an error
  207.     rem ----------------------------------------------------------------
  208.  
  209. GETPATH2:
  210.     IF (SETUPTYPE$ = SERVERINST$) THEN
  211.         SetSymbolValue "EditTextIn",DEST3$
  212.  
  213.         SetSymbolValue "EditFocus","ALL"
  214.  
  215.         sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
  216.         DEST3$ = GetSymbolValue("EditTextOut")
  217.         UIPop 1
  218.  
  219.         IF sz$ = "CONTINUE" THEN
  220.             IF IsDirWritable(DEST3$) = 1 THEN
  221.                 GOTO INSTALLER
  222.             END IF
  223.         END IF
  224.  
  225.         IF sz$ = "BACK" THEN
  226.             GOTO ITYPE
  227.         END IF
  228.  
  229.         IF sz$ = "EXIT" THEN
  230.             GOTO ASKQUIT3
  231.         END IF
  232.  
  233.         IF IsDirWritable(DEST3$) = 0 THEN
  234.             sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  235.             UIPop 1
  236.             GOTO GETPATH2
  237.         END IF
  238.     END IF
  239.     GOTO INSTALLER
  240.  
  241. rem ASKQUIT: The user requested quit; does (s)he really want to?
  242. rem ------------------------------------------------------------
  243. ASKQUIT3:
  244.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  245.     UIPop 1
  246.     IF sz$ = "CONTINUE" THEN
  247.        GOTO GETPATH2
  248.     END IF
  249.     GOTO CLEANUP
  250.  
  251.  
  252. rem Perform actual installation
  253. rem ---------------------------
  254. INSTALLER:
  255.     SUCCESS% = Install
  256.  
  257.     IF SUCCESS% = NOSPACE THEN
  258.        GOSUB TOOBIG
  259.     END IF
  260.  
  261.  
  262. rem When done, issue dialog
  263. rem -----------------------
  264. QUIT:
  265.     IF SUCCESS% = INSTALLOK THEN
  266.        sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  267.     ELSE
  268.        sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfo0DlgProc", 0, "")
  269.     END IF
  270.     UIPop 1
  271.  
  272.  
  273. rem Clean up all processing
  274. rem -----------------------
  275. CLEANUP:
  276.     i% = StopCustomSetup (HinstFrame(), HwndFrame ())
  277.  
  278.     END
  279.  
  280.  
  281. rem ASKQUIT: The user requested quit; does (s)he really want to?
  282. rem ------------------------------------------------------------
  283. ASKQUIT:
  284.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  285.     UIPop 1
  286.     IF sz$ = "CONTINUE" THEN
  287.        RETURN
  288.     END IF
  289.     GOTO CLEANUP
  290.  
  291.  
  292. rem BADPATH: The user entered an invalid destination directory
  293. rem ----------------------------------------------------------
  294. BADPATH:
  295.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  296.     IF sz$ = "REACTIVATE" THEN
  297.        GOTO BADPATH
  298.     END IF
  299.     UIPop 1
  300.  
  301.     RETURN
  302.  
  303.  
  304. rem TOOBIG: The source files won't fit on the requested destination disk
  305. rem --------------------------------------------------------------------
  306. TOOBIG:
  307.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  308.     IF sz$ = "REACTIVATE" THEN
  309.        GOTO TOOBIG
  310.     END IF
  311.     UIPop 1
  312.  
  313.     RETURN
  314.  
  315. rem Install: Perform actual installation
  316. rem ------------------------------------
  317. FUNCTION Install STATIC AS INTEGER
  318.  
  319.     ClearCopyList
  320.     rem For Local or Server installs ...
  321.     rem --------------------------------
  322.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  323.             AddSectionFilesToCopyList "Files", SOURCE$, DEST$
  324.             AddSectionFilesToCopyList "Winexe", SOURCE$, DEST2$
  325.             spaceCheck% = CheckForSpace(DEST$)
  326.             IF (spaceCheck% = NOSPACE) THEN
  327.                 Install = NOSPACE
  328.                 EXIT FUNCTION
  329.             END IF
  330.             spaceCheck% = CheckForSpace(DEST2$)
  331.             IF (spaceCheck% = NOSPACE) THEN
  332.                 Install = NOSPACE
  333.                 EXIT FUNCTION
  334.             END IF
  335.         END IF
  336.  
  337.         IF (SETUPTYPE$ = SERVERINST$) THEN
  338.             AddSectionFilesToCopyList "Files", SOURCE$, DEST3$ + "BIN\"
  339.             AddSectionFilesToCopyList "Winexe", SOURCE$, DEST3$ + "BIN\"
  340.             AddSectionFilesToCopyList "Setup", SOURCE$, DEST3$
  341. rem         AddSectionFilesToCopyList "QTW", SOURCE$, DEST3$
  342.             spaceCheck% = CheckForSpace(DEST3$)
  343.             IF (spaceCheck% = NOSPACE) THEN
  344.                 Install = NOSPACE
  345.                 EXIT FUNCTION
  346.             END IF
  347.         ELSE 
  348.             j% = CheckForOld()
  349.         END IF
  350.  
  351.         rem Copy files necessary for installation from server
  352.         rem -------------------------------------------------
  353.         IF SETUPTYPE$ = SERVERINST$ THEN
  354.             CopyFile MakePath(SOURCE$, "SETUP.INF"), MakePath(DEST3$, "SETUP.INF"), cmoOverwrite, 0
  355.             CopyFile MakePath(SOURCE$, "DISK1.ID"), MakePath(DEST3$, "DISK1.ID"), cmoOverwrite, 0
  356.         END IF
  357.  
  358.         rem Copy all the files from the source to the destination
  359.         rem -----------------------------------------------------
  360.  
  361.         CopyFilesInCopyList
  362.  
  363.     rem Update WIN.INI and SYSTEM.INI
  364.     rem -----------------------------
  365.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  366.            inia$ = MakePath(DEST2$, "WIN.INI")
  367.            inib$ = MakePath(DEST2$, "WIN.QTW")
  368.            CopyFile inia$, inib$, cmoOverwrite, 0
  369.            inia$ = MakePath(DEST2$, "SYSTEM.INI")
  370.            inib$ = MakePath(DEST2$, "SYSTEM.QTW")
  371.            CopyFile inia$, inib$, cmoOverwrite, 0
  372.            CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(DEST2$,"player.exe") + " ^.mov", cmoOverwrite
  373.            CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(DEST2$,"viewer.exe") + " ^.pic", cmoOverwrite
  374.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  375.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  376.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  377.            i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(DEST$, "mciqtw.drv"), "SYSTEM.INI")
  378.  
  379.         rem Compatibility hacks.
  380.            i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "SYSTEM.INI")
  381.            CreateIniKeyValue "WIN.INI", "Mach", "devicebitmap", "off", cmoOverwrite
  382.  
  383.         rem Update Registration Database
  384.         rem ----------------------------
  385.            RUN MakePath(DEST2$, "player.exe") + " install"
  386.            RUN MakePath(DEST2$, "viewer.exe") + " install"
  387.  
  388.         rem Create QTW.INI
  389.         rem ----------------
  390.            ini$ = MakePath(DEST2$, "QTW.INI")
  391.            CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  392.            RemoveIniKey ini$, "video", "optimize", cmoNone
  393.  
  394.  
  395. '***********************************************************************************
  396.  
  397.  
  398.     rem Create a Program Manager group
  399.     rem ------------------------------
  400.            i% = GetResourceString (CUIDLL$, STR_GROUP)
  401.            GROUP$ = GetSymbolValue ("ResourceString")
  402.            CreateProgmanGroup GROUP$, "", cmoNone
  403.            i% = GetResourceString (CUIDLL$, STR_PLAYER)
  404.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$,"player.exe"), "", cmoOverwrite
  405.            i% = GetResourceString (CUIDLL$, STR_VIEWER)
  406.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$,"viewer.exe"), "", cmoOverwrite
  407.            CreateProgmanItem GROUP$, "Read Me", MakePath(DEST2$,"readme.exe"), "", cmoOverwrite
  408.  
  409.         END IF
  410.  
  411.     rem Indicate install completed OK
  412.     rem -----------------------------
  413.         Install = INSTALLOK
  414.  
  415. END FUNCTION
  416.  
  417. rem MakePath: Builds path from directory and file
  418. rem ---------------------------------------------
  419. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  420.  
  421.     IF szDir$ = "" THEN
  422.        MakePath = szFile$
  423.  
  424.     ELSEIF szFile$ = "" THEN
  425.        MakePath = szDir$
  426.  
  427.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  428.        MakePath = szDir$ + szFile$
  429.  
  430.     ELSE
  431.        MakePath = szDir$ + "\" + szFile$
  432.  
  433.     END IF
  434.  
  435. END FUNCTION
  436.  
  437. rem Check for Older versions of the Quicktime For Windows components
  438. rem ---------------------------------------------------------------
  439. FUNCTION CheckForOld STATIC AS INTEGER
  440.  
  441.     sz$ = UIStartDlg(CUIDLL$, OLDMESS, "FModelessDlgProc", 0, "")
  442.  
  443. CheckForOld1:
  444.     cursor% = ShowWaitCursor()
  445.     OldFilePath$ = FindFileUsingFileOpen("qtim.dll")
  446.     RestoreCursor cursor%
  447.     IF (OldFilePath$ <> "") THEN
  448.         j% = RemoveOldQTFiles(OldFilePath$)
  449.         IF j% = FILES_REMOVED THEN
  450.             GOTO CheckForOld1
  451.         END IF
  452.     END IF
  453.  
  454. CheckForOld2:
  455.     cursor% = ShowWaitCursor()
  456.     OldFilePath$ = FindFileUsingFileOpen("qtimcmgr.dll")
  457.     RestoreCursor cursor%
  458.     IF (OldFilePath$ <> "") THEN
  459.         j% = RemoveOldQTFiles(OldFilePath$)
  460.         IF j% = FILES_REMOVED THEN
  461.             GOTO CheckForOld2
  462.         END IF
  463.     END IF
  464.  
  465.     GetLocalHardDrivesList "HardDrives"
  466.     NumDrives% = GetListLength("HardDrives")
  467.  
  468.     IF (NUMDRIVES% > 0) THEN
  469.         FOR i% = 1 TO NumDrives% STEP 1
  470.             CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
  471.             CheckForOld3:
  472.                 cursor% = ShowWaitCursor()
  473.                 OldFilePath$ = FindFileInTree("qtim.dll",CurrentDrive$)
  474.                 RestoreCursor cursor%
  475.                 IF (OldFilePath$ <> "") THEN
  476.                     j% = RemoveOldQTFiles(OldFilePath$)
  477.                     IF j% = FILES_REMOVED THEN
  478.                         GOTO CheckForOld3
  479.                     END IF
  480.                 END IF
  481.  
  482.             CheckForOld4:
  483.                 cursor% = ShowWaitCursor()
  484.                 OldFilePath$ = FindFileInTree("qtimcmgr.dll",CurrentDrive$)
  485.                 RestoreCursor cursor%
  486.                 IF (OldFilePath$ <> "") THEN
  487.                     j% = RemoveOldQTFiles(OldFilePath$)
  488.                     IF j% = FILES_REMOVED THEN
  489.                         GOTO CheckForOld4
  490.                     END IF
  491.                 END IF
  492.         NEXT i%
  493.     END IF
  494.  
  495.     UIPOP 1
  496.  
  497. END FUNCTION
  498.  
  499. FUNCTION RemoveOldQTFiles (FilePath$) STATIC AS INTEGER
  500.  
  501.     RemoveOldQTFiles = FILES_SKIPPED
  502.  
  503.     SPLITPATH FilePath$, drv$, dir$, filename$, ext$
  504.     DeadPath$ = drv$ + dir$
  505.  
  506.   rem check version resources if they exist
  507.       szVersion$ = GetVersionOfFile(FilePath$)
  508.  
  509.   rem dialog choices are Remove,Skip ("Continue","Back" buttons)
  510.     SetSymbolValue "EditTextIn", "Found Version [" + szVersion$ + "] on " + DeadPath$
  511.     sz$ = UIStartDlg(CUIDLL$, NUKEOLD, "FEditDlgProc", 0, "")
  512.     UIPop 1
  513.  
  514.     IF sz$ = "BACK" THEN
  515.         EXIT FUNCTION
  516.     END IF
  517.  
  518.     IF sz$ <> "CONTINUE" THEN
  519.         EXIT FUNCTION
  520.     END IF
  521.  
  522.     rem all versions
  523.         RemoveFile MakePath(DeadPath$, "qtim.dll"), cmoForce
  524.         RemoveFile MakePath(DeadPath$, "qtimcmgr.dll"), cmoForce
  525.     rem version 1.0.0
  526.         RemoveFile MakePath(DeadPath$, "qcmc.dll"), cmoForce
  527.         RemoveFile MakePath(DeadPath$, "qtjpeg.dll"), cmoForce
  528.         RemoveFile MakePath(DeadPath$, "qtraw.dll"), cmoForce
  529.         RemoveFile MakePath(DeadPath$, "qtsmc.dll"), cmoForce
  530.         RemoveFile MakePath(DeadPath$, "qtrpza.dll"), cmoForce
  531.         RemoveFile MakePath(DeadPath$, "qtrle.dll"), cmoForce
  532.         RemoveFile MakePath(DeadPath$, "qtcvid.dll"), cmoForce
  533.         RemoveFile MakePath(DeadPath$, "qtrt21.dll"), cmoForce
  534.         RemoveFile MakePath(DeadPath$, "qtvhdw.dll"), cmoForce
  535.     rem version 1.1.x and later
  536.         RemoveFile MakePath(DeadPath$, "mciqtw.drv"), cmoForce
  537.         RemoveFile MakePath(DeadPath$, "qcmc.qtc"), cmoForce
  538.         RemoveFile MakePath(DeadPath$, "qtjpeg.qtc"), cmoForce
  539.         RemoveFile MakePath(DeadPath$, "qtraw.qtc"), cmoForce
  540.         RemoveFile MakePath(DeadPath$, "qtsmc.qtc"), cmoForce
  541.         RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
  542.         RemoveFile MakePath(DeadPath$, "qtrle.qtc"), cmoForce
  543.         RemoveFile MakePath(DeadPath$, "qtcvid.qtc"), cmoForce
  544.         RemoveFile MakePath(DeadPath$, "qtrt21.qtc"), cmoForce
  545.         RemoveFile MakePath(DeadPath$, "navg.qtc"), cmoForce
  546.         RemoveFile MakePath(DeadPath$, "qtiv31.qtc"), cmoForce
  547.     rem version 1.9 and later
  548.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  549.         RemoveFile MakePath(DeadPath$, "qtyvu9.qtc"), cmoForce
  550.         RemoveFile MakePath(DeadPath$, "qtmsvc.qtc"), cmoForce
  551.         RemoveFile MakePath(DeadPath$, "qtiv32.qtc"), cmoForce
  552.         RemoveFile MakePath(DeadPath$, "qtiyvu9.qtc"), cmoForce
  553.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  554.         RemoveFile MakePath(DeadPath$, "dhio_dh.qtc"), cmoForce
  555.         RemoveFile MakePath(DeadPath$, "reelmgic.qtc"), cmoForce
  556.  
  557.     RemoveOldQTFiles = FILES_REMOVED
  558.  
  559. END FUNCTION
  560.  
  561. '$IFDEF DEBUG
  562.        IF DoesFileExist(MakePath(DEST$, "bin\qtim.dll"), femExists) = 1 THEN
  563.           szError$ = MakePath(DEST$, "BIN")
  564.           i% = GetResourceString (CUIDLL$, STR_MSG1)
  565.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  566.           i% = GetQTWVersion(MakePath(DEST$, "bin\qtim.dll"))
  567.           szVersion$ = GetSymbolValue ("VersionString")
  568.           szError$ = szError$ + szVersion$
  569.           i% = GetResourceString (CUIDLL$, STR_MSG2)
  570.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  571.           i% = GetResourceString (CUIDLL$, STR_WARNING)
  572.           szCaption$ = GetSymbolValue ("ResourceString")
  573.           i% = DoMsgBox(szError$, szCaption$, 20)
  574.           UIPop 1
  575.           IF i% = 7 THEN
  576.              GOTO GETPATHL1
  577.           END IF
  578.           IF szVersion$ = "1.0.0" THEN
  579.              i% = GetResourceString (CUIDLL$, STR_MSG3)
  580.              szError$ = GetSymbolValue ("ResourceString")
  581.              i% = GetResourceString (CUIDLL$, STR_WARNING)
  582.              szCaption$ = GetSymbolValue ("ResourceString")
  583.              i% = DoMsgBox(szError$, szCaption$, 20)
  584.        END IF
  585. '$ENDIF
  586.  
  587. FUNCTION CheckForSpace (DrivePath$) STATIC AS INTEGER
  588.     CheckForSpace = 0
  589.     
  590.     rem Check that we have enough free space to perform the install
  591.     rem -----------------------------------------------------------
  592.     ListSym$ = APPNEEDS$
  593.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  594.  
  595.     drive$ = MID$(DrivePath$, 1, 1)
  596.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  597.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  598.     free& = GetFreeSpaceForDrive(drive$)
  599.  
  600.     IF cost& >= free& THEN
  601.         CheckForSpace = NOSPACE
  602.     END IF
  603. END FUNCTION
  604.