home *** CD-ROM | disk | FTP | other *** search
/ Computer Buyer 1996 June / BUYER_696.iso / home / scramble / setup.mst < prev    next >
Text File  |  1996-02-10  |  8KB  |  276 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Rocket Scrambler
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST APPHELP       = 900
  18. CONST BADPATH       = 6400
  19.  
  20. ''Bitmap ID
  21. CONST LOGO = 1
  22.  
  23. GLOBAL DEST$        ''Default destination directory.
  24. GLOBAL SYST$        ''Default destination directory for system files.
  25.  
  26. DECLARE SUB Install
  27. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  28. DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  29. DECLARE SUB UpdateWinG32 (szOrig$)
  30.  
  31. DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
  32. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  33. DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  34. DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
  35. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
  36. DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$) 
  37.  
  38. INIT:
  39.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  40.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  41.  
  42.     SetBitmap CUIDLL$, LOGO
  43.     SetTitle "Rocket Scrambler Setup"
  44.  
  45.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  46.     IF szInf$ = "" THEN
  47.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  48.     END IF
  49.     ReadInfFile szInf$
  50.  
  51.     OPTCUR$ = "1"
  52.     DEST$ = "C:\SCRAMBLE"
  53.  
  54. '$IFDEF DEBUG
  55.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  56.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  57.     IF IsDriveValid(WinDrive$) = 0 THEN
  58.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  59.         GOTO QUIT
  60.     END IF
  61. '$ENDIF ''DEBUG
  62.  
  63.  
  64. WELCOME:
  65.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  66.     IF sz$ = "CONTINUE" THEN
  67.         UIPop 1
  68.     ELSE
  69.         GOSUB ASKQUIT
  70.         GOTO WELCOME
  71.     END IF
  72.  
  73. GETPATH:
  74.     SetSymbolValue "EditTextIn", DEST$
  75.     SetSymbolValue "EditFocus", "END"
  76. GETPATHL1:
  77.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  78.     DEST$ = GetSymbolValue("EditTextOut")
  79.  
  80.     IF sz$ = "CONTINUE" THEN
  81.         IF IsDirWritable(DEST$) = 0 THEN
  82.             GOSUB BADPATH
  83.             GOTO GETPATHL1
  84.         END IF
  85.         UIPop 1
  86.     ELSEIF sz$ = "REACTIVATE" THEN
  87.         GOTO GETPATHL1
  88.     ELSEIF sz$ = "BACK" THEN
  89.         UIPop 1
  90. ELSE
  91.         GOSUB ASKQUIT
  92.         GOTO GETPATH
  93.     END IF
  94.  
  95.  
  96. Install
  97.  
  98.  
  99. QUIT:
  100.     ON ERROR GOTO ERRQUIT
  101.  
  102.     IF ERR = 0 THEN
  103.         dlg% = EXITSUCCESS
  104.     ELSEIF ERR = STFQUIT THEN
  105.         dlg% = EXITQUIT
  106.     ELSE
  107.         dlg% = EXITFAILURE
  108.     END IF
  109. QUITL1:
  110.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  111.     IF sz$ = "REACTIVATE" THEN
  112.         GOTO QUITL1
  113.     END IF
  114.     UIPop 1
  115.  
  116.     END
  117.  
  118. ERRQUIT:
  119.     i% = DoMsgBox("Setup sources were corrupted, call 555-1212!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  120.     END
  121.  
  122.  
  123.  
  124. BADPATH:
  125.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  126.     IF sz$ = "REACTIVATE" THEN
  127.         GOTO BADPATH
  128.     END IF
  129.     UIPop 1
  130.     RETURN
  131.  
  132.  
  133.  
  134. ASKQUIT:
  135.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  136.  
  137.     IF sz$ = "EXIT" THEN
  138.         UIPopAll
  139.         ERROR STFQUIT
  140.     ELSEIF sz$ = "REACTIVATE" THEN
  141.         GOTO ASKQUIT
  142.     ELSE
  143.         UIPop 1
  144.     END IF
  145.     RETURN
  146.  
  147.  
  148.  
  149. '**
  150. '** Purpose:
  151. '**     Builds the copy list and performs all installation operations.
  152. '** Arguments:
  153. '**     none.
  154. '** Returns:
  155. '**     none.
  156. '*************************************************************************
  157. SUB Install STATIC
  158.  
  159. '**    COPY ROCKET SCRAMBLER FILES
  160.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  161.     CreateDir DEST$, cmoNone
  162. '    OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  163. '    WriteToLogFile ""
  164. '    WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  165. '    WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  166. '    WriteToLogFile ""
  167. '    WriteToLogFile "May have had to create the directory: " + DEST$
  168. '    WriteToLogFile ""
  169.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  170.  
  171. '**   COPY WING FILES
  172.     SYST$ = GetWindowsSysDir
  173.     AddSectionFilesToCopyList "Runtime", SrcDir$, SYST$
  174.     '
  175.     ' only use DVA on Windows 3.x
  176.     '
  177.     IF OnWin3x() = 1 THEN
  178.         AddSectionFilesToCopyList "dva", SrcDir$, SYST$
  179.         IF VflatdPresent() = 0 THEN
  180.             CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  181.             bInstallDVA% = 1
  182.         END IF
  183.     END IF
  184.  
  185. '**    COPY WING 32 bit FILES
  186.     SYST$ = GetRealWindowsSysDir
  187.     AddSectionFilesToCopyList "Wing32", SrcDir$, SYST$
  188.     Dest1$ = MakePath(SYST$,"wing32.dll")
  189.     Dest2$ = MakePath(SYST$,"wing32.xxx")
  190.     RenameFilePlease Dest1$,Dest2$
  191.     UpdateWinG32 GetRealWindowsSysDir()
  192.  
  193. '** COPY WAVEMIX.INI IF A WAVE DEVICE IS PRESENT (NO OVERWRITE)
  194.     SYST$ = GetWindowsDir
  195. '    IF FWaveDevicePresent = 1 THEN    
  196.         AddSectionFilesToCopyList "Wave", SrcDir$, SYST$
  197. '    END IF
  198.  
  199.  
  200. '**    COPY ALL THE FILES TO HARD DISK
  201.    CopyFilesInCopyList
  202.  
  203. '**    CREATE PROGRAM MANAGER GROUP AND ICON
  204.     CreateProgmanGroup "Arcade Games", "", cmoNone
  205.     ShowProgmanGroup  "Arcade Games", 1, cmoNone
  206.     CreateProgmanItem "Arcade Games", "Rocket Scrambler", MakePath(DEST$,"SCRAM.EXE"), "",cmoOverwrite
  207.     CreateProgmanItem "Arcade Games", "Landscape Editor", MakePath(DEST$,"TERRAIN.EXE"), "",cmoOverwrite
  208.  
  209. '    CloseLogFile
  210.  
  211. END SUB
  212.  
  213.  
  214.  
  215. '**
  216. '** Purpose:
  217. '**     Appends a file name to the end of a directory path,
  218. '**     inserting a backslash character as needed.
  219. '** Arguments:
  220. '**     szDir$  - full directory path (with optional ending "\")
  221. '**     szFile$ - filename to append to directory
  222. '** Returns:
  223. '**     Resulting fully qualified path name.
  224. '*************************************************************************
  225. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  226.     IF szDir$ = "" THEN
  227.         MakePath = szFile$
  228.     ELSEIF szFile$ = "" THEN
  229.         MakePath = szDir$
  230.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  231.         MakePath = szDir$ + szFile$
  232.     ELSE
  233.         MakePath = szDir$ + "\" + szFile$
  234.     END IF
  235. END FUNCTION
  236.  
  237. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  238.     szBuf$ = string$(260, 32)
  239.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  240.     IF cbBuf% = 0 THEN
  241.         ERROR STFERR
  242.     ELSE
  243.         IF cbBuf% > 259 THEN
  244.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  245.             ERROR STFERR
  246.         END IF
  247.         szBuf$ = RTRIM$(szBuf$)
  248.         IF MID$(szBuf$, 1, 1) = "\" THEN
  249.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  250.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  251.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  252.         END IF
  253.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  254.             szBuf$ = szBuf$ + "\"
  255.         END IF
  256.         GetRealWindowsSysDir = szBuf$
  257.     END IF
  258.     szBuf$ = ""
  259. END FUNCTION
  260.  
  261. SUB UpdateWinG32 (szOrig$) STATIC 
  262.     '
  263.     ' Here we check the version ourselves of wing32.dll, since 
  264.     ' we can't get version checking for Win32 apps from Win16
  265.     '
  266.     FileNew$ = MakePath(szOrig$, "wing32.dll")
  267.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  268.     IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
  269.         RemoveFile FileOrig$, cmoForce
  270.     ELSE
  271.         RemoveFile FileNew$, cmoForce        ' get rid of new file
  272.         RenameFilePlease FileOrig$,FileNew$    ' put back old file
  273.     END IF
  274. END SUB
  275.  
  276.