home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer 10 / 1995-09_Disc_10.iso / disk1 / simtdemo.ms_ / simtdemo.bin
Text File  |  1995-06-04  |  11KB  |  419 lines

  1. '**************************************************************************
  2. '* SimTower for Windows Demo 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 Demo 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:\SIMTDEMO"
  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. '' KO 6/2/95 - added the next line to skip user/company name input    
  157.    GOTO GETPATH
  158.  
  159.     sz$ = UIStartDlg(CUIDLL$, GETUSER, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  160.     USERNAME$ = GetSymbolValue("NameOut")
  161.     COMPANYNAME$ = GetSymbolValue("OrgOut")
  162.  
  163.     IF sz$ = "CONTINUE" THEN
  164.         IF LEN(USERNAME$) < 1 OR LEN(USERNAME$) > 22 OR MID$(USERNAME$,1,1) = " " THEN
  165.         GOSUB BADNAME
  166.             GOTO GETTHEUSER
  167.         END IF
  168.         IF LEN(COMPANYNAME$) > 22 OR MID$(COMPANYNAME$,1,1) = " " THEN
  169.             GOSUB BADCOMPANY
  170.             GOTO GETTHEUSER
  171.         END IF
  172.         UIPop 1
  173.     ELSEIF sz$ = "REACTIVATE" THEN
  174.         GOTO GETTHEUSER
  175.     ELSEIF sz$ = "BACK" THEN
  176.         UIPop 1
  177.         GOTO WELCOME
  178.     ELSE
  179.         GOSUB ASKQUIT
  180.         GOTO GETTHEUSER
  181.     END IF
  182.  
  183. GETPATH:
  184.     SetSymbolValue "EditTextIn", DEST$
  185.     SetSymbolValue "EditFocus", "END"
  186. GETPATHL1:
  187.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  188.     DEST$ = GetSymbolValue("EditTextOut")
  189.  
  190. ''Compute this later!!!! - KO
  191. ''(using GetCopyListCost())
  192.     required& = 4000000
  193.  
  194.     IF sz$ = "CONTINUE" THEN
  195.         IF MID$(DEST$, LEN(DEST$), 1) = "\" THEN
  196.             DEST$ = MID$(DEST$,1,LEN(DEST$) - 1)
  197.         END IF
  198.         UIPop 1
  199.  
  200.         ' Check space requirements
  201.         IF Dont_Check_For_Space = 0 THEN
  202.             IF IsDirWritable(DEST$) = 0 THEN
  203.                 GOSUB BADPATH
  204.             GOTO GETPATHL1
  205.             END IF
  206.             ''temp$ = "Free Space is " + str$(GetFreeSpaceForDrive(MID$(DEST$,1,1)))
  207.             ''i% = DoMsgBox(temp$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  208.     
  209.             ' Check free space
  210.  
  211.             IF GetFreeSpaceForDrive(MID$(DEST$,1,1)) < required& THEN
  212.                 GOSUB TOOBIG
  213.                 GOTO GETPATHL1
  214.             END IF
  215.  
  216.             ' Does it exist?
  217.  
  218.             IF DoesFileExist(DEST$ + "\SIMTDEMO.EXE", FemExists) = 1 THEN
  219.                 SetSymbolValue "ConfirmTextIn", DEST$
  220.                 sz$ = UIStartDlg(CUIDLL$, PATHEXISTS, "FConfirmDlgProc", 0, "")
  221.             IF sz$ = "EXIT" THEN
  222.                     UIPopAll
  223.                     ERROR STFQUIT
  224.                 ELSEIF sz$ = "BACK" THEN
  225.                     UIPop 1
  226.                     GOTO GETTHEUSER
  227.                 ELSEIF sz$ = "REACTIVATE" THEN
  228.                     GOTO CONFIRMALL
  229.             ELSE
  230.                     UIPop 1
  231.                 END IF
  232.             END IF
  233.         END IF
  234.     ' (end of >IF sz$ = "CONTINUE"<)
  235.     ELSEIF sz$ = "REACTIVATE" THEN
  236.         GOTO GETPATHL1
  237.     ELSEIF sz$ = "BACK" THEN
  238.         UIPop 1
  239.         GOTO GETTHEUSER
  240.     ELSE
  241.         GOSUB ASKQUIT
  242.         GOTO GETPATH
  243.     END IF
  244.  
  245.  
  246.  
  247. CONFIRMALL:
  248.     SetSymbolValue "ConfirmTextIn", USERNAME$
  249.     AddListItem "ConfirmTextIn", COMPANYNAME$
  250.     AddListItem "ConfirmTextIn", DEST$
  251.     sz$ = UIStartDlg(CUIDLL$, CONFNAME, "FConfirmDlgProc", 0, "")
  252.     IF sz$ = "EXIT" THEN
  253.     UIPopAll
  254.     ERROR STFQUIT
  255.     ELSEIF sz$ = "BACK" THEN
  256.     UIPop 1
  257.     GOTO GETTHEUSER
  258.     ELSEIF sz$ = "REACTIVATE" THEN
  259.     GOTO CONFIRMALL
  260.     ELSE
  261.     UIPop 1
  262.     END IF
  263.  
  264.  
  265. DOWING:
  266. ' This portion installs the DVA.386 driver on machines in Enhanced Mode
  267.     IF VflatdPresent() = 0 THEN
  268.         CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  269.         bInstallDVA% = 1
  270.     END IF
  271.  
  272.     WING1$ = "WinG"
  273.     RemoveIniSection "WIN.INI", wing1$, CmoNone
  274.  
  275. DOINSTALL:
  276.     Install
  277.  
  278.  
  279. QUIT:
  280.     ON ERROR GOTO ERRQUIT
  281.     IF ERR = 0 THEN
  282.         dlg% = EXITSUCCESS
  283.     ELSEIF ERR = STFQUIT THEN
  284.         dlg% = EXITQUIT
  285.     ELSE
  286.         dlg% = EXITFAILURE
  287.     END IF
  288.  
  289. QUITL1:
  290.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  291.     IF sz$ = "REACTIVATE" THEN
  292.         GOTO QUITL1
  293.     END IF
  294.     UIPop 1
  295.     END
  296.  
  297. ERRQUIT:
  298.     i% = DoMsgBox("Setup sources were corrupted!  Please call Maxis Technical Support.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  299.     END
  300.  
  301.  
  302. BADPATH:
  303.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  304.     IF sz$ = "REACTIVATE" THEN
  305.     GOTO BADPATH
  306.     END IF
  307.     UIPop 1
  308.     RETURN
  309.  
  310. BADNAME:
  311.     sz$ = UIStartDlg(CUIDLL$, BADNAME, "FInfo0DlgProc", 0, "")
  312.     IF sz$ = "REACTIVATE" THEN
  313.     GOTO BADNAME
  314.     END IF
  315.     UIPop 1
  316.     RETURN
  317.  
  318. BADCOMPANY:
  319.     sz$ = UIStartDlg(CUIDLL$, BADCOMPANY, "FInfo0DlgProc", 0, "")
  320.     IF sz$ = "REACTIVATE" THEN
  321.     GOTO BADCOMPANY
  322.     END IF
  323.     UIPop 1
  324.     RETURN
  325.  
  326.  
  327. TOOBIG:
  328.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  329.     IF sz$ = "REACTIVATE" THEN
  330.     GOTO TOOBIG
  331.     END IF
  332.     UIPop 1
  333.     RETURN
  334.  
  335.  
  336. ASKQUIT:
  337.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  338.  
  339.     IF sz$ = "EXIT" THEN
  340.     UIPopAll
  341.     ERROR STFQUIT
  342.     ELSEIF sz$ = "REACTIVATE" THEN
  343.     GOTO ASKQUIT
  344.     ELSE
  345.     UIPop 1
  346.     END IF
  347.     RETURN
  348.  
  349.  
  350.  
  351. '**
  352. '** Purpose:
  353. '**     Builds the copy list and performs all installation operations.
  354. '** Arguments:
  355. '**     none.
  356. '** Returns:
  357. '**     none.
  358. '*************************************************************************
  359. SUB Install STATIC
  360.  
  361.     ClearCopyList
  362.  
  363.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  364.  
  365.     AddSectionFilesToCopyList "WINDOWS", SrcDir$, WINDIR$
  366.  
  367.     AddSectionFilesToCopyList "SYSTEM", SrcDir$, WINSYSDIR$
  368.  
  369. '' KO 6/2/95 - remove this before ship!
  370.     DumpCopyList "C:\TEMP.TXT"
  371.  
  372.  
  373. '' Do the copy
  374.     CopyFilesInCopyList
  375.  
  376. '' Create Maxis group and SimTower, readme and help icons
  377. '' KO 6/2/95 - changed first item to SimTower for Windows Demo, and
  378. '' removed the ReadMe and Help items
  379.     CreateProgmanGroup "Maxis", "", cmoNone
  380.     ShowProgmanGroup  "Maxis", 1, cmoNone
  381.      CreateProgmanItem "Maxis", "SimTower for Windows Demo", DEST$ + "\SIMTDEMO.EXE", "", cmoOverwrite
  382. ''         CreateProgmanItem "Maxis", "SimTower Read Me", DEST$ + "\README.WRI", "", cmoOverwrite
  383. ''         CreateProgmanItem "Maxis", "SimTower Help", DEST$ + "\SIMTOWER.HLP", "", cmoOverwrite
  384. ''**    CreateProgmanItem "Maxis", "Register Electronically", DEST$ + "\EREG.EXE", "", cmoOverwrite
  385.  
  386. '' KO 6/2/95 - removed all SIMTOWER.INI file stuff
  387. ''RemoveIniSection DEST$+"\SIMTOWER.INI", "Sound", CmoNone
  388. ''
  389. ''CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "AllSounds", "1", cmoOverwrite
  390. ''CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "Elevator", "1", cmoOverwrite
  391. ''CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "Events", "1", cmoOverwrite
  392. ''CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "Background", "1", cmoOverwrite
  393.  
  394. END SUB
  395.  
  396.  
  397.  
  398. '**
  399. '** Purpose:
  400. '**     Appends a file name to the end of a directory path,
  401. '**     inserting a backslash character as needed.
  402. '** Arguments:
  403. '**     szDir$  - full directory path (with optional ending "\")
  404. '**     szFile$ - filename to append to directory
  405. '** Returns:
  406. '**     Resulting fully qualified path name.
  407. '*************************************************************************
  408. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  409.     IF szDir$ = "" THEN
  410.     MakePath = szFile$
  411.     ELSEIF szFile$ = "" THEN
  412.     MakePath = szDir$
  413.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  414.     MakePath = szDir$ + szFile$
  415.     ELSE
  416.     MakePath = szDir$ + "\" + szFile$
  417.     END IF
  418. END FUNCTION
  419.