home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / Othergam / SC2WIN-1.ZIP / SC2K4WIN.MS_ / SC2K4WIN.bin
Text File  |  1995-03-16  |  13KB  |  451 lines

  1. '**************************************************************************
  2. '*                       SimCity 2000 For Windows Setup file
  3. '*                       By Chris Weiss
  4. '*                       Last Edited July 18, 1994
  5. '*                       Some portions (c) 1994 Microsoft Corp.
  6. '**************************************************************************
  7.  
  8. '$DEFINE DEBUG  ''Define for script development/debugging
  9.  
  10. ' This should set a flag if the command line /NO_CHECK was included
  11. ' This must occur before calling setupapi, or any command line args get
  12. ' lost
  13.  
  14. GLOBAL Dont_Check_For_Space
  15. COMMAND$=UCASE$(COMMAND$)
  16. IF INSTR(COMMAND$, "NO_CHECK") > 0 THEN 
  17.     Dont_Check_For_Space = 1
  18.     sz$=MID$(COMMAND$,1,(INSTR(COMMAND$,"NO_CHECK")-1))
  19.     COMMAND$=sz$
  20.     END IF
  21.  
  22. IF INSTR(COMMAND$, "NOCHECK") > 0 THEN 
  23.     Dont_Check_For_Space = 1
  24.     sz$=MID$(COMMAND$,1,(INSTR(COMMAND$,"NOCHECK")-1))
  25.     COMMAND$=sz$
  26.     END IF
  27.  
  28. ' End checking
  29.  
  30. '$INCLUDE 'setupapi.inc'
  31. '$INCLUDE 'msdetect.inc'
  32.  
  33. ''Dialog ID's
  34. CONST WELCOME       = 100
  35. CONST ASKQUIT       = 200
  36. CONST DESTPATH      = 300
  37. CONST EXITFAILURE   = 400
  38. CONST REGNAG        = 500
  39. CONST READMENAG     = 501
  40. CONST SIXTEENCOLS   = 502
  41. CONST EXITQUIT      = 600
  42. CONST EXITSUCCESS   = 700
  43. CONST APPHELP       = 900
  44. CONST MODEHELP      = 904
  45. CONST TOOBIG        = 6300
  46. CONST BADPATH       = 6400
  47. CONST PATHEXISTS    = 6500
  48. CONST CONFNAME      = 7300
  49. CONST GETUSER       = 7500
  50. CONST BADNAME       = 7700
  51. CONST BADVIDEO      = 7701
  52. CONST BADCOMPANY    = 7702
  53. CONST BADMODE       = 7704
  54.  
  55. '' Some Constant Values for Maximized Install Window
  56. CONST WS_VISIBLE      =&H10000000
  57. CONST WS_BORDER       =&H00800000
  58. CONST WS_CLIPCHILDREN =&H02000000
  59. CONST GWL_STYLE = -16
  60. CONST SW_SHOWMAXIMIZED = 3
  61. '' End Maximized Window Install Constants
  62.  
  63. ''Misc program values
  64. CONST INSTALLED_SIZE = 6100000    ''Size of installed SC2k for free space check
  65.  
  66.  
  67. ''Bitmap ID
  68. CONST LOGO = 1
  69.  
  70. GLOBAL DEST$        ''Default destination directory.
  71. GLOBAL USERNAME$    ''User registration name.
  72. GLOBAL COMPANYNAME$ ''Company Name 
  73. GLOBAL WINDIR$
  74. GLOBAL WINSYSDIR$
  75. GLOBAL WING1$
  76.  
  77. WINDIR$ = GetWindowsDir()
  78. WINSYSDIR$ = GetWindowsSysDir ()
  79.  
  80. DECLARE SUB Install
  81. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  82. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  83.  
  84. '' Some Subroutine Declarations for Maximized Install Window
  85. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%, iShow%) AS INTEGER
  86. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  87. '' End Declarations for Maximized Window Install
  88.  
  89. INIT:
  90. '' This is where we set it to maximize the install window - If the user has NO_CHECK, we ignore this.
  91. IF Dont_Check_For_Space = 0 THEN
  92. hWnd%=HwndFrame() 
  93.  i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN) 
  94.  j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED) 
  95. END IF
  96. '' End of Maximize stuff
  97.  
  98.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  99.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  100.  
  101.     SetBitmap CUIDLL$, LOGO
  102.     SetTitle " SimCity 2000(R) for Windows Setup"
  103.  
  104.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  105.     IF szInf$ = "" THEN
  106.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  107.     END IF
  108.     ReadInfFile szInf$
  109.  
  110.     DEST$ = "C:\SC2K4WIN"
  111.  
  112.  
  113. '$IFDEF DEBUG
  114.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  115.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  116.     IF IsDriveValid(WinDrive$) = 0 THEN
  117.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  118.     GOTO QUIT
  119.     END IF
  120. '$ENDIF ''DEBUG
  121.  
  122.  
  123.     IF Dont_Check_For_Space = 1 THEN
  124.     i% = DoMsgBox("NO_CHECK specified, forcing install to C:\SC2KWIN. I will not be held responsible for my actions!", "Verification Status", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  125.     USERNAME$="Installed with NO_CHECK"
  126.     COMPANYNAME$="Please Edit SC2K4WIN.INI"
  127.     GOTO DOWING
  128.     END IF
  129.  
  130. WELCOME:
  131.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  132.     IF sz$ = "CONTINUE" THEN
  133.     UIPop 1
  134.     ELSE
  135.     GOSUB ASKQUIT
  136.     GOTO WELCOME
  137.     END IF
  138.  
  139.  
  140. CHECKMODE:
  141.     i% = GetWindowsMode ()
  142.     IF i% < 2 THEN
  143.      sz$ = UIStartDLG(CUIDLL$, BADMODE, "FInfoDlgProc", MODEHELP, HELPPROC$)
  144.      IF SZ$ = "CONTINUE" THEN
  145.           UIPop 1
  146.      ELSE
  147.         UIPop 1
  148.         GOSUB ASKQUIT
  149.         GOTO CHECKMODE
  150.      END IF
  151.     END IF
  152.  
  153. GETTHEUSER:
  154.     sz$ = UIStartDlg(CUIDLL$, GETUSER, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  155.     USERNAME$ = GetSymbolValue("NameOut")
  156.     COMPANYNAME$ = GetSymbolValue("OrgOut")
  157.  
  158.     IF sz$ = "CONTINUE" THEN
  159.     IF LEN(USERNAME$) < 1 OR LEN(USERNAME$) > 22 OR MID$(USERNAME$,1,1) = " " THEN
  160.         GOSUB BADNAME
  161.         GOTO GETTHEUSER
  162.     END IF
  163.     IF LEN(COMPANYNAME$) > 22 OR MID$(COMPANYNAME$,1,1) = " " THEN
  164.         GOSUB BADCOMPANY
  165.         GOTO GETTHEUSER
  166.     END IF
  167.     UIPop 1
  168.     ELSEIF sz$ = "REACTIVATE" THEN
  169.     GOTO GETTHEUSER
  170.     ELSEIF sz$ = "BACK" THEN
  171.     UIPop 1
  172.     GOTO WELCOME
  173.     ELSE
  174.     GOSUB ASKQUIT
  175.     GOTO GETTHEUSER
  176.     END IF
  177.  
  178. GETPATH:
  179.     SetSymbolValue "EditTextIn", DEST$
  180.     SetSymbolValue "EditFocus", "END"
  181. GETPATHL1:
  182.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  183.     DEST$ = GetSymbolValue("EditTextOut")
  184.  
  185.     IF sz$ = "CONTINUE" THEN
  186.     IF MID$(DEST$, LEN(DEST$), 1) = "\" THEN
  187.         DEST$ = MID$(DEST$,1,LEN(DEST$) - 1)
  188.     END IF
  189.  
  190.  
  191.  
  192.  
  193. IF Dont_Check_For_Space = 0 THEN
  194.     IF IsDirWritable(DEST$) = 0 THEN
  195.         GOSUB BADPATH
  196.         GOTO GETPATHL1
  197.     END IF
  198.     ''temp$ = "Free Space is " + str$(GetFreeSpaceForDrive(MID$(DEST$,1,1)))
  199.     ''i% = DoMsgBox(temp$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  200.     
  201.     ' Check free space
  202.  
  203.     IF GetFreeSpaceForDrive(MID$(DEST$,1,1)) < INSTALLED_SIZE THEN
  204.     GOSUB TOOBIG
  205.     GOTO GETPATHL1
  206.     END IF
  207.  
  208.     ' Does it exist?
  209.  
  210.     IF DoesFileExist(DEST$ + "\SC2000W.EXE", FemExists) = 1 THEN
  211.        SetSymbolValue "ConfirmTextIn", DEST$
  212.        sz$ = UIStartDlg(CUIDLL$, PATHEXISTS, "FConfirmDlgProc", 0, "")
  213.          IF sz$ = "EXIT" THEN
  214.            UIPopAll
  215.            ERROR STFQUIT
  216.          ELSEIF sz$ = "BACK" THEN
  217.            UIPop 1
  218.            GOTO GETTHEUSER
  219.          ELSEIF sz$ = "REACTIVATE" THEN
  220.            GOTO CONFIRMALL
  221.          ELSE
  222.            UIPop 1
  223.          END IF
  224.     END IF
  225. END IF
  226.  
  227.     UIPop 1
  228.     ELSEIF sz$ = "REACTIVATE" THEN
  229.     GOTO GETPATHL1
  230.     ELSEIF sz$ = "BACK" THEN
  231.     UIPop 1
  232.     GOTO GETTHEUSER
  233.     ELSE
  234.     GOSUB ASKQUIT
  235.     GOTO GETPATH
  236.     END IF
  237.  
  238.  
  239.  
  240. CONFIRMALL:
  241.     SetSymbolValue "ConfirmTextIn", USERNAME$
  242.     AddListItem "ConfirmTextIn", COMPANYNAME$
  243.     AddListItem "ConfirmTextIn", DEST$
  244.     sz$ = UIStartDlg(CUIDLL$, CONFNAME, "FConfirmDlgProc", 0, "")
  245.     IF sz$ = "EXIT" THEN
  246.     UIPopAll
  247.     ERROR STFQUIT
  248.     ELSEIF sz$ = "BACK" THEN
  249.     UIPop 1
  250.     GOTO GETTHEUSER
  251.     ELSEIF sz$ = "REACTIVATE" THEN
  252.     GOTO CONFIRMALL
  253.     ELSE
  254.     UIPop 1
  255.     END IF
  256.  
  257. DOWING:
  258. ' This portion installs the DVA.386 driver on machines in Enhanced Mode
  259.     IF VflatdPresent() = 0 THEN
  260.         CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  261.     bInstallDVA% = 1
  262.       END IF
  263.  
  264.     WING1$ = "WinG"
  265.     RemoveIniSection "WIN.INI", wing1$, CmoNone
  266.  
  267.     Install
  268.  
  269.  
  270. QUIT:
  271.     ON ERROR GOTO ERRQUIT
  272.  
  273.     IF ERR = 0 THEN
  274.     dlg% = EXITSUCCESS
  275.     ELSEIF ERR = STFQUIT THEN
  276.     dlg% = EXITQUIT
  277.     ELSE
  278.     dlg% = EXITFAILURE
  279.     END IF
  280. QUITL1:
  281.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  282.     IF sz$ = "REACTIVATE" THEN
  283.     GOTO QUITL1
  284.     END IF
  285.     UIPop 1
  286.  
  287.     END
  288.  
  289. ERRQUIT:
  290.     i% = DoMsgBox("Setup sources were corrupted!  Please call Maxis Technical Support.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  291.     END
  292.  
  293.  
  294.  
  295. BADPATH:
  296.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  297.     IF sz$ = "REACTIVATE" THEN
  298.     GOTO BADPATH
  299.     END IF
  300.     UIPop 1
  301.     RETURN
  302.  
  303. BADNAME:
  304.     sz$ = UIStartDlg(CUIDLL$, BADNAME, "FInfo0DlgProc", 0, "")
  305.     IF sz$ = "REACTIVATE" THEN
  306.     GOTO BADNAME
  307.     END IF
  308.     UIPop 1
  309.     RETURN
  310.  
  311. BADCOMPANY:
  312.     sz$ = UIStartDlg(CUIDLL$, BADCOMPANY, "FInfo0DlgProc", 0, "")
  313.     IF sz$ = "REACTIVATE" THEN
  314.     GOTO BADCOMPANY
  315.     END IF
  316.     UIPop 1
  317.     RETURN
  318.  
  319.  
  320. TOOBIG:
  321.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  322.     IF sz$ = "REACTIVATE" THEN
  323.     GOTO TOOBIG
  324.     END IF
  325.     UIPop 1
  326.     RETURN
  327.  
  328.  
  329. ASKQUIT:
  330.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  331.  
  332.     IF sz$ = "EXIT" THEN
  333.     UIPopAll
  334.     ERROR STFQUIT
  335.     ELSEIF sz$ = "REACTIVATE" THEN
  336.     GOTO ASKQUIT
  337.     ELSE
  338.     UIPop 1
  339.     END IF
  340.     RETURN
  341.  
  342.  
  343.  
  344. '**
  345. '** Purpose:
  346. '**     Builds the copy list and performs all installation operations.
  347. '** Arguments:
  348. '**     none.
  349. '** Returns:
  350. '**     none.
  351. '*************************************************************************
  352. SUB Install STATIC
  353.  
  354.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  355.     CreateDir DEST$, cmoNone
  356.     CreateDir DEST$ + "\SCENARIO", cmoNone
  357.     CreateDir DEST$ + "\SOUNDS", cmoNone
  358.     CreateDir DEST$ + "\BITMAPS", cmoNone
  359.     CreateDir DEST$ + "\DATA", cmoNone
  360. '    CreateDir DEST$ + "\DRIVERS", cmoNone
  361.  
  362.     OpenLogFile MakePath(DEST$, "SETUP.LOG"), 0
  363.     WriteToLogFile ""
  364.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  365.     WriteToLogFile ""
  366.     WriteToLogFile "May have had to create the directory: " + DEST$
  367.     WriteToLogFile "May have had to create the directory: " + DEST$ + "\SCENARIO"
  368.     WriteToLogFile "May have had to create the directory: " + DEST$ + "\SOUNDS"
  369.     WriteToLogFile "May have had to create the directory: " + DEST$ + "\BITMAPS"
  370.     WriteToLogFile "May have had to create the directory: " + DEST$ + "\DATA"
  371.  
  372.     
  373.     WriteToLogFile ""
  374.  
  375.     ClearCopyList
  376.     ClearBillboardList
  377.  
  378.  
  379.  
  380.     AddSectionFilesToCopyList "BITMAPS", SrcDir$, DEST$ + "\BITMAPS"
  381.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  382.     AddSectionFilesToCopyList "SCENARIO", SrcDir$, DEST$ + "\SCENARIO"
  383.     AddSectionFilesToCopyList "SOUNDS", SrcDir$, DEST$ + "\SOUNDS"
  384.     AddSectionFilesToCopyList "DATA", SrcDir$, DEST$ + "\DATA"
  385.     AddSectionFilesToCopyList "CITIES", SrcDir$, DEST$ + "\CITIES"
  386.     AddSectionFilesToCopyList "WING", SrcDir$, WINSYSDIR$
  387.  
  388.  
  389.     
  390.     CopyFilesInCopyList
  391.  
  392.  
  393.     ini$ = MakePath(WINDIR$, "SC2K4WIN.INI")
  394.     CreateIniKeyValue ini$, "REGISTRATION", "Mayor Name", USERNAME$, cmoOverwrite
  395.     CreateIniKeyValue ini$, "REGISTRATION", "Company Name", COMPANYNAME$, cmoOverwrite
  396.     CreateIniKeyValue ini$, "PATHS", "Home", DEST$, cmoOverwrite
  397.     CreateIniKeyValue ini$, "PATHS", "Scenarios", DEST$ + "\SCENARIO", cmoOverwrite
  398.     CreateIniKeyValue ini$, "PATHS", "Graphics", DEST$ + "\BITMAPS", cmoOverwrite
  399.     CreateIniKeyValue ini$, "PATHS", "Music", DEST$ + "\SOUNDS", cmoOverwrite
  400.     CreateIniKeyValue ini$, "PATHS", "Cities", DEST$ + "\CITIES", cmoOverwrite
  401.     CreateIniKeyValue ini$, "PATHS", "SaveGame", DEST$ + "\CITIES", cmoOverwrite
  402.     CreateIniKeyValue ini$, "PATHS", "Tilesets", DEST$ + "\DATA", cmoOverwrite
  403.     CreateIniKeyValue ini$, "LOCALIZE", "Language", "USA", cmoOverwrite
  404.     CreateIniKeyValue ini$, "WINDOWS", "Edit Window Position", "0 0 0 0", cmoOverwrite
  405.     CreateIniKeyValue ini$, "WINDOWS", "Toolbar Position", "0 0", cmoOverwrite
  406.     CreateIniKeyValue ini$, "OPTIONS", "Speed", "Normal", cmoOverwrite
  407.     CreateIniKeyValue ini$, "OPTIONS", "Sound", "On", cmoOverwrite
  408.     CreateIniKeyValue ini$, "OPTIONS", "Music", "On", cmoOverwrite
  409.     CreateIniKeyValue ini$, "OPTIONS", "AutoGoto", "On", cmoOverwrite
  410.     CreateIniKeyValue ini$, "OPTIONS", "Auto Budget", "Off", cmoOverwrite
  411.     CreateIniKeyValue ini$, "OPTIONS", "No Disasters", "Off", cmoOverwrite
  412.     CreateIniKeyValue ini$, "VERSION", "SC2k", "1.2", cmoOverwrite
  413.  
  414.  
  415.     CreateProgmanGroup "Maxis", "", cmoNone
  416.     ShowProgmanGroup  "Maxis", 1, cmoNone
  417.     CreateProgmanItem "Maxis", "SimCity 2000 for Windows", DEST$ + "\SC2000W.EXE", "", cmoOverwrite
  418.     CreateProgmanItem "Maxis", "SimCity 2000 ReadMe", DEST$ + "\README.WRI", "", cmoOverwrite
  419.     CreateProgmanItem "Maxis", "SimCity 2000 Help", DEST$ + "\SC2USA.HLP", "", cmoOverwrite
  420.  
  421.  
  422.  
  423.     CloseLogFile
  424.  
  425. END SUB
  426.  
  427.  
  428.  
  429. '**
  430. '** Purpose:
  431. '**     Appends a file name to the end of a directory path,
  432. '**     inserting a backslash character as needed.
  433. '** Arguments:
  434. '**     szDir$  - full directory path (with optional ending "\")
  435. '**     szFile$ - filename to append to directory
  436. '** Returns:
  437. '**     Resulting fully qualified path name.
  438. '*************************************************************************
  439. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  440.     IF szDir$ = "" THEN
  441.     MakePath = szFile$
  442.     ELSEIF szFile$ = "" THEN
  443.     MakePath = szDir$
  444.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  445.     MakePath = szDir$ + szFile$
  446.     ELSE
  447.     MakePath = szDir$ + "\" + szFile$
  448.     END IF
  449. END FUNCTION
  450.  
  451.