home *** CD-ROM | disk | FTP | other *** search
/ PC Spiel 1995 October / PCS1095.ISO01.iso / magazin / gamehelp / simtower / simtower.ms_ / simtower.bin
Text File  |  1995-04-20  |  11KB  |  410 lines

  1. '**************************************************************************
  2. '* SimTower for Windows Setup script
  3. '*
  4. '*      by Kevin O'Hare
  5. '*
  6. '*      (C) 1995 Maxis Inc.
  7. '*
  8. '*                       Some portions (c) 1994 Microsoft Corp.
  9. '**************************************************************************
  10.  
  11. '$DEFINE DEBUG  ''Define for script development/debugging
  12.  
  13. ' This should set a flag if the command line /NO_CHECK was included
  14. ' This must occur before calling setupapi, or any command line args get
  15. ' lost
  16.  
  17. GLOBAL Dont_Check_For_Space
  18. COMMAND$=UCASE$(COMMAND$)
  19. IF INSTR(COMMAND$, "NO_CHECK") > 0 THEN 
  20.     Dont_Check_For_Space = 1
  21.     sz$=MID$(COMMAND$,1,(INSTR(COMMAND$,"NO_CHECK")-1))
  22.     COMMAND$=sz$
  23. END IF
  24.  
  25. ' End checking
  26.  
  27. '$INCLUDE 'setupapi.inc'
  28. '$INCLUDE 'msdetect.inc'
  29.  
  30. ''Dialog ID's
  31. CONST WELCOME       = 100
  32. CONST ASKQUIT       = 200
  33. CONST DESTPATH      = 300
  34. CONST EXITFAILURE   = 400
  35. CONST REGNAG        = 500
  36. CONST READMENAG     = 501
  37. CONST SIXTEENCOLS   = 502
  38. CONST EXITQUIT      = 600
  39. CONST EXITSUCCESS   = 700
  40. CONST APPHELP       = 900
  41. CONST MODEHELP      = 904
  42. CONST TOOBIG        = 6300
  43. CONST BADPATH       = 6400
  44. CONST PATHEXISTS    = 6500
  45. CONST CONFNAME      = 7300
  46. CONST GETUSER       = 7500
  47. CONST BADNAME       = 7700
  48. CONST BADVIDEO      = 7701
  49. CONST BADCOMPANY    = 7702
  50. CONST BADMODE       = 7704
  51.  
  52.  
  53. '' Some Constant Values for Maximized Install Window
  54. CONST WS_VISIBLE      =&H10000000
  55. CONST WS_BORDER       =&H00800000
  56. CONST WS_CLIPCHILDREN =&H02000000
  57. CONST GWL_STYLE = -16
  58. CONST SW_SHOWMAXIMIZED = 3
  59. '' End Maximized Window Install Constants
  60.  
  61.  
  62. '' Bitmap ID
  63. CONST LOGO = 1
  64.  
  65. GLOBAL DEST$        ''Default destination directory.
  66. GLOBAL USERNAME$    ''User registration name.
  67. GLOBAL COMPANYNAME$ ''Company Name 
  68. GLOBAL WINDIR$
  69. GLOBAL WINSYSDIR$
  70. GLOBAL WING1$
  71. GLOBAL SrcDir$
  72.  
  73.  
  74. '' Global directory strings
  75. WINDIR$ = GetWindowsDir()
  76. WINSYSDIR$ = GetWindowsSysDir ()
  77.  
  78. '' Global Source Drive string
  79. SrcDir$ = GetSymbolValue("STF_SRCDIR")
  80.             
  81. DECLARE SUB Install
  82. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  83. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  84.  
  85. '' Some Subroutine Declarations for Maximized Install Window
  86. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%, iShow%) AS INTEGER
  87. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  88. '' End Declarations for Maximized Window Install
  89.  
  90.  
  91. INIT:
  92. '' This is where we set it to maximize the install window
  93. hWnd%=HwndFrame() 
  94.  i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN) 
  95.  j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED) 
  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 " SimTower(TM) 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:\SIMTOWER"
  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, skipping Free Space and Valid Drive Checks. I will not be held responsible for my actions!", "Verification Status", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  125.     END IF
  126.  
  127.  
  128. '' This just tosses up a nice welcome screen
  129. WELCOME:
  130.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  131.     IF sz$ = "CONTINUE" THEN
  132.         UIPop 1
  133.     ELSE
  134.         GOSUB ASKQUIT
  135.         GOTO WELCOME
  136.     END IF
  137.  
  138.     
  139. '' Check the Windows mode - if user isn't not in Enhanced mode, quit
  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.  
  154. '' Input user name and company name
  155. GETTHEUSER:
  156.     sz$ = UIStartDlg(CUIDLL$, GETUSER, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  157.     USERNAME$ = GetSymbolValue("NameOut")
  158.     COMPANYNAME$ = GetSymbolValue("OrgOut")
  159.  
  160.     IF sz$ = "CONTINUE" THEN
  161.         IF LEN(USERNAME$) < 1 OR LEN(USERNAME$) > 22 OR MID$(USERNAME$,1,1) = " " THEN
  162.         GOSUB BADNAME
  163.             GOTO GETTHEUSER
  164.         END IF
  165.         IF LEN(COMPANYNAME$) > 22 OR MID$(COMPANYNAME$,1,1) = " " THEN
  166.             GOSUB BADCOMPANY
  167.             GOTO GETTHEUSER
  168.         END IF
  169.         UIPop 1
  170.     ELSEIF sz$ = "REACTIVATE" THEN
  171.         GOTO GETTHEUSER
  172.     ELSEIF sz$ = "BACK" THEN
  173.         UIPop 1
  174.         GOTO WELCOME
  175.     ELSE
  176.         GOSUB ASKQUIT
  177.         GOTO GETTHEUSER
  178.     END IF
  179.  
  180. GETPATH:
  181.     SetSymbolValue "EditTextIn", DEST$
  182.     SetSymbolValue "EditFocus", "END"
  183. GETPATHL1:
  184.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  185.     DEST$ = GetSymbolValue("EditTextOut")
  186.  
  187. ''Compute this later!!!! - KO
  188. ''(using GetCopyListCost())
  189.     required% = 7731847
  190.  
  191.     IF sz$ = "CONTINUE" THEN
  192.         IF MID$(DEST$, LEN(DEST$), 1) = "\" THEN
  193.             DEST$ = MID$(DEST$,1,LEN(DEST$) - 1)
  194.         END IF
  195.         UIPop 1
  196.  
  197.         ' Check space requirements
  198.         IF Dont_Check_For_Space = 0 THEN
  199.             IF IsDirWritable(DEST$) = 0 THEN
  200.                 GOSUB BADPATH
  201.             GOTO GETPATHL1
  202.             END IF
  203.             ''temp$ = "Free Space is " + str$(GetFreeSpaceForDrive(MID$(DEST$,1,1)))
  204.             ''i% = DoMsgBox(temp$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  205.     
  206.             ' Check free space
  207.  
  208.             IF GetFreeSpaceForDrive(MID$(DEST$,1,1)) < required% THEN
  209.                 GOSUB TOOBIG
  210.                 GOTO GETPATHL1
  211.             END IF
  212.  
  213.             ' Does it exist?
  214.  
  215.             IF DoesFileExist(DEST$ + "\SIMTOWER.EXE", FemExists) = 1 THEN
  216.                 SetSymbolValue "ConfirmTextIn", DEST$
  217.                 sz$ = UIStartDlg(CUIDLL$, PATHEXISTS, "FConfirmDlgProc", 0, "")
  218.             IF sz$ = "EXIT" THEN
  219.                     UIPopAll
  220.                     ERROR STFQUIT
  221.                 ELSEIF sz$ = "BACK" THEN
  222.                     UIPop 1
  223.                     GOTO GETTHEUSER
  224.                 ELSEIF sz$ = "REACTIVATE" THEN
  225.                     GOTO CONFIRMALL
  226.             ELSE
  227.                     UIPop 1
  228.                 END IF
  229.             END IF
  230.         END IF
  231.     ' (end of >IF sz$ = "CONTINUE"<)
  232.     ELSEIF sz$ = "REACTIVATE" THEN
  233.         GOTO GETPATHL1
  234.     ELSEIF sz$ = "BACK" THEN
  235.         UIPop 1
  236.         GOTO GETTHEUSER
  237.     ELSE
  238.         GOSUB ASKQUIT
  239.         GOTO GETPATH
  240.     END IF
  241.  
  242.  
  243.  
  244. CONFIRMALL:
  245.     SetSymbolValue "ConfirmTextIn", USERNAME$
  246.     AddListItem "ConfirmTextIn", COMPANYNAME$
  247.     AddListItem "ConfirmTextIn", DEST$
  248.     sz$ = UIStartDlg(CUIDLL$, CONFNAME, "FConfirmDlgProc", 0, "")
  249.     IF sz$ = "EXIT" THEN
  250.     UIPopAll
  251.     ERROR STFQUIT
  252.     ELSEIF sz$ = "BACK" THEN
  253.     UIPop 1
  254.     GOTO GETTHEUSER
  255.     ELSEIF sz$ = "REACTIVATE" THEN
  256.     GOTO CONFIRMALL
  257.     ELSE
  258.     UIPop 1
  259.     END IF
  260.  
  261.  
  262. DOWING:
  263. ' This portion installs the DVA.386 driver on machines in Enhanced Mode
  264.     IF VflatdPresent() = 0 THEN
  265.         CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  266.         bInstallDVA% = 1
  267.     END IF
  268.  
  269.     WING1$ = "WinG"
  270.     RemoveIniSection "WIN.INI", wing1$, CmoNone
  271.  
  272. DOINSTALL:
  273.     Install
  274.  
  275.  
  276. QUIT:
  277.     ON ERROR GOTO ERRQUIT
  278.     IF ERR = 0 THEN
  279.         dlg% = EXITSUCCESS
  280.     ELSEIF ERR = STFQUIT THEN
  281.         dlg% = EXITQUIT
  282.     ELSE
  283.         dlg% = EXITFAILURE
  284.     END IF
  285.  
  286. QUITL1:
  287.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  288.     IF sz$ = "REACTIVATE" THEN
  289.         GOTO QUITL1
  290.     END IF
  291.     UIPop 1
  292.     END
  293.  
  294. ERRQUIT:
  295.     i% = DoMsgBox("Setup sources were corrupted!  Please call Maxis Technical Support.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  296.     END
  297.  
  298.  
  299. BADPATH:
  300.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  301.     IF sz$ = "REACTIVATE" THEN
  302.     GOTO BADPATH
  303.     END IF
  304.     UIPop 1
  305.     RETURN
  306.  
  307. BADNAME:
  308.     sz$ = UIStartDlg(CUIDLL$, BADNAME, "FInfo0DlgProc", 0, "")
  309.     IF sz$ = "REACTIVATE" THEN
  310.     GOTO BADNAME
  311.     END IF
  312.     UIPop 1
  313.     RETURN
  314.  
  315. BADCOMPANY:
  316.     sz$ = UIStartDlg(CUIDLL$, BADCOMPANY, "FInfo0DlgProc", 0, "")
  317.     IF sz$ = "REACTIVATE" THEN
  318.     GOTO BADCOMPANY
  319.     END IF
  320.     UIPop 1
  321.     RETURN
  322.  
  323.  
  324. TOOBIG:
  325.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  326.     IF sz$ = "REACTIVATE" THEN
  327.     GOTO TOOBIG
  328.     END IF
  329.     UIPop 1
  330.     RETURN
  331.  
  332.  
  333. ASKQUIT:
  334.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  335.  
  336.     IF sz$ = "EXIT" THEN
  337.     UIPopAll
  338.     ERROR STFQUIT
  339.     ELSEIF sz$ = "REACTIVATE" THEN
  340.     GOTO ASKQUIT
  341.     ELSE
  342.     UIPop 1
  343.     END IF
  344.     RETURN
  345.  
  346.  
  347.  
  348. '**
  349. '** Purpose:
  350. '**     Builds the copy list and performs all installation operations.
  351. '** Arguments:
  352. '**     none.
  353. '** Returns:
  354. '**     none.
  355. '*************************************************************************
  356. SUB Install STATIC
  357.  
  358.     ClearCopyList
  359.  
  360.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  361.  
  362.     AddSectionFilesToCopyList "WINDOWS", SrcDir$, WINDIR$
  363.  
  364.     AddSectionFilesToCopyList "SYSTEM", SrcDir$, WINSYSDIR$
  365.  
  366.  
  367. '' Do the copy
  368.     CopyFilesInCopyList
  369.  
  370. '' Create Maxis group and SimTower, readme and help icons
  371.     CreateProgmanGroup "Maxis", "", cmoNone
  372.     ShowProgmanGroup  "Maxis", 1, cmoNone
  373.      CreateProgmanItem "Maxis", "SimTower for Windows", DEST$ + "\SIMTOWER.EXE", "", cmoOverwrite
  374.      CreateProgmanItem "Maxis", "SimTower Read Me", DEST$ + "\README.WRI", "", cmoOverwrite
  375.      CreateProgmanItem "Maxis", "SimTower Help", DEST$ + "\SIMTOWER.HLP", "", cmoOverwrite
  376. ''**    CreateProgmanItem "Maxis", "Register Electronically", DEST$ + "\EREG.EXE", "", cmoOverwrite
  377.  
  378. RemoveIniSection DEST$+"\SIMTOWER.INI", "Sound", CmoNone
  379.  
  380. CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "AllSounds", "1", cmoOverwrite
  381. CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "Elevator", "1", cmoOverwrite
  382. CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "Events", "1", cmoOverwrite
  383. CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "Background", "1", cmoOverwrite
  384.  
  385. END SUB
  386.  
  387.  
  388.  
  389. '**
  390. '** Purpose:
  391. '**     Appends a file name to the end of a directory path,
  392. '**     inserting a backslash character as needed.
  393. '** Arguments:
  394. '**     szDir$  - full directory path (with optional ending "\")
  395. '**     szFile$ - filename to append to directory
  396. '** Returns:
  397. '**     Resulting fully qualified path name.
  398. '*************************************************************************
  399. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  400.     IF szDir$ = "" THEN
  401.     MakePath = szFile$
  402.     ELSEIF szFile$ = "" THEN
  403.     MakePath = szDir$
  404.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  405.     MakePath = szDir$ + szFile$
  406.     ELSE
  407.     MakePath = szDir$ + "\" + szFile$
  408.     END IF
  409. END FUNCTION
  410.