home *** CD-ROM | disk | FTP | other *** search
/ Grolier Multimedia Encyclopedia 1995 / GME95.iso / qtw20 / setup.mst / setup.mst
Text File  |  1995-02-27  |  22KB  |  611 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.  
  187. rem +-------------------------------------------+
  188. rem | Following lines rem'ed out by HMM 2/22/95 |
  189. rem +-------------------------------------------+
  190. rem SetSymbolValue "RadioDefault", SETUPTYPE$
  191.  
  192. ITYPEL1:
  193. rem sz$ = UIStartDlg(CUIDLL$, ASKSETUP, "FRadioDlgProc", 0, "")
  194. rem 
  195. rem SETUPTYPE$ = GetSymbolValue("ButtonChecked")
  196. rem 
  197. rem 
  198. rem IF sz$ = "CONTINUE" THEN
  199. rem    UIPop(1)
  200. rem 
  201. rem ELSEIF sz$ = "REACTIVATE" THEN
  202. rem    GOTO ITYPEL1
  203. rem 
  204. rem ELSE
  205. rem    GOSUB ASKQUIT
  206. rem    GOTO ITYPE
  207. rem 
  208. rem END IF
  209.  
  210. rem UIPop(1)
  211.  
  212.  
  213.     rem Get the destination path for server install; if it's bad, we display an error
  214.     rem ----------------------------------------------------------------
  215.  
  216. GETPATH2:
  217.     IF (SETUPTYPE$ = SERVERINST$) THEN
  218.         SetSymbolValue "EditTextIn",DEST3$
  219.  
  220.         SetSymbolValue "EditFocus","ALL"
  221.  
  222.         sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
  223.         DEST3$ = GetSymbolValue("EditTextOut")
  224.         UIPop 1
  225.  
  226.         IF sz$ = "CONTINUE" THEN
  227.             IF IsDirWritable(DEST3$) = 1 THEN
  228.                 GOTO INSTALLER
  229.             END IF
  230.         END IF
  231.  
  232.         IF sz$ = "BACK" THEN
  233.             GOTO ITYPE
  234.         END IF
  235.  
  236.         IF sz$ = "EXIT" THEN
  237.             GOTO ASKQUIT3
  238.         END IF
  239.  
  240.         IF IsDirWritable(DEST3$) = 0 THEN
  241.             sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  242.             UIPop 1
  243.             GOTO GETPATH2
  244.         END IF
  245.     END IF
  246.     GOTO INSTALLER
  247.  
  248. rem ASKQUIT: The user requested quit; does (s)he really want to?
  249. rem ------------------------------------------------------------
  250. ASKQUIT3:
  251.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  252.     UIPop 1
  253.     IF sz$ = "CONTINUE" THEN
  254.        GOTO GETPATH2
  255.     END IF
  256.     GOTO CLEANUP
  257.  
  258.  
  259. rem Perform actual installation
  260. rem ---------------------------
  261. INSTALLER:
  262.     SUCCESS% = Install
  263.  
  264.     IF SUCCESS% = NOSPACE THEN
  265.        GOSUB TOOBIG
  266.     END IF
  267.  
  268.  
  269. rem When done, issue dialog
  270. rem -----------------------
  271. QUIT:
  272.     IF SUCCESS% = INSTALLOK THEN
  273.        sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  274.     ELSE
  275.        sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfo0DlgProc", 0, "")
  276.     END IF
  277.     UIPop 1
  278.  
  279.  
  280. rem Clean up all processing
  281. rem -----------------------
  282. CLEANUP:
  283.     i% = StopCustomSetup (HinstFrame(), HwndFrame ())
  284.  
  285.     END
  286.  
  287.  
  288. rem ASKQUIT: The user requested quit; does (s)he really want to?
  289. rem ------------------------------------------------------------
  290. ASKQUIT:
  291.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  292.     UIPop 1
  293.     IF sz$ = "CONTINUE" THEN
  294.        RETURN
  295.     END IF
  296.     GOTO CLEANUP
  297.  
  298.  
  299. rem BADPATH: The user entered an invalid destination directory
  300. rem ----------------------------------------------------------
  301. BADPATH:
  302.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  303.     IF sz$ = "REACTIVATE" THEN
  304.        GOTO BADPATH
  305.     END IF
  306.     UIPop 1
  307.  
  308.     RETURN
  309.  
  310.  
  311. rem TOOBIG: The source files won't fit on the requested destination disk
  312. rem --------------------------------------------------------------------
  313. TOOBIG:
  314.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  315.     IF sz$ = "REACTIVATE" THEN
  316.        GOTO TOOBIG
  317.     END IF
  318.     UIPop 1
  319.  
  320.     RETURN
  321.  
  322. rem Install: Perform actual installation
  323. rem ------------------------------------
  324. FUNCTION Install STATIC AS INTEGER
  325.  
  326.     ClearCopyList
  327.     rem For Local or Server installs ...
  328.     rem --------------------------------
  329.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  330.             AddSectionFilesToCopyList "Files", SOURCE$, DEST$
  331.             AddSectionFilesToCopyList "Winexe", SOURCE$, DEST2$
  332.             spaceCheck% = CheckForSpace(DEST$)
  333.             IF (spaceCheck% = NOSPACE) THEN
  334.                 Install = NOSPACE
  335.                 EXIT FUNCTION
  336.             END IF
  337.             spaceCheck% = CheckForSpace(DEST2$)
  338.             IF (spaceCheck% = NOSPACE) THEN
  339.                 Install = NOSPACE
  340.                 EXIT FUNCTION
  341.             END IF
  342.         END IF
  343.  
  344.         IF (SETUPTYPE$ = SERVERINST$) THEN
  345.             AddSectionFilesToCopyList "Files", SOURCE$, DEST3$ + "BIN\"
  346.             AddSectionFilesToCopyList "Winexe", SOURCE$, DEST3$ + "BIN\"
  347.             AddSectionFilesToCopyList "Setup", SOURCE$, DEST3$
  348. rem         AddSectionFilesToCopyList "QTW", SOURCE$, DEST3$
  349.             spaceCheck% = CheckForSpace(DEST3$)
  350.             IF (spaceCheck% = NOSPACE) THEN
  351.                 Install = NOSPACE
  352.                 EXIT FUNCTION
  353.             END IF
  354.         ELSE 
  355.             j% = CheckForOld()
  356.         END IF
  357.  
  358.         rem Copy files necessary for installation from server
  359.         rem -------------------------------------------------
  360.         IF SETUPTYPE$ = SERVERINST$ THEN
  361.             CopyFile MakePath(SOURCE$, "SETUP.INF"), MakePath(DEST3$, "SETUP.INF"), cmoOverwrite, 0
  362.             CopyFile MakePath(SOURCE$, "DISK1.ID"), MakePath(DEST3$, "DISK1.ID"), cmoOverwrite, 0
  363.         END IF
  364.  
  365.         rem Copy all the files from the source to the destination
  366.         rem -----------------------------------------------------
  367.  
  368.         CopyFilesInCopyList
  369.  
  370.     rem Update WIN.INI and SYSTEM.INI
  371.     rem -----------------------------
  372.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  373.            inia$ = MakePath(DEST2$, "WIN.INI")
  374.            inib$ = MakePath(DEST2$, "WIN.QTW")
  375.            CopyFile inia$, inib$, cmoOverwrite, 0
  376.            inia$ = MakePath(DEST2$, "SYSTEM.INI")
  377.            inib$ = MakePath(DEST2$, "SYSTEM.QTW")
  378.            CopyFile inia$, inib$, cmoOverwrite, 0
  379.            CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(DEST2$,"player.exe") + " ^.mov", cmoOverwrite
  380.            CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(DEST2$,"viewer.exe") + " ^.pic", cmoOverwrite
  381.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  382.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  383.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  384.            i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(DEST$, "mciqtw.drv"), "SYSTEM.INI")
  385.  
  386.         rem Compatibility hacks.
  387.            i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "SYSTEM.INI")
  388.            CreateIniKeyValue "WIN.INI", "Mach", "devicebitmap", "off", cmoOverwrite
  389.  
  390.         rem Update Registration Database
  391.         rem ----------------------------
  392.            RUN MakePath(DEST2$, "player.exe") + " install"
  393.            RUN MakePath(DEST2$, "viewer.exe") + " install"
  394.  
  395.         rem Create QTW.INI
  396.         rem ----------------
  397.            ini$ = MakePath(DEST2$, "QTW.INI")
  398.            CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  399.            RemoveIniKey ini$, "video", "optimize", cmoNone
  400.  
  401.  
  402. '***********************************************************************************
  403.  
  404.  
  405.     rem Create a Program Manager group
  406.     rem ------------------------------
  407.            i% = GetResourceString (CUIDLL$, STR_GROUP)
  408.            GROUP$ = GetSymbolValue ("ResourceString")
  409.            CreateProgmanGroup GROUP$, "", cmoNone
  410.            i% = GetResourceString (CUIDLL$, STR_PLAYER)
  411.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$,"player.exe"), "", cmoOverwrite
  412.            i% = GetResourceString (CUIDLL$, STR_VIEWER)
  413.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$,"viewer.exe"), "", cmoOverwrite
  414.            CreateProgmanItem GROUP$, "Read Me", MakePath(DEST2$,"readme.exe"), "", cmoOverwrite
  415.  
  416.         END IF
  417.  
  418.     rem Indicate install completed OK
  419.     rem -----------------------------
  420.         Install = INSTALLOK
  421.  
  422. END FUNCTION
  423.  
  424. rem MakePath: Builds path from directory and file
  425. rem ---------------------------------------------
  426. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  427.  
  428.     IF szDir$ = "" THEN
  429.        MakePath = szFile$
  430.  
  431.     ELSEIF szFile$ = "" THEN
  432.        MakePath = szDir$
  433.  
  434.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  435.        MakePath = szDir$ + szFile$
  436.  
  437.     ELSE
  438.        MakePath = szDir$ + "\" + szFile$
  439.  
  440.     END IF
  441.  
  442. END FUNCTION
  443.  
  444. rem Check for Older versions of the Quicktime For Windows components
  445. rem ---------------------------------------------------------------
  446. FUNCTION CheckForOld STATIC AS INTEGER
  447.  
  448.     sz$ = UIStartDlg(CUIDLL$, OLDMESS, "FModelessDlgProc", 0, "")
  449.  
  450. CheckForOld1:
  451.     cursor% = ShowWaitCursor()
  452.     OldFilePath$ = FindFileUsingFileOpen("qtim.dll")
  453.     RestoreCursor cursor%
  454.     IF (OldFilePath$ <> "") THEN
  455.         j% = RemoveOldQTFiles(OldFilePath$)
  456.         IF j% = FILES_REMOVED THEN
  457.             GOTO CheckForOld1
  458.         END IF
  459.     END IF
  460.  
  461. CheckForOld2:
  462.     cursor% = ShowWaitCursor()
  463.     OldFilePath$ = FindFileUsingFileOpen("qtimcmgr.dll")
  464.     RestoreCursor cursor%
  465.     IF (OldFilePath$ <> "") THEN
  466.         j% = RemoveOldQTFiles(OldFilePath$)
  467.         IF j% = FILES_REMOVED THEN
  468.             GOTO CheckForOld2
  469.         END IF
  470.     END IF
  471.  
  472.     GetLocalHardDrivesList "HardDrives"
  473.     NumDrives% = GetListLength("HardDrives")
  474.  
  475.     IF (NUMDRIVES% > 0) THEN
  476.         FOR i% = 1 TO NumDrives% STEP 1
  477.             CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
  478.             CheckForOld3:
  479.                 cursor% = ShowWaitCursor()
  480.                 OldFilePath$ = FindFileInTree("qtim.dll",CurrentDrive$)
  481.                 RestoreCursor cursor%
  482.                 IF (OldFilePath$ <> "") THEN
  483.                     j% = RemoveOldQTFiles(OldFilePath$)
  484.                     IF j% = FILES_REMOVED THEN
  485.                         GOTO CheckForOld3
  486.                     END IF
  487.                 END IF
  488.  
  489.             CheckForOld4:
  490.                 cursor% = ShowWaitCursor()
  491.                 OldFilePath$ = FindFileInTree("qtimcmgr.dll",CurrentDrive$)
  492.                 RestoreCursor cursor%
  493.                 IF (OldFilePath$ <> "") THEN
  494.                     j% = RemoveOldQTFiles(OldFilePath$)
  495.                     IF j% = FILES_REMOVED THEN
  496.                         GOTO CheckForOld4
  497.                     END IF
  498.                 END IF
  499.         NEXT i%
  500.     END IF
  501.  
  502.     UIPOP 1
  503.  
  504. END FUNCTION
  505.  
  506. FUNCTION RemoveOldQTFiles (FilePath$) STATIC AS INTEGER
  507.  
  508.     RemoveOldQTFiles = FILES_SKIPPED
  509.  
  510.     SPLITPATH FilePath$, drv$, dir$, filename$, ext$
  511.     DeadPath$ = drv$ + dir$
  512.  
  513.   rem check version resources if they exist
  514.       szVersion$ = GetVersionOfFile(FilePath$)
  515.  
  516.   rem dialog choices are Remove,Skip ("Continue","Back" buttons)
  517.     SetSymbolValue "EditTextIn", "Found Version [" + szVersion$ + "] on " + DeadPath$
  518.     sz$ = UIStartDlg(CUIDLL$, NUKEOLD, "FEditDlgProc", 0, "")
  519.     UIPop 1
  520.  
  521.     IF sz$ = "BACK" THEN
  522.         EXIT FUNCTION
  523.     END IF
  524.  
  525.     IF sz$ <> "CONTINUE" THEN
  526.         EXIT FUNCTION
  527.     END IF
  528.  
  529.     rem all versions
  530.         RemoveFile MakePath(DeadPath$, "qtim.dll"), cmoForce
  531.         RemoveFile MakePath(DeadPath$, "qtimcmgr.dll"), cmoForce
  532.     rem version 1.0.0
  533.         RemoveFile MakePath(DeadPath$, "qcmc.dll"), cmoForce
  534.         RemoveFile MakePath(DeadPath$, "qtjpeg.dll"), cmoForce
  535.         RemoveFile MakePath(DeadPath$, "qtraw.dll"), cmoForce
  536.         RemoveFile MakePath(DeadPath$, "qtsmc.dll"), cmoForce
  537.         RemoveFile MakePath(DeadPath$, "qtrpza.dll"), cmoForce
  538.         RemoveFile MakePath(DeadPath$, "qtrle.dll"), cmoForce
  539.         RemoveFile MakePath(DeadPath$, "qtcvid.dll"), cmoForce
  540.         RemoveFile MakePath(DeadPath$, "qtrt21.dll"), cmoForce
  541.         RemoveFile MakePath(DeadPath$, "qtvhdw.dll"), cmoForce
  542.     rem version 1.1.x and later
  543.         RemoveFile MakePath(DeadPath$, "mciqtw.drv"), cmoForce
  544.         RemoveFile MakePath(DeadPath$, "qcmc.qtc"), cmoForce
  545.         RemoveFile MakePath(DeadPath$, "qtjpeg.qtc"), cmoForce
  546.         RemoveFile MakePath(DeadPath$, "qtraw.qtc"), cmoForce
  547.         RemoveFile MakePath(DeadPath$, "qtsmc.qtc"), cmoForce
  548.         RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
  549.         RemoveFile MakePath(DeadPath$, "qtrle.qtc"), cmoForce
  550.         RemoveFile MakePath(DeadPath$, "qtcvid.qtc"), cmoForce
  551.         RemoveFile MakePath(DeadPath$, "qtrt21.qtc"), cmoForce
  552.         RemoveFile MakePath(DeadPath$, "navg.qtc"), cmoForce
  553.         RemoveFile MakePath(DeadPath$, "qtiv31.qtc"), cmoForce
  554.     rem version 1.9 and later
  555.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  556.         RemoveFile MakePath(DeadPath$, "qtyvu9.qtc"), cmoForce
  557.         RemoveFile MakePath(DeadPath$, "qtmsvc.qtc"), cmoForce
  558.         RemoveFile MakePath(DeadPath$, "qtiv32.qtc"), cmoForce
  559.         RemoveFile MakePath(DeadPath$, "qtiyvu9.qtc"), cmoForce
  560.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  561.         RemoveFile MakePath(DeadPath$, "dhio_dh.qtc"), cmoForce
  562.         RemoveFile MakePath(DeadPath$, "reelmgic.qtc"), cmoForce
  563.  
  564.     RemoveOldQTFiles = FILES_REMOVED
  565.  
  566. END FUNCTION
  567.  
  568. '$IFDEF DEBUG
  569.        IF DoesFileExist(MakePath(DEST$, "bin\qtim.dll"), femExists) = 1 THEN
  570.           szError$ = MakePath(DEST$, "BIN")
  571.           i% = GetResourceString (CUIDLL$, STR_MSG1)
  572.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  573.           i% = GetQTWVersion(MakePath(DEST$, "bin\qtim.dll"))
  574.           szVersion$ = GetSymbolValue ("VersionString")
  575.           szError$ = szError$ + szVersion$
  576.           i% = GetResourceString (CUIDLL$, STR_MSG2)
  577.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  578.           i% = GetResourceString (CUIDLL$, STR_WARNING)
  579.           szCaption$ = GetSymbolValue ("ResourceString")
  580.           i% = DoMsgBox(szError$, szCaption$, 20)
  581.           UIPop 1
  582.           IF i% = 7 THEN
  583.              GOTO GETPATHL1
  584.           END IF
  585.           IF szVersion$ = "1.0.0" THEN
  586.              i% = GetResourceString (CUIDLL$, STR_MSG3)
  587.              szError$ = GetSymbolValue ("ResourceString")
  588.              i% = GetResourceString (CUIDLL$, STR_WARNING)
  589.              szCaption$ = GetSymbolValue ("ResourceString")
  590.              i% = DoMsgBox(szError$, szCaption$, 20)
  591.        END IF
  592. '$ENDIF
  593.  
  594. FUNCTION CheckForSpace (DrivePath$) STATIC AS INTEGER
  595.     CheckForSpace = 0
  596.     
  597.     rem Check that we have enough free space to perform the install
  598.     rem -----------------------------------------------------------
  599.     ListSym$ = APPNEEDS$
  600.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  601.  
  602.     drive$ = MID$(DrivePath$, 1, 1)
  603.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  604.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  605.     free& = GetFreeSpaceForDrive(drive$)
  606.  
  607.     IF cost& >= free& THEN
  608.         CheckForSpace = NOSPACE
  609.     END IF
  610. END FUNCTION
  611.