home *** CD-ROM | disk | FTP | other *** search
/ ErotiCafe / ErotiCafe.iso / pc / setup / setup.mst < prev    next >
Encoding:
Text File  |  1993-08-02  |  14.8 KB  |  457 lines

  1.  
  2. rem ---------------------------------------------------------------------
  3. rem
  4. rem SETUP.MST    - MSSETUP Installation Script
  5. rem
  6. rem                Version 1.0
  7. rem
  8. rem                (c) 1988-1992 Apple Computer, Inc. All Rights Reserved.
  9. rem
  10. rem ---------------------------------------------------------------------
  11.  
  12.  
  13. rem Required includes to interface with MSSETUP DLL's
  14. rem -------------------------------------------------
  15. '$INCLUDE 'setupapi.inc'
  16. '$INCLUDE 'msdetect.inc'
  17.  
  18.  
  19. rem Dialog box id's
  20. rem ---------------
  21. rem Note: If MSSETUP were really smart, we could use the
  22. rem #defines in DIALOGS.HR. Instead, we must manually
  23. rem keep them in step
  24. rem ----------------------------------------------------
  25.     CONST DESTPATH      = 300          ''Gets destination path
  26.     CONST EXITQUIT      = 600          ''Exits on user request
  27.     CONST EXITSUCCESS   = 700          ''Exits when install is done
  28.     CONST OPTIONS       = 800          ''Gets AUTOEXEC.BAT options
  29.     CONST ASKSETUP      = 1100         ''Gets installation type (Local etc)
  30.     CONST TOOBIG        = 6300         ''Not enough space on target disk error
  31.     CONST BADPATH       = 6400         ''Bad destination path error
  32.     CONST BADWINDOWS    = 6500         ''Wrong Windows release
  33.     CONST EXITFAILURE   = 6600         ''Exits on error
  34.  
  35.  
  36. rem String id's
  37. rem -----------
  38. rem Note: If MSSETUP were really smart, we could use the
  39. rem #defines in DIALOGS.HR. Instead, we must manually
  40. rem keep them in step
  41. rem ----------------------------------------------------
  42.     CONST STR_PLAYER    = 1024         ''Movie Player
  43.     CONST STR_VIEWER    = 1025         ''Picture Viewer
  44.     CONST STR_GROUP     = 1026         ''Program Manager group
  45.     CONST STR_TITLE     = 1027         ''Installer Title
  46.     CONST STR_MSG1      = 1028         ''Version error message part 1
  47.     CONST STR_MSG2      = 1029         ''Version error message part 2
  48.     CONST STR_WARNING   = 1030         ''Warning
  49.  
  50.  
  51. rem Miscellaneous Constants
  52. rem -----------------------
  53.     CONST NOLOGO = 1                   ''Dummy NULL bitmap (must be 1)
  54.     CONST LOGO = 2                     ''Background bitmap
  55.     CONST MOVIE = 2                    ''Movie placeholder bitmap
  56.     CONST NOSPACE = 1                  ''No space to complete install
  57.     CONST INSTALLOK = 2                ''Install completed OK
  58.     CONST INSTALLFAILED =3             ''Install failed for some reason
  59.  
  60.  
  61. rem Global Variables
  62. rem ----------------
  63.     GLOBAL SOURCE$                     ''Source directory
  64.     GLOBAL DEST$                       ''Default destination directory
  65.     GLOBAL SETUPTYPE$                  ''Setup type (Local, Client, Server)
  66.     GLOBAL LOCALINST$                  ''Local install
  67.     GLOBAL CLIENTINST$                 ''Client install
  68.     GLOBAL SERVERINST$                 ''Server install
  69.     GLOBAL MODAUTOEXECOPT$             ''Modify AUTOEXEC.BAT option
  70.     GLOBAL MODAUTOEXEC$                ''Modify AUTOEXEC.BAT
  71.     GLOBAL COPYAUTOEXEC$               ''Copy AUTOEXEC.BAT and modify it
  72.     GLOBAL CUIDLL$                     ''User interface DLL
  73.     GLOBAL SETUPPATH$                  ''Setup destination path
  74.     GLOBAL HELPPROC$                   ''Help dialog procedure
  75.     GLOBAL EXTRACOSTS$                 ''List of extra costs to add per drive
  76.     GLOBAL APPNEEDS$                   ''Disk space costs per drive
  77.     GLOBAL SECTIONKEY$                 ''INF file section key
  78.     GLOBAL SUCCESS%                    ''Installation completion code
  79.  
  80.  
  81. rem Initialize global vriables
  82. rem --------------------------
  83.     LOCALINST$      = "1"
  84.     CLIENTINST$     = "2"
  85.     SERVERINST$     = "3"
  86.     MODAUTOEXEC$    = "1"
  87.     COPYAUTOEXEC$   = "2"
  88.     SETUPPATH$      = "C:\QTW"
  89.     SETUPTYPE$      = LOCALINST$
  90.     SOURCE$         = GetSymbolValue("STF_SRCDIR")
  91.     DEST$           = SETUPPATH$
  92.     MODAUTOEXECOPT$ = MODAUTOEXEC$
  93.     SUCCESS%        = INSTALLFAILED
  94.     EXTRACOSTS$     = "ExtraCosts"
  95.     APPNEEDS$       = "AppNeeds"
  96.     SECTIONKEY$     = "SectionKey"
  97.  
  98.     FOR i% = 1 TO 26 STEP 1
  99.         AddListItem EXTRACOSTS$, "16384"
  100.     NEXT i%
  101.  
  102.  
  103. rem Get name of localized user interface dialogs
  104. rem --------------------------------------------
  105.     CUIDLL$ = "SETUP"+GetIniKeyString("WIN.INI", "intl", "sLanguage")+".DLL"
  106.     IF DoesFileExist(CUIDLL$, femExists) = 0 THEN
  107.        CUIDLL$ = "SETUPENU.DLL"
  108.     END IF
  109.  
  110.  
  111. rem Subroutines and Functions
  112. rem -------------------------
  113.     DECLARE FUNCTION Install AS INTEGER
  114.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  115.     DECLARE FUNCTION GetResourceString LIB "setupenu.dll" (szResource$, idString%) AS INTEGER
  116.     DECLARE FUNCTION StartCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  117.     DECLARE FUNCTION StopCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  118.     DECLARE FUNCTION UpdateAutoExecBat LIB "setupenu.dll" (szIn$, szOut$, szDest$) AS INTEGER
  119.  
  120.  
  121. rem Initialize custom setup logic
  122. rem -----------------------------
  123.     SetBitmap CUIDLL$, NOLOGO
  124.     i% = GetResourceString (CUIDLL$, STR_TITLE)
  125.     SetTitle GetSymbolValue ("ResourceString")
  126.     i% = StartCustomSetup (HinstFrame(), HwndFrame ())
  127.     i% = SetBeepingMode(1)
  128.  
  129.  
  130. rem Make sure that we are running on Windows 3.1 or better
  131. rem ------------------------------------------------------
  132.     IF GetWindowsMajorVersion() < 3 THEN
  133.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  134.        UIPop 1
  135.        GOTO CLEANUP
  136.     END IF
  137.  
  138.     IF (GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 10) THEN
  139.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  140.        UIPop 1
  141.        GOTO CLEANUP
  142.     END IF
  143.  
  144.  
  145. rem Make sure that we are running on a 286 or better
  146. rem ------------------------------------------------
  147.     IF GetWinFlags() AND 2 THEN
  148.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  149.        UIPop 1
  150.        GOTO CLEANUP
  151.     END IF
  152.  
  153.  
  154. rem Find and read the .INF file. We'll use DISKETTE.INF when installing
  155. rem from drive A: or B:, CD.INF otherwise.
  156. rem -------------------------------------------------------------------
  157.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  158.  
  159.     IF szInf$ = "" THEN
  160.        szTemp$ = GetSymbolValue("STF_SRCDIR")
  161.        SPLITPATH szTemp$, drv$, dir$, filename$, ext$
  162.        IF (drv$ = "A:") OR (drv$ = "B:") THEN
  163.           szInf$ = szTemp$ + "DISKETTE.INF"
  164.        ELSE
  165.           szInf$ = szTemp$ + "CD.INF"
  166.        END IF
  167.     END IF
  168.  
  169.     ReadInfFile szInf$
  170.  
  171.  
  172. rem Get the setup type: Local, Client or Server
  173. rem -------------------------------------------
  174. ITYPE:
  175.     SetSymbolValue "RadioDefault", SETUPTYPE$
  176.  
  177. ITYPEL1:
  178.     sz$ = UIStartDlg(CUIDLL$, ASKSETUP, "FRadioDlgProc", 0, "")
  179.  
  180.     SETUPTYPE$ = GetSymbolValue("ButtonChecked")
  181.  
  182.     IF sz$ = "CONTINUE" THEN
  183.        UIPop(1)
  184.  
  185.     ELSEIF sz$ = "REACTIVATE" THEN
  186.        GOTO ITYPEL1
  187.  
  188.     ELSE
  189.        GOSUB ASKQUIT
  190.        GOTO ITYPE
  191.  
  192.     END IF
  193.  
  194.  
  195. rem Get the AUTOEXEC.BAT modification option
  196. rem ----------------------------------------
  197. OPTION:
  198.     IF SETUPTYPE$ = SERVERINST$ THEN
  199.        GOTO GETPATH
  200.     END IF
  201.  
  202.     SetSymbolValue "RadioDefault", MODAUTOEXECOPT$
  203.  
  204. OPTL1:
  205.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", 0, "")
  206.  
  207.     MODAUTOEXECOPT$ = GetSymbolValue("ButtonChecked")
  208.  
  209.     IF sz$ = "CONTINUE" THEN
  210.        UIPop(1)
  211.  
  212.     ELSEIF sz$ = "REACTIVATE" THEN
  213.        GOTO OPTL1
  214.  
  215.     ELSEIF sz$ = "BACK" THEN
  216.        UIPop 1
  217.        GOTO ITYPE
  218.  
  219.     ELSE
  220.        GOSUB ASKQUIT
  221.        GOTO OPTION
  222.  
  223.     END IF
  224.  
  225.  
  226. rem Get the destination path; if it's bad, we display an error
  227. rem ----------------------------------------------------------------
  228. GETPATH:
  229.     IF SETUPTYPE$ = CLIENTINST$ THEN
  230.        DEST$ = SOURCE$
  231.        GOTO INSTALL
  232.     END IF
  233.  
  234.     SetSymbolValue "EditTextIn", DEST$
  235.     SetSymbolValue "EditFocus", "END"
  236.  
  237. GETPATHL1:
  238.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
  239.  
  240.     DEST$ = GetSymbolValue("EditTextOut")
  241.  
  242.     IF sz$ = "CONTINUE" THEN
  243.        IF IsDirWritable(DEST$) = 0 THEN
  244.           GOSUB BADPATH
  245.           GOTO GETPATHL1
  246.        END IF
  247.  
  248.        IF DoesFileExist(MakePath(DEST$, "BIN\QTIM.DLL"), femExists) = 1 THEN
  249.           szError$ = MakePath(DEST$, "BIN")
  250.           i% = GetResourceString (CUIDLL$, STR_MSG1)
  251.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  252.           szError$ = szError$ + GetVersionOfFile(MakePath(DEST$, "BIN\QTIM.DLL"))
  253.           i% = GetResourceString (CUIDLL$, STR_MSG2)
  254.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  255.           i% = GetResourceString (CUIDLL$, STR_WARNING)
  256.           szCaption$ = GetSymbolValue ("ResourceString")
  257.           i% = DoMsgBox(szError$, szCaption$, 20)
  258.           UIPop 1
  259.           IF i% = 7 THEN
  260.              GOTO GETPATHL1
  261.           END IF
  262.        END IF
  263.  
  264.        UIPop 1
  265.  
  266.     ELSEIF sz$ = "REACTIVATE" THEN
  267.        GOTO GETPATHL1
  268.  
  269.     ELSEIF sz$ = "BACK" THEN
  270.        UIPop 1
  271.        GOTO OPTION
  272.  
  273.     ELSE
  274.        GOSUB ASKQUIT
  275.        GOTO GETPATH
  276.  
  277.     END IF
  278.  
  279.  
  280. rem Perform actual installation
  281. rem ---------------------------
  282. INSTALL:
  283.     SUCCESS% = Install
  284.  
  285.     IF SUCCESS% = NOSPACE THEN
  286.        GOSUB TOOBIG
  287.        GOTO GETPATH
  288.     END IF
  289.  
  290.  
  291. rem When done, issue dialog
  292. rem -----------------------
  293. QUIT:
  294.     IF SUCCESS% = INSTALLOK THEN
  295.        sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  296.     ELSE
  297.        sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfo0DlgProc", 0, "")
  298.     END IF
  299.     UIPop 1
  300.  
  301.  
  302. rem Clean up all processing
  303. rem -----------------------
  304. CLEANUP:
  305.     i% = StopCustomSetup (HinstFrame(), HwndFrame ())
  306.  
  307.     END
  308.  
  309.  
  310. rem ASKQUIT: The user requested quit; does (s)he really want to?
  311. rem ------------------------------------------------------------
  312. ASKQUIT:
  313.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  314.     UIPop 1
  315.     IF sz$ = "CONTINUE" THEN
  316.        RETURN
  317.     END IF
  318.     GOTO CLEANUP
  319.  
  320.  
  321. rem BADPATH: The user entered an invalid destination directory
  322. rem ----------------------------------------------------------
  323. BADPATH:
  324.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  325.     IF sz$ = "REACTIVATE" THEN
  326.        GOTO BADPATH
  327.     END IF
  328.     UIPop 1
  329.  
  330.     RETURN
  331.  
  332.  
  333. rem TOOBIG: The source files won't fit on the requested destination disk
  334. rem --------------------------------------------------------------------
  335. TOOBIG:
  336.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  337.     IF sz$ = "REACTIVATE" THEN
  338.        GOTO TOOBIG
  339.     END IF
  340.     UIPop 1
  341.  
  342.     RETURN
  343.  
  344.  
  345. rem Install: Perform actual installation
  346. rem ------------------------------------
  347. FUNCTION Install STATIC AS INTEGER
  348.  
  349.     rem For Local or Server installs ...
  350.     rem --------------------------------
  351.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = SERVERINST$) THEN
  352.  
  353.        rem Create the destination directory
  354.        rem --------------------------------
  355.            CreateDir DEST$, cmoNone
  356.  
  357.        rem Build the copy list
  358.        rem -------------------
  359.            AddSectionFilesToCopyList "Files", SOURCE$, DEST$
  360.            IF SETUPTYPE$ = SERVERINST$ THEN
  361.               AddSectionFilesToCopyList "Setup", SOURCE$, DEST$
  362.            END IF
  363.  
  364.        rem Check that we have enough free space to perform the install
  365.        rem -----------------------------------------------------------
  366.            ListSym$ = APPNEEDS$
  367.            StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  368.  
  369.            drive$ = MID$(DEST$, 1, 1)
  370.            ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  371.            cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  372.            free& = GetFreeSpaceForDrive(drive$)
  373.  
  374.            IF cost& >= free& THEN
  375.               Install = NOSPACE
  376.               EXIT FUNCTION
  377.            END IF
  378.  
  379.        rem Copy files necessary for installation from server
  380.        rem -------------------------------------------------
  381.            IF SETUPTYPE$ = SERVERINST$ THEN
  382.               CopyFile MakePath(SOURCE$, "CD.INF"), MakePath(DEST$, "CD.INF"), cmoOverwrite, 0
  383.               CopyFile MakePath(SOURCE$, "DISKETTE.INF"), MakePath(DEST$, "DISKETTE.INF"), cmoOverwrite, 0
  384.               CopyFile MakePath(SOURCE$, "DISK1.ID"), MakePath(DEST$, "DISK1.ID"), cmoOverwrite, 0
  385.            END IF
  386.  
  387.        rem Copy all the files from the source to the destination
  388.        rem -----------------------------------------------------
  389.            CopyFilesInCopyList
  390.  
  391.         END IF
  392.  
  393.     rem Update AUTOEXEC.BAT
  394.     rem -------------------
  395.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  396.            i% = UpdateAutoExecBat("C:\AUTOEXEC.BAT", "C:\AUTOEXEC.QTW", DEST$)
  397.            IF MODAUTOEXECOPT$ = MODAUTOEXEC$ THEN
  398.               CopyFile "C:\AUTOEXEC.BAT", "C:\AUTOEXEC.BAK", cmoOverwrite, 0
  399.               CopyFile "C:\AUTOEXEC.QTW", "C:\AUTOEXEC.BAT", cmoOverwrite, 0
  400.               RemoveFile "C:\AUTOEXEC.QTW", cmoForce
  401.            END IF
  402.         END IF
  403.  
  404.     rem Update WIN.INI to establish associations
  405.     rem ----------------------------------------
  406.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  407.            CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(DEST$,"bin\player.exe") + " ^.mov", cmoNone
  408.            CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(DEST$,"bin\viewer.exe") + " ^.pic", cmoNone
  409.         END IF
  410.  
  411.     rem Create QTW.INI
  412.     rem ----------------
  413.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  414.            ini$ = MakePath(GetWindowsDir(), "QTW.INI")
  415.            CreateIniKeyValue ini$, "QuickTime for Windows", "Optimize", "Full" , cmoNone
  416.         END IF
  417.  
  418.     rem Create a Program Manager group
  419.     rem ------------------------------
  420.         IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  421.            i% = GetResourceString (CUIDLL$, STR_GROUP)
  422.            GROUP$ = GetSymbolValue ("ResourceString")
  423.            CreateProgmanGroup GROUP$, "", cmoNone
  424.            i% = GetResourceString (CUIDLL$, STR_PLAYER)
  425.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST$,"bin\player.exe"), "", cmoOverwrite
  426.            i% = GetResourceString (CUIDLL$, STR_VIEWER)
  427.            CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST$,"bin\viewer.exe"), "", cmoOverwrite
  428.         END IF
  429.  
  430.     rem Indicate install completed OK
  431.     rem -----------------------------
  432.         Install = INSTALLOK
  433.  
  434. END FUNCTION
  435.  
  436.  
  437. rem MakePath: Builds path from directory and file
  438. rem ---------------------------------------------
  439. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  440.  
  441.     IF szDir$ = "" THEN
  442.        MakePath = szFile$
  443.  
  444.     ELSEIF szFile$ = "" THEN
  445.        MakePath = szDir$
  446.  
  447.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  448.        MakePath = szDir$ + szFile$
  449.  
  450.     ELSE
  451.        MakePath = szDir$ + "\" + szFile$
  452.  
  453.     END IF
  454.  
  455. END FUNCTION
  456.  
  457.