home *** CD-ROM | disk | FTP | other *** search
/ PC Format (UK) 86 / PC_Format_September1998_Issue86.iso / Tech / truesp / disk1 / SETUP.MST < prev    next >
Encoding:
Text File  |  1993-11-18  |  7.4 KB  |  281 lines

  1. '**************************************************************************
  2. '*                       trueSpace 1.0 Setup
  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. CONST SMALLWIN      = 2200
  20. CONST RESTART       = 2600
  21. CONST RESTARTII     = 2700
  22.  
  23. ''Bitmap ID
  24. CONST LOGO = 1
  25.  
  26. GLOBAL SizeReq&  '' Total Disk Size required for installation
  27.  
  28. ''File Types
  29. GLOBAL WinDir$
  30. GLOBAL WinSysDir$
  31. GLOBAL WINDRIVE$    ''Windows Drive Letter.
  32. GLOBAL DEST$        ''Default destination directory.
  33. GLOBAL HasMath%     ''has math coprocessor
  34. GLOBAL HasEMU%      ''math emulator already installed    
  35.  
  36. DECLARE SUB Install
  37. DECLARE SUB EMUInstall
  38. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  39. DECLARE SUB Reboot LIB "iniupd.dll"
  40. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  41.  
  42.  
  43. INIT:
  44.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  45.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  46.  
  47.     SetBitmap CUIDLL$, LOGO
  48.     SetTitle "Caligari trueSpace 1.0"
  49.  
  50.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  51.     IF szInf$ = "" THEN
  52.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  53.     END IF
  54.     ReadInfFile szInf$
  55.  
  56.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  57.     DEST$ = WINDRIVE$ + ":\truspace"
  58.  
  59. WELCOME:
  60.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  61.     IF sz$ = "CONTINUE" THEN
  62.         UIPop 1
  63.     ELSE
  64.         GOSUB ASKQUIT
  65.         GOTO WELCOME
  66.     END IF
  67.  
  68.  
  69. GETPATH:
  70.     SetSymbolValue "EditTextIn", DEST$
  71.     SetSymbolValue "EditFocus", "END"
  72. GETPATHL1:
  73.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  74.     DEST$ = GetSymbolValue("EditTextOut")
  75.  
  76.     IF sz$ = "CONTINUE" THEN
  77.         IF IsDirWritable(DEST$) = 0 THEN
  78.             GOSUB BADPATH
  79.             GOTO GETPATHL1
  80.         END IF
  81.         UIPop 1
  82.     ELSEIF sz$ = "REACTIVATE" THEN
  83.         GOTO GETPATHL1
  84.     ELSEIF sz$ = "BACK" THEN
  85.         UIPop 1
  86.         GOTO WELCOME
  87.     ELSE
  88.         GOSUB ASKQUIT
  89.         GOTO GETPATH
  90.     END IF
  91.  
  92.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  93.     WinDir$ = GetWindowsDir()
  94.     WinSysDir$ = GetWindowsSysDir()
  95.     HasMath% = Has87MathChip()
  96.  
  97.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  98.     AddSectionFilesToCopyList "OBJECTS", SrcDir$, DEST$ + "\OBJECTS"
  99.     AddSectionFilesToCopyList "SCENES", SrcDir$, DEST$ + "\SCENES"
  100.     AddSectionFilesToCopyList "BUMPS", SrcDir$, DEST$ + "\BUMPS"
  101.     AddSectionFilesToCopyList "TEXTURES", SrcDir$, DEST$ + "\TEXTURES"
  102.     AddSectionFilesToCopyList "ENVIRMNT", SrcDir$, DEST$ + "\ENVIRMNT"
  103.     IF HasMath% < 1 THEN
  104.         AddSectionFilesToCopyList "Emulator", SrcDir$, WinSysDir$
  105.     END IF
  106.  
  107. ''  Check windrive diskspace
  108.     SizeReq& = GetCopyListCost ("","", "")
  109.     IF SizeReq& <> 0 THEN
  110.     GOSUB SMALLWIN
  111.     END
  112.     END IF
  113.  
  114.  
  115.     Install
  116.  
  117. '' If no emulator installed then no need to restart windows
  118.    IF HasMath%  > 0 THEN
  119.         GOTO QUIT
  120.    ENDIF
  121. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  122. '' else, it gives the user the choice
  123.     RESTRT% = RestartListEmpty ()
  124.     Exe$ = DEST$ + "\_msrstrt.exe"
  125.     Batch$ = DEST$ + "\_mssetup.bat"
  126.     empty$ = ""
  127. RESTART:
  128.     IF RESTRT% = 0 THEN
  129.        sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  130.        IF sz$ = "REACTIVATE" THEN
  131.       GOTO RESTART
  132.        ENDIF
  133.        I% = ExitExecRestart ()
  134.        RemoveFile Exe$, cmoForce
  135.        RemoveFile Batch$, cmoForce
  136.        END
  137.     ELSE
  138.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  139.        IF sz$ = "CONTINUE" THEN
  140.       I% = ExitWindowsExec (Exe$, empty$)
  141.       IF I% = 0 THEN
  142.          GOTO RESTART
  143.       ELSE
  144.          END
  145.      ENDIF
  146.        ELSEIF sz$ = "EXIT" THEN
  147.       UIPopAll
  148.       END
  149.        ELSEIF sz$ = "REACTIVATE" THEN
  150.       GOTO RESTART
  151.        ELSE
  152.       UIPop 1
  153.        END IF
  154.     END IF
  155.  
  156.  
  157. QUIT:
  158.     ON ERROR GOTO ERRQUIT
  159.  
  160.     IF ERR = 0 THEN
  161.     dlg% = EXITSUCCESS
  162.     ELSEIF ERR = STFQUIT THEN
  163.     dlg% = EXITQUIT
  164.     ELSE
  165.     dlg% = EXITFAILURE
  166.     END IF
  167. QUITL1:
  168.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  169.     IF sz$ = "REACTIVATE" THEN
  170.     GOTO QUITL1
  171.     END IF
  172.     UIPop 1
  173.     END
  174.  
  175. ERRQUIT:
  176.     i% = DoMsgBox("An installation problem occured, call the product support service", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  177.     END
  178.  
  179.  
  180. ASKQUIT:
  181.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  182.  
  183.     IF sz$ = "EXIT" THEN
  184.     UIPopAll
  185. ''        ERROR STFQUIT
  186.     END
  187.     ELSEIF sz$ = "REACTIVATE" THEN
  188.     GOTO ASKQUIT
  189.     ELSE
  190.     UIPop 1
  191.     END IF
  192.     RETURN
  193.  
  194. SMALLWIN:
  195.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  196.     IF sz$ = "REACTIVATE" THEN
  197.     GOTO SMALLWIN
  198.     END IF
  199.     UIPop 1
  200.     RETURN
  201.  
  202.  
  203. BADPATH:
  204.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  205.     IF sz$ = "REACTIVATE" THEN
  206.         GOTO BADPATH
  207.     END IF
  208.     UIPop 1
  209.     RETURN
  210.  
  211.  
  212. '**
  213. '** Purpose:
  214. '**     performs all installation operations.
  215. '** Arguments:
  216. '**     none.
  217. '** Returns:
  218. '**     none.
  219. '*************************************************************************
  220. SUB Install STATIC
  221.  
  222.     CreateDir DEST$, cmoNone
  223.  
  224.     CopyFilesInCopyList
  225.  
  226.     IF HasMath% < 1 THEN
  227.         EMUInstall
  228.     END IF
  229.  
  230.     CreateIniKeyValue "WIN.INI", "Extensions", "tsd", DEST$ + "\TRUESPAC.EXE ^.tsd", cmoOverwrite
  231.     CreateProgmanGroup "trueSpace", "", cmoNone
  232.     ShowProgmanGroup  "trueSpace", 1, cmoNone
  233.     CreateProgmanItem "trueSpace", "trueSpace", MakePath(DEST$,"truespac.exe"), "", cmoOverwrite
  234.     CreateProgmanItem "trueSpace", "Readme", MakePath(DEST$,"readme10.wri"), "", cmoOverwrite
  235.     CreateProgmanItem "trueSpace", "Self-running Demo 1024x768", MakePath(DEST$,"dems1024.tsd"), "", cmoOverwrite
  236.     CreateProgmanItem "trueSpace", "Self-running Demo 800x600", MakePath(DEST$,"dems800.tsd"), "", cmoOverwrite
  237.  
  238. END SUB
  239.  
  240. '**
  241. '** Purpose:
  242. '**     install math emulator in system.ini file
  243. '** Arguments:
  244. '**     none.
  245. '** Returns:
  246. '**     none.
  247. '*************************************************************************
  248. SUB EMUInstall STATIC
  249.  
  250.     HasEMU% = DoesIniKeyExist("system.ini", "386Enh", "wemu")
  251.     IF HasEMU% < 1 THEN
  252.         CreateIniKeyValue WinDir$ + "system.ini", "386Enh", "wemu", "installed", cmoOverwrite
  253.         CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "wemu387.386", cmoOverwrite
  254.     END IF
  255.  
  256. END SUB
  257.  
  258.  
  259.  
  260. '**
  261. '** Purpose:
  262. '**     Appends a file name to the end of a directory path,
  263. '**     inserting a backslash character as needed.
  264. '** Arguments:
  265. '**     szDir$  - full directory path (with optional ending "\")
  266. '**     szFile$ - filename to append to directory
  267. '** Returns:
  268. '**     Resulting fully qualified path name.
  269. '*************************************************************************
  270. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  271.     IF szDir$ = "" THEN
  272.         MakePath = szFile$
  273.     ELSEIF szFile$ = "" THEN
  274.         MakePath = szDir$
  275.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  276.         MakePath = szDir$ + szFile$
  277.     ELSE
  278.         MakePath = szDir$ + "\" + szFile$
  279.     END IF
  280. END FUNCTION
  281.