home *** CD-ROM | disk | FTP | other *** search
/ You're the Director / You're The Director.iso / pc / setup.mst < prev    next >
Encoding:
Text File  |  1994-12-19  |  24.0 KB  |  680 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. rem end of runtime install functionality
  397. rem uncomment the following lines to have a strictly runtime installation script
  398. rem Indicate install completed OK
  399. rem -----------------------------
  400. '       Install = INSTALLOK     ' uncomment this line for runtime only setup
  401. '       EXIT FUNCTION           ' uncomment this line for runtime only setup
  402.  
  403. '***********************************************************************************
  404.  
  405.     rem Get the destination path; if it's bad, we display an error
  406.     rem ----------------------------------------------------------------
  407.  
  408.         SetSymbolValue "EditTextIn",DEST3$
  409.  
  410. GETPATH1:
  411.         SetSymbolValue "EditFocus","ALL"
  412.  
  413.         sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
  414.         DEST3$ = GetSymbolValue("EditTextOut")
  415.         UIPop 1
  416.  
  417.         IF sz$ = "CONTINUE" THEN
  418.             IF IsDirWritable(DEST3$) = 1 THEN
  419.                 GOTO DEVINSTALL
  420.             END IF
  421.         END IF
  422.  
  423.     rem button is labeled "skip" in dialog resource
  424.         IF sz$ = "BACK" THEN
  425.             Install = INSTALLOK
  426.             EXIT FUNCTION
  427.         END IF
  428.  
  429.         IF sz$ = "EXIT" THEN
  430.             GOTO ASKQUIT2
  431.         END IF
  432.  
  433.  
  434.         IF IsDirWritable(DEST3$) = 0 THEN
  435.             sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  436.             UIPop 1
  437.             GOTO GETPATH1
  438.         END IF
  439.  
  440.  
  441.  
  442. rem ASKQUIT2: The user requested quit; does (s)he really want to?
  443. rem ------------------------------------------------------------
  444. ASKQUIT2:
  445.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  446.     UIPop 1
  447.     IF sz$ = "CONTINUE" THEN
  448.        GOTO GETPATH1
  449.     END IF
  450.  
  451. rem Clean up all processing
  452. rem -----------------------
  453. CLEANUP2:
  454.     i% = StopCustomSetup (HinstFrame(), HwndFrame ())
  455.  
  456.     END
  457.  
  458.  
  459. '***************************************************************
  460. REM THIS SECTION COMPLETES THE DEVELOPER INSTALL AND ANNOTATES THE APPROPRIATE INI FILES
  461.  
  462. DEVINSTALL:
  463.  
  464.  
  465.     ClearCopyList
  466.  
  467.     AddSectionFilesToCopyList "QTW", SOURCE$, DEST3$
  468.     CopyFilesInCopyList
  469.  
  470.     rem Create a Program Manager group
  471.     rem ------------------------------
  472.            i% = GetResourceString (CUIDLL$, STR_GROUP)
  473.            GROUP$ = GetSymbolValue ("ResourceString")
  474.            CreateProgmanGroup GROUP$, "", cmoNone
  475.            i% = GetResourceString (CUIDLL$, STR_SAMPLE)
  476.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$,"player.exe ") + MakePath(DEST3$,"samples\sample.mov"), "", cmoOverwrite
  477.            i% = GetResourceString (CUIDLL$, STR_PLAYER)
  478.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$,"player.exe"), "", cmoOverwrite
  479.            i% = GetResourceString (CUIDLL$, STR_VIEWER)
  480.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$,"viewer.exe"), "", cmoOverwrite
  481.            i% = GetResourceString (CUIDLL$, STR_HELP)
  482.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST2$, "winhelp.exe ") + MakePath(DEST3$,"help\qtw.hlp"), "", cmoOverwrite
  483.            CreateProgmanItem GROUP$, "Read Me", MakePath(DEST2$,"readme.exe"), "", cmoOverwrite
  484.  
  485.         END IF
  486.  
  487.     rem Indicate install completed OK
  488.     rem -----------------------------
  489.         Install = INSTALLOK
  490.  
  491. END FUNCTION
  492.  
  493. rem MakePath: Builds path from directory and file
  494. rem ---------------------------------------------
  495. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  496.  
  497.     IF szDir$ = "" THEN
  498.        MakePath = szFile$
  499.  
  500.     ELSEIF szFile$ = "" THEN
  501.        MakePath = szDir$
  502.  
  503.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  504.        MakePath = szDir$ + szFile$
  505.  
  506.     ELSE
  507.        MakePath = szDir$ + "\" + szFile$
  508.  
  509.     END IF
  510.  
  511. END FUNCTION
  512.  
  513. rem Check for Older versions of the Quicktime For Windows components
  514. rem ---------------------------------------------------------------
  515. FUNCTION CheckForOld STATIC AS INTEGER
  516.  
  517.     sz$ = UIStartDlg(CUIDLL$, OLDMESS, "FModelessDlgProc", 0, "")
  518.  
  519. CheckForOld1:
  520.     cursor% = ShowWaitCursor()
  521.     OldFilePath$ = FindFileUsingFileOpen("qtim.dll")
  522.     RestoreCursor cursor%
  523.     IF (OldFilePath$ <> "") THEN
  524.         j% = RemoveOldQTFiles(OldFilePath$)
  525.         IF j% = FILES_REMOVED THEN
  526.             GOTO CheckForOld1
  527.         END IF
  528.     END IF
  529.  
  530. CheckForOld2:
  531.     cursor% = ShowWaitCursor()
  532.     OldFilePath$ = FindFileUsingFileOpen("qtimcmgr.dll")
  533.     RestoreCursor cursor%
  534.     IF (OldFilePath$ <> "") THEN
  535.         j% = RemoveOldQTFiles(OldFilePath$)
  536.         IF j% = FILES_REMOVED THEN
  537.             GOTO CheckForOld2
  538.         END IF
  539.     END IF
  540.  
  541.     GetLocalHardDrivesList "HardDrives"
  542.     NumDrives% = GetListLength("HardDrives")
  543.  
  544.     IF (NUMDRIVES% > 0) THEN
  545.         FOR i% = 1 TO NumDrives% STEP 1
  546.             CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
  547.             CheckForOld3:
  548.                 cursor% = ShowWaitCursor()
  549.                 OldFilePath$ = FindFileInTree("qtim.dll",CurrentDrive$)
  550.                 RestoreCursor cursor%
  551.                 IF (OldFilePath$ <> "") THEN
  552.                     j% = RemoveOldQTFiles(OldFilePath$)
  553.                     IF j% = FILES_REMOVED THEN
  554.                         GOTO CheckForOld3
  555.                     END IF
  556.                 END IF
  557.  
  558.             CheckForOld4:
  559.                 cursor% = ShowWaitCursor()
  560.                 OldFilePath$ = FindFileInTree("qtimcmgr.dll",CurrentDrive$)
  561.                 RestoreCursor cursor%
  562.                 IF (OldFilePath$ <> "") THEN
  563.                     j% = RemoveOldQTFiles(OldFilePath$)
  564.                     IF j% = FILES_REMOVED THEN
  565.                         GOTO CheckForOld4
  566.                     END IF
  567.                 END IF
  568.         NEXT i%
  569.     END IF
  570.  
  571.     UIPOP 1
  572.  
  573. END FUNCTION
  574.  
  575. FUNCTION RemoveOldQTFiles (FilePath$) STATIC AS INTEGER
  576.  
  577.     RemoveOldQTFiles = FILES_SKIPPED
  578.  
  579.     SPLITPATH FilePath$, drv$, dir$, filename$, ext$
  580.     DeadPath$ = drv$ + dir$
  581.  
  582.   rem check version resources if they exist
  583.       szVersion$ = GetVersionOfFile(FilePath$)
  584.  
  585.   rem dialog choices are Remove,Skip ("Continue","Back" buttons)
  586.     SetSymbolValue "EditTextIn", "Found Version [" + szVersion$ + "] on " + DeadPath$
  587.     sz$ = UIStartDlg(CUIDLL$, NUKEOLD, "FEditDlgProc", 0, "")
  588.     UIPop 1
  589.  
  590.     IF sz$ = "BACK" THEN
  591.         EXIT FUNCTION
  592.     END IF
  593.  
  594.     IF sz$ <> "CONTINUE" THEN
  595.         EXIT FUNCTION
  596.     END IF
  597.  
  598.     rem all versions
  599.         RemoveFile MakePath(DeadPath$, "qtim.dll"), cmoForce
  600.         RemoveFile MakePath(DeadPath$, "qtimcmgr.dll"), cmoForce
  601.     rem version 1.0.0
  602.         RemoveFile MakePath(DeadPath$, "qcmc.dll"), cmoForce
  603.         RemoveFile MakePath(DeadPath$, "qtjpeg.dll"), cmoForce
  604.         RemoveFile MakePath(DeadPath$, "qtraw.dll"), cmoForce
  605.         RemoveFile MakePath(DeadPath$, "qtsmc.dll"), cmoForce
  606.         RemoveFile MakePath(DeadPath$, "qtrpza.dll"), cmoForce
  607.         RemoveFile MakePath(DeadPath$, "qtrle.dll"), cmoForce
  608.         RemoveFile MakePath(DeadPath$, "qtcvid.dll"), cmoForce
  609.         RemoveFile MakePath(DeadPath$, "qtrt21.dll"), cmoForce
  610.         RemoveFile MakePath(DeadPath$, "qtvhdw.dll"), cmoForce
  611.     rem version 1.1.x and later
  612.         RemoveFile MakePath(DeadPath$, "mciqtw.drv"), cmoForce
  613.         RemoveFile MakePath(DeadPath$, "qcmc.qtc"), cmoForce
  614.         RemoveFile MakePath(DeadPath$, "qtjpeg.qtc"), cmoForce
  615.         RemoveFile MakePath(DeadPath$, "qtraw.qtc"), cmoForce
  616.         RemoveFile MakePath(DeadPath$, "qtsmc.qtc"), cmoForce
  617.         RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
  618.         RemoveFile MakePath(DeadPath$, "qtrle.qtc"), cmoForce
  619.         RemoveFile MakePath(DeadPath$, "qtcvid.qtc"), cmoForce
  620.         RemoveFile MakePath(DeadPath$, "qtrt21.qtc"), cmoForce
  621.         RemoveFile MakePath(DeadPath$, "navg.qtc"), cmoForce
  622.         RemoveFile MakePath(DeadPath$, "qtiv31.qtc"), cmoForce
  623.     rem version 1.9 and later
  624.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  625.         RemoveFile MakePath(DeadPath$, "qtyvu9.qtc"), cmoForce
  626.         RemoveFile MakePath(DeadPath$, "qtmsvc.qtc"), cmoForce
  627.         RemoveFile MakePath(DeadPath$, "qtiv32.qtc"), cmoForce
  628.         RemoveFile MakePath(DeadPath$, "qtiyvu9.qtc"), cmoForce
  629.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  630.         RemoveFile MakePath(DeadPath$, "dhio_dh.qtc"), cmoForce
  631.         RemoveFile MakePath(DeadPath$, "reelmgic.qtc"), cmoForce
  632.  
  633.     RemoveOldQTFiles = FILES_REMOVED
  634.  
  635. END FUNCTION
  636.  
  637. '$IFDEF DEBUG
  638.        IF DoesFileExist(MakePath(DEST$, "bin\qtim.dll"), femExists) = 1 THEN
  639.           szError$ = MakePath(DEST$, "BIN")
  640.           i% = GetResourceString (CUIDLL$, STR_MSG1)
  641.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  642.           i% = GetQTWVersion(MakePath(DEST$, "bin\qtim.dll"))
  643.           szVersion$ = GetSymbolValue ("VersionString")
  644.           szError$ = szError$ + szVersion$
  645.           i% = GetResourceString (CUIDLL$, STR_MSG2)
  646.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  647.           i% = GetResourceString (CUIDLL$, STR_WARNING)
  648.           szCaption$ = GetSymbolValue ("ResourceString")
  649.           i% = DoMsgBox(szError$, szCaption$, 20)
  650.           UIPop 1
  651.           IF i% = 7 THEN
  652.              GOTO GETPATHL1
  653.           END IF
  654.           IF szVersion$ = "1.0.0" THEN
  655.              i% = GetResourceString (CUIDLL$, STR_MSG3)
  656.              szError$ = GetSymbolValue ("ResourceString")
  657.              i% = GetResourceString (CUIDLL$, STR_WARNING)
  658.              szCaption$ = GetSymbolValue ("ResourceString")
  659.              i% = DoMsgBox(szError$, szCaption$, 20)
  660.        END IF
  661. '$ENDIF
  662.  
  663. FUNCTION CheckForSpace (DrivePath$) STATIC AS INTEGER
  664.     CheckForSpace = 0
  665.     
  666.     rem Check that we have enough free space to perform the install
  667.     rem -----------------------------------------------------------
  668.     ListSym$ = APPNEEDS$
  669.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  670.  
  671.     drive$ = MID$(DrivePath$, 1, 1)
  672.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  673.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  674.     free& = GetFreeSpaceForDrive(drive$)
  675.  
  676.     IF cost& >= free& THEN
  677.         CheckForSpace = NOSPACE
  678.     END IF
  679. END FUNCTION
  680.