home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Today (UK) 9 / cdromtoday9-coverdisc.bin / setup / setup.mst < prev    next >
Text File  |  1994-09-21  |  10KB  |  301 lines

  1. rem Required includes to interface with MSSETUP DLL's
  2. rem -------------------------------------------------
  3. '$INCLUDE 'setupapi.inc'
  4. '$INCLUDE 'msdetect.inc'
  5.  
  6.  
  7. rem Dialog box id's
  8. rem ---------------
  9. rem Note: If MSSETUP were really smart, we could use the
  10. rem #defines in DIALOGS.HR. Instead, we must manually
  11. rem keep them in step
  12. rem ----------------------------------------------------
  13.     CONST DESTPATH      = 300          ''Gets destination path
  14.     CONST EXITQUIT      = 600          ''Exits on user request
  15.     CONST EXITSUCCESS   = 700          ''Exits when install is done
  16.     CONST ASKSETUP      = 800          ''Gets setup options
  17.     CONST TOOBIG        = 6300         ''Not enough space on target disk error
  18.     CONST BADPATH       = 6400         ''Bad destination path error
  19.     CONST BADWINDOWS    = 6500         ''Wrong Windows release
  20.     CONST BADCOLORS     = 6550         ''Not in 256 colors
  21.     CONST EXITFAILURE   = 6600         ''Exits on error
  22.  
  23.  
  24. rem String id's
  25. rem -----------
  26. rem Note: If MSSETUP were really smart, we could use the
  27. rem #defines in DIALOGS.HR. Instead, we must manually
  28. rem keep them in step
  29. rem ----------------------------------------------------
  30.     CONST STR_UTILITY   = 1024         ''Utility
  31.     CONST STR_GROUP     = 1025         ''Program Manager group
  32.     CONST STR_TITLE     = 1026         ''Installer Title
  33.     CONST STR_MSG1      = 1027         ''Version error message part 1
  34.     CONST STR_MSG2      = 1028         ''Version error message part 2
  35.     CONST STR_WARNING   = 1029         ''Warning
  36.     CONST STR_README    = 1030         ''Read Me
  37.  
  38.  
  39. rem Miscellaneous Constants
  40. rem -----------------------
  41.     CONST NOLOGO = 1                   ''Dummy NULL bitmap (must be 1)
  42.     CONST NOSPACE = 1                  ''No space to complete install
  43.     CONST INSTALLOK = 2                ''Install completed OK
  44.     CONST INSTALLFAILED =3             ''Install failed for some reason
  45.  
  46.  
  47. rem Global Variables
  48. rem ----------------
  49.     GLOBAL SOURCE$                     ''Source directory
  50.     GLOBAL SRCDIR$                     ''Source directory
  51.     GLOBAL DEST$                       ''Default destination directory
  52.     GLOBAL SETUPTYPE$                  ''Setup type (Local, Client, Server)
  53.     GLOBAL QUICKINST$                  ''Setup type (Local, Client, Server)
  54.     GLOBAL PARTIALINST$                ''Setup type (Local, Client, Server)
  55.     GLOBAL FULLINST$                   ''Setup type (Local, Client, Server)
  56.     GLOBAL QTWDIR$                     ''QTW directory
  57.     GLOBAL CUIDLL$                     ''User interface DLL
  58.     GLOBAL SETUPPATH$                  ''Setup destination path
  59.     GLOBAL HELPPROC$                   ''Help dialog procedure
  60.     GLOBAL EXTRACOSTS$                 ''List of extra costs to add per drive
  61.     GLOBAL APPNEEDS$                   ''Disk space costs per drive
  62.     GLOBAL SECTIONKEY$                 ''INF file section key
  63.     GLOBAL SUCCESS%                    ''Installation completion code
  64.  
  65.  
  66. rem Initialize global vriables
  67. rem --------------------------
  68.     QUICKINST$      = "1"
  69.     PARTIALINST$    = "2"
  70.     FULLINST$       = "3"
  71.     SETUPPATH$      = "C:\"
  72.     SOURCE$         = GetSymbolValue("STF_SRCDIR")
  73.     DEST$           = SETUPPATH$
  74.     SUCCESS%        = INSTALLFAILED
  75.     EXTRACOSTS$     = "ExtraCosts"
  76.     APPNEEDS$       = "AppNeeds"
  77.     SECTIONKEY$     = "SectionKey"
  78.  
  79.     FOR i% = 1 TO 26 STEP 1
  80.         AddListItem EXTRACOSTS$, "16384"
  81.     NEXT i%
  82.  
  83.  
  84. rem Get name of localized user interface dialogs
  85. rem --------------------------------------------
  86.     CUIDLL$ = "setup.DLL"
  87.  
  88.  
  89. rem Subroutines and Functions
  90. rem -------------------------
  91.     DECLARE FUNCTION Install AS INTEGER
  92.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  93.     DECLARE FUNCTION GetDLLVersion LIB "setup.dll" (szDLL$) AS INTEGER
  94.     DECLARE FUNCTION HideCriticalDirectory LIB "setup.dll" (szDir$) AS INTEGER
  95.     DECLARE FUNCTION Has256Colors LIB "setup.dll" (hinst%) AS INTEGER
  96.     DECLARE FUNCTION GetResourceString LIB "setup.dll" (szResource$, idString%) AS INTEGER
  97.     DECLARE FUNCTION StartCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
  98.     DECLARE FUNCTION StopCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
  99. rem DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  100.  
  101.  
  102. rem Initialize custom setup logic
  103. rem -----------------------------
  104.     SetBitmap CUIDLL$, NOLOGO
  105.     i% = GetResourceString (CUIDLL$, STR_TITLE)
  106.     SetTitle GetSymbolValue ("ResourceString")
  107.     i% = StartCustomSetup (HinstFrame(), HwndFrame ())
  108.     i% = SetBeepingMode(1)
  109.  
  110.  
  111. rem Make sure that we are running on Windows 3.1 or better
  112. rem ------------------------------------------------------
  113.     IF GetWindowsMajorVersion() < 3 THEN
  114.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  115.        UIPop 1
  116.        GOTO CLEANUP
  117.     END IF
  118.  
  119.     IF (GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 10) THEN
  120.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  121.        UIPop 1
  122.        GOTO CLEANUP
  123.     END IF
  124.  
  125.  
  126. rem Make sure that we are running on a 386 or better
  127. rem ------------------------------------------------
  128.     IF GetWinFlags() AND 2 THEN
  129.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  130.        UIPop 1
  131.        GOTO CLEANUP
  132.     END IF
  133.  
  134.  
  135. rem Find and read the .INF file
  136. rem ---------------------------
  137.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  138.  
  139.     IF szInf$ = "" THEN
  140.        szTemp$ = GetSymbolValue("STF_SRCDIR")
  141.        szInf$ = szTemp$ + "CD.INF"
  142.     END IF
  143.  
  144.     ReadInfFile szInf$
  145.  
  146.  
  147. rem Where is QTW?
  148. rem -------------
  149. FINDQTW:
  150.     sz$ = FindTargetOnEnvVar("QTIM.DLL", "PATH")
  151.     IF sz$ = "" THEN
  152.        QTWDIR$ = GetWindowsSysDir()
  153.     ELSE
  154.        QTWDIR$ = MID$(sz$,1,INSTR(sz$,"QTIM.DLL")-1)
  155.     END IF
  156.  
  157.  
  158. rem Perform actual installation
  159. rem ---------------------------
  160. INSTALLME:
  161.     SUCCESS% = Install
  162.  
  163.     IF SUCCESS% = NOSPACE THEN
  164.        GOSUB TOOBIG
  165.     END IF
  166.  
  167.  
  168. rem When done, issue dialog
  169. rem -----------------------
  170. QUIT:
  171.     IF SUCCESS% = INSTALLOK THEN
  172.        sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  173.     ELSE
  174.        sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfo0DlgProc", 0, "")
  175.     END IF
  176.     UIPop 1
  177.  
  178.  
  179. rem Clean up all processing
  180. rem -----------------------
  181. CLEANUP:
  182.     i% = StopCustomSetup (HinstFrame(), HwndFrame ())
  183.  
  184.     END
  185.  
  186.  
  187. rem ASKQUIT: The user requested quit; does (s)he really want to?
  188. rem ------------------------------------------------------------
  189. ASKQUIT:
  190.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  191.     UIPop 1
  192.     IF sz$ = "CONTINUE" THEN
  193.        RETURN
  194.     END IF
  195.     GOTO CLEANUP
  196.  
  197.  
  198. rem BADPATH: The user entered an invalid destination directory
  199. rem ----------------------------------------------------------
  200. BADPATH:
  201.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  202.     IF sz$ = "REACTIVATE" THEN
  203.        GOTO BADPATH
  204.     END IF
  205.     UIPop 1
  206.  
  207.     RETURN
  208.  
  209.  
  210. rem TOOBIG: The source files won't fit on the requested destination disk
  211. rem --------------------------------------------------------------------
  212. TOOBIG:
  213.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  214.     IF sz$ = "REACTIVATE" THEN
  215.        GOTO TOOBIG
  216.     END IF
  217.     UIPop 1
  218.  
  219.     RETURN
  220.  
  221.  
  222. rem Install: Perform actual installation
  223. rem ------------------------------------
  224. FUNCTION Install STATIC AS INTEGER
  225.  
  226.     rem Build the copy list
  227.     rem -------------------
  228.         i% = GetDLLVersion(MakePath(QTWDIR$, "qtim.dll"))
  229.         szOld$ = GetSymbolValue ("VersionString")
  230.         i% = GetDLLVersion(MakePath(SOURCE$, "qtim.dll"))
  231.         szNew$ = GetSymbolValue ("VersionString")
  232.         rem i% = DoMsgBox(szOld$, szNew$, 0)
  233.         IF szNew$ < szOld$ THEN
  234.            rem i% = DoMsgBox("Gods QTW earlier than installed QTW", szNew$, 0)
  235.            GOTO PROGMAN
  236.         END IF
  237.         IF szNew$ = szOld$ THEN
  238.            rem i% = DoMsgBox("Gods QTW same as installed QTW", szNew$, 0)
  239.