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