home *** CD-ROM | disk | FTP | other *** search
/ Computer Life: Multimedia Mega Pac / Multimedia_Mega-Pac_Computer_Life_1996.iso / er / simcity / disk1 / sc2k4win.ms_ / sc2k4win.bin
Text File  |  1995-01-18  |  9KB  |  347 lines

  1. '**************************************************************************
  2. '*                       SimCity 2000 For Windows Demo Setup file
  3. '*                       By Chris Weiss
  4. '*                       Last Edited 12/9/94 9:52:38 AM
  5. '*                       Some portions (c) 1994 Microsoft Corp.
  6. '**************************************************************************
  7.  
  8. '$DEFINE DEBUG  ''Define for script development/debugging
  9.  
  10. '$INCLUDE 'setupapi.inc'
  11. '$INCLUDE 'msdetect.inc'
  12.  
  13. ''Dialog ID's
  14. CONST WELCOME       = 100
  15. CONST ASKQUIT       = 200
  16. CONST DESTPATH      = 300
  17. CONST EXITFAILURE   = 400
  18. CONST DEMONAG       = 500
  19. CONST EXITQUIT      = 600
  20. CONST EXITSUCCESS   = 700
  21. CONST APPHELP       = 900
  22. CONST VIDEOHELP     = 901
  23. CONST CPUHELP       = 903
  24. CONST MODEHELP      = 904
  25. CONST TOOBIG        = 6300
  26. CONST BADPATH       = 6400
  27. CONST PATHEXISTS    = 6500
  28. CONST CONFNAME      = 7300
  29. CONST GETUSER       = 7500
  30. CONST BADNAME       = 7700
  31. CONST BADVIDEO      = 7701
  32. CONST BADCOMPANY    = 7702
  33. CONST BADCPU        = 7703
  34. CONST BADMODE       = 7704
  35.  
  36. ''Misc program values
  37. CONST INSTALLED_SIZE = 7000000    ''Size of installed SC2k for free space check
  38.  
  39.  
  40. ''Bitmap ID
  41. CONST LOGO = 1
  42.  
  43. GLOBAL DEST$        ''Default destination directory.
  44. GLOBAL USERNAME$    ''User registration name.
  45. GLOBAL COMPANYNAME$ ''Company Name 
  46. GLOBAL WINDIR$
  47. GLOBAL WINSYSDIR$
  48. GLOBAL WING1$
  49.  
  50. WINDIR$ = GetWindowsDir()
  51. WINSYSDIR$ = GetWindowsSysDir ()
  52.  
  53. DECLARE SUB Install
  54. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  55. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  56.  
  57.  
  58. INIT:
  59.  
  60.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  61.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  62.  
  63.     SetBitmap CUIDLL$, LOGO
  64.     SetTitle " SimCity 2000(R) Demo for Windows Setup"
  65.  
  66.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  67.     IF szInf$ = "" THEN
  68.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  69.     END IF
  70.     ReadInfFile szInf$
  71.  
  72.     DEST$ = "C:\SC2DEMOW"
  73.  
  74.  
  75. '$IFDEF DEBUG
  76.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  77.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  78.     IF IsDriveValid(WinDrive$) = 0 THEN
  79.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  80.     GOTO QUIT
  81.     END IF
  82. '$ENDIF ''DEBUG
  83.  
  84.  
  85.  
  86. WELCOME:
  87.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  88.     IF sz$ = "CONTINUE" THEN
  89.     UIPop 1
  90.     ELSE
  91.     GOSUB ASKQUIT
  92.     GOTO WELCOME
  93.     END IF
  94.  
  95.  
  96. CHECKCPU:
  97.     i% = GetProcessorType ()
  98.     IF i% < 3 THEN
  99.      sz$ = UIStartDLG(CUIDLL$, BADCPU, "FInfoDlgProc", CPUHELP, HELPPROC$)
  100.      IF SZ$ = "CONTINUE" THEN
  101.           UIPop 1
  102.      ELSE
  103.         UIPop 1
  104.         GOSUB ASKQUIT
  105.         GOTO CHECKCPU
  106.      END IF
  107.     END IF
  108.  
  109. CHECKMODE:
  110.     i% = GetWindowsMode ()
  111.     IF i% < 2 THEN
  112.      sz$ = UIStartDLG(CUIDLL$, BADMODE, "FInfoDlgProc", MODEHELP, HELPPROC$)
  113.      IF SZ$ = "CONTINUE" THEN
  114.           UIPop 1
  115.      ELSE
  116.         UIPop 1
  117.         GOSUB ASKQUIT
  118.         GOTO CHECKMODE
  119.      END IF
  120.     END IF
  121.  
  122. GETTHEUSER:
  123.     USERNAME$ = "SimCity 2000"
  124.     COMPANYNAME$ = "Interactive Demo"
  125.  
  126.   
  127. GETPATH:
  128.     SetSymbolValue "EditTextIn", DEST$
  129.     SetSymbolValue "EditFocus", "END"
  130. GETPATHL1:
  131.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  132.     DEST$ = GetSymbolValue("EditTextOut")
  133.  
  134.     IF sz$ = "CONTINUE" THEN
  135.     IF MID$(DEST$, LEN(DEST$), 1) = "\" THEN
  136.         DEST$ = MID$(DEST$,1,LEN(DEST$) - 1)
  137.     END IF
  138.  
  139.     ' Is it a writeable directory?
  140.  
  141.     IF IsDirWritable(DEST$) = 0 THEN
  142.         GOSUB BADPATH
  143.         GOTO GETPATHL1
  144.     END IF
  145.     ''temp$ = "Free Space is " + str$(GetFreeSpaceForDrive(MID$(DEST$,1,1)))
  146.     ''i% = DoMsgBox(temp$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  147.     
  148.     ' Check free space
  149.  
  150.     IF GetFreeSpaceForDrive(MID$(DEST$,1,1)) < INSTALLED_SIZE THEN
  151.         GOSUB TOOBIG
  152.         GOTO GETPATHL1
  153.     END IF
  154.  
  155.     ' Does it exist?
  156.  
  157.     IF DoesFileExist(DEST$ + "\SC2DEMOW.EXE", FemExists) = 1 THEN
  158.        SetSymbolValue "ConfirmTextIn", DEST$
  159.        sz$ = UIStartDlg(CUIDLL$, PATHEXISTS, "FConfirmDlgProc", 0, "")
  160.          IF sz$ = "EXIT" THEN
  161.            UIPopAll
  162.            ERROR STFQUIT
  163.          ELSEIF sz$ = "BACK" THEN
  164.            UIPop 1
  165.            GOTO GETTHEUSER
  166.          ELSEIF sz$ = "REACTIVATE" THEN
  167.            GOTO DOWING
  168.          ELSE
  169.            UIPop 1
  170.          END IF
  171.     END IF
  172.  
  173.     UIPop 1
  174.     ELSEIF sz$ = "REACTIVATE" THEN
  175.     GOTO GETPATHL1
  176.     ELSEIF sz$ = "BACK" THEN
  177.     UIPop 1
  178.     GOTO GETTHEUSER
  179.     ELSE
  180.     GOSUB ASKQUIT
  181.     GOTO GETPATH
  182.     END IF
  183.  
  184.  
  185.  
  186. DOWING:
  187. ' This portion installs the DVA.386 driver on machines in Enhanced Mode
  188.     IF VflatdPresent() = 0 THEN
  189.         CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  190.     bInstallDVA% = 1
  191.       END IF
  192.  
  193.     WING1$ = "WinG"
  194.     RemoveIniSection "WIN.INI", wing1$, CmoNone
  195.  
  196.     Install
  197.  
  198.  
  199. QUIT:
  200.     ON ERROR GOTO ERRQUIT
  201.  
  202.     IF ERR = 0 THEN
  203.     dlg% = EXITSUCCESS
  204.     ELSEIF ERR = STFQUIT THEN
  205.     dlg% = EXITQUIT
  206.     ELSE
  207.     dlg% = EXITFAILURE
  208.     END IF
  209. QUITL1:
  210.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  211.     IF sz$ = "REACTIVATE" THEN
  212.     GOTO QUITL1
  213.     END IF
  214.     UIPop 1
  215.  
  216.     END
  217.  
  218. ERRQUIT:
  219.     i% = DoMsgBox("Setup sources were corrupted!  Please call Maxis Technical Support.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  220.     END
  221.  
  222.  
  223.  
  224. BADPATH:
  225.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  226.     IF sz$ = "REACTIVATE" THEN
  227.     GOTO BADPATH
  228.     END IF
  229.     UIPop 1
  230.     RETURN
  231.  
  232.  
  233. TOOBIG:
  234.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  235.     IF sz$ = "REACTIVATE" THEN
  236.     GOTO TOOBIG
  237.     END IF
  238.     UIPop 1
  239.     RETURN
  240.  
  241.  
  242. ASKQUIT:
  243.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  244.  
  245.     IF sz$ = "EXIT" THEN
  246.     UIPopAll
  247.     ERROR STFQUIT
  248.     ELSEIF sz$ = "REACTIVATE" THEN
  249.     GOTO ASKQUIT
  250.     ELSE
  251.     UIPop 1
  252.     END IF
  253.     RETURN
  254.  
  255.  
  256.  
  257. '**
  258. '** Purpose:
  259. '**     Builds the copy list and performs all installation operations.
  260. '** Arguments:
  261. '**     none.
  262. '** Returns:
  263. '**     none.
  264. '*************************************************************************
  265. SUB Install STATIC
  266.  
  267.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  268.     CreateDir DEST$, cmoNone
  269.  
  270.     OpenLogFile MakePath(DEST$, "SETUP.LOG"), 0
  271.     WriteToLogFile ""
  272.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  273.     WriteToLogFile ""
  274.     WriteToLogFile "May have had to create the directory: " + DEST$
  275.  
  276.     
  277.     WriteToLogFile ""
  278.  
  279.     ClearCopyList
  280.     ClearBillboardList
  281.  
  282.  
  283.     AddToBillboardList "mscuistf.dll", DEMONAG, "FModelessDlgProc", 1
  284.  
  285.  
  286.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  287.     AddSectionFilesToCopyList "WING", SrcDir$, WINSYSDIR$
  288.  
  289.     
  290.     CopyFilesInCopyList
  291.  
  292.     ini$ = MakePath(DEST$, "SC2DEMOW.INI")
  293.     CreateIniKeyValue ini$, "REGISTRATION", "Mayor Name", USERNAME$, cmoOverwrite
  294.     CreateIniKeyValue ini$, "REGISTRATION", "Company Name", COMPANYNAME$, cmoOverwrite
  295.     CreateIniKeyValue ini$, "PATHS", "Home", DEST$, cmoOverwrite
  296.     CreateIniKeyValue ini$, "PATHS", "Scenarios", DEST$, cmoOverwrite
  297.     CreateIniKeyValue ini$, "PATHS", "Graphics", DEST$, cmoOverwrite
  298.     CreateIniKeyValue ini$, "PATHS", "Music", DEST$, cmoOverwrite
  299.     CreateIniKeyValue ini$, "PATHS", "Cities", DEST$, cmoOverwrite
  300.     CreateIniKeyValue ini$, "PATHS", "Tilesets", DEST$, cmoOverwrite
  301.     CreateIniKeyValue ini$, "PATHS", "Data", DEST$, cmoOverwrite
  302.     CreateIniKeyValue ini$, "LOCALIZE", "Language", "USA", cmoOverwrite
  303.     CreateIniKeyValue ini$, "WINDOWS", "Edit Window Position", "0 0 0 0", cmoOverwrite
  304.     CreateIniKeyValue ini$, "WINDOWS", "Toolbar Position", "0 0", cmoOverwrite
  305.     CreateIniKeyValue ini$, "OPTIONS", "Speed", "Normal", cmoOverwrite
  306.     CreateIniKeyValue ini$, "OPTIONS", "Sound", "On", cmoOverwrite
  307.     CreateIniKeyValue ini$, "OPTIONS", "Music", "On", cmoOverwrite
  308.     CreateIniKeyValue ini$, "OPTIONS", "AutoGoto", "On", cmoOverwrite
  309.     CreateIniKeyValue ini$, "OPTIONS", "Auto Budget", "Off", cmoOverwrite
  310.     CreateIniKeyValue ini$, "OPTIONS", "No Disasters", "Off", cmoOverwrite
  311.  
  312.  
  313.     CreateProgmanGroup "SimCity 2000", "", cmoNone
  314.     ShowProgmanGroup  "SimCity 2000", 1, cmoNone
  315.     CreateProgmanItem "SimCity 2000", "SimCity 2000 Demo for Windows", DEST$ + "\SC2DEMOW.EXE", "", cmoOverwrite
  316.     CreateProgmanItem "SimCity 2000", "SimCity 2000 Demo for Windows Readme", DEST$ + "\README.WRI", "", cmoOverwrite
  317.     CreateProgmanItem "SimCity 2000", "SimCity 2000 Demo for Windows Help", DEST$ + "\SC2DEMOW.HLP", "", cmoOverwrite
  318.  
  319.     CloseLogFile
  320.  
  321. END SUB
  322.  
  323.  
  324.  
  325. '**
  326. '** Purpose:
  327. '**     Appends a file name to the end of a directory path,
  328. '**     inserting a backslash character as needed.
  329. '** Arguments:
  330. '**     szDir$  - full directory path (with optional ending "\")
  331. '**     szFile$ - filename to append to directory
  332. '** Returns:
  333. '**     Resulting fully qualified path name.
  334. '*************************************************************************
  335. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  336.     IF szDir$ = "" THEN
  337.     MakePath = szFile$
  338.     ELSEIF szFile$ = "" THEN
  339.     MakePath = szDir$
  340.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  341.     MakePath = szDir$ + szFile$
  342.     ELSE
  343.     MakePath = szDir$ + "\" + szFile$
  344.     END IF
  345. END FUNCTION
  346.  
  347.