home *** CD-ROM | disk | FTP | other *** search
/ Shareware 2000 Hit Games / G2000WIN.ISO / game2000.mst < prev    next >
Text File  |  1995-07-28  |  11KB  |  359 lines

  1. '**************************************************************************
  2. '*                         CD Explorer Setup Script
  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 LICENSE            = 150
  13. CONST ASKQUIT            = 200
  14. CONST DESTPATH           = 300
  15. CONST EXITFAILURE        = 400
  16. CONST EXITQUIT           = 600
  17. CONST EXITSUCCESS        = 700
  18. CONST OPTIONS            = 800
  19. CONST APPHELP            = 900
  20. CONST LAUNCH             = 1000
  21. CONST BADPATH            = 6400
  22. CONST EXTENDEDLIST       = 3900
  23. CONST NEWERVERINSTALLED  = 7801
  24.  
  25. ''Bitmap ID
  26. CONST LOGO = 1
  27.  
  28. GLOBAL DEST$        ''Default destination directory.
  29. GLOBAL CDROMDRV$    ''CD-ROM Drive Letter.
  30. GLOBAL OPTCUR$      ''Option selection from option dialog.
  31.  
  32. CONST WS_VISIBLE            = &H10000000
  33. CONST WS_BORDER             = &H00800000
  34. CONST WS_CLIPCHILDREN       = &H02000000
  35. CONST GWL_STYLE             = -16
  36. CONST SW_SHOWMAXIMIZED      = 3
  37. CONST FN_INF                = "GAME2000.INF"
  38. CONST SZ_TITLE              = "CD Interface Setup"
  39. CONST SZ_GROUPNAME          = "2000 Shareware Games!"
  40. CONST FN_INIDATA            = "GAME2000.INI"
  41. CONST FN_HELPFILE           = "GAME2000.HLP"
  42. CONST FN_EXE            = "GAME2000.EXE"
  43.  
  44. GLOBAL FN_INI$                ' INI Filename (for product)
  45. GLOBAL FN_ICON$               ' Icon Filename (no path)
  46. GLOBAL SZ_DBF$                ' Database Filename (no path)
  47. GLOBAL SZ_PRODUCT$            ' Product Title
  48. GLOBAL SZ_LMICD_ID$           ' LMI CD identifier
  49. GLOBAL SZ_LMICD_TITLE$        ' LMI CD product title
  50. GLOBAL SZ_LMICD_CDTITLE$      ' LMI CD label on CD
  51. GLOBAL SZ_LMICD_PRODUCTLINE$  ' LMI CD product line
  52.  
  53. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%, iShow%) AS INTEGER
  54. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  55. DECLARE SUB Install
  56. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  57. DECLARE FUNCTION WinHelp LIB "User" (hWnd%, lpHelpFile$, wCommand%, dwData&) As INTEGER
  58. DECLARE FUNCTION WinExec Lib "Kernel" (lpCmdLine$, nCmdShow%) As INTEGER
  59.  
  60. INIT:
  61.  
  62.     hWnd%=HwndFrame()
  63.     i1&=SetWindowLong(hWnd%, GWL_STYLE, WS_VISIBLE + WS_BORDER + WS_CLIPCHILDREN)
  64.     j1%=ShowWindow(hWnd%, SW_SHOWMAXIMIZED)
  65.  
  66.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  67.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  68.  
  69.     SetBitmap CUIDLL$, LOGO
  70.     SetTitle SZ_TITLE
  71.  
  72.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  73.     IF szInf$ = "" THEN
  74.         szInf$ = GetSymbolValue("STF_CWDDIR") + FN_INF
  75.     END IF
  76.     ReadInfFile szInf$
  77.  
  78.  
  79.     OPTCUR$ = "1"
  80. '    DEST$ = SZ_DEST
  81.     CDROMDRV$ = MID$(GetSymbolValue("STF_SRCDIR"), 1, 1) + ":"
  82.  
  83.     ' Read from PLATINUM.INI File
  84.     ini$ = MakePath(CDROMDRV$, FN_INIDATA)
  85.     FN_INI$ = GetIniKeyString (ini$, "Settings", "INIFile")
  86.     FN_ICON$ = GetIniKeyString (ini$, "Setup Information", "Icon")
  87.     DEST$ = GetIniKeyString (ini$, "Setup Information", "Destination")
  88.     SZ_DBF$ = GetIniKeyString (ini$, "Setup Information", "Database")
  89.     SZ_PRODUCT$ = GetIniKeyString (ini$, "Product", "Title")
  90.     SZ_LMICD_ID$ = GetIniKeyString (ini$, "Setup Information", "LMICD_ID")
  91.     SZ_LMICD_TITLE$ = GetIniKeyString (ini$, "Setup Information", "LMICD_Title")
  92.     SZ_LMICD_CDTITLE$ = GetIniKeyString (ini$, "Setup Information", "LMICD_CDTitle")
  93.     SZ_LMICD_PRODUCTLINE$ = GetIniKeyString (ini$, "Setup Information", "LMICD_PRODUCTLINE")
  94.  
  95.     i% = SetSizeCheckMode(scmOff)
  96.  
  97. '$IFDEF DEBUG
  98.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  99.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  100.     IF IsDriveValid(WinDrive$) = 0 THEN
  101.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  102.         GOTO QUIT
  103.     END IF
  104. '$ENDIF 'DEBUG
  105.  
  106.  
  107.  
  108.  
  109.  
  110. WELCOME:
  111.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  112.     IF sz$ = "CONTINUE" THEN
  113.         UIPop 1
  114.     ELSE
  115.         GOSUB ASKQUIT
  116.         GOTO WELCOME
  117.     END IF
  118.  
  119.  
  120.  
  121.  
  122.  
  123. LICENSE:
  124.     sz$ = UIStartDlg(CUIDLL$, LICENSE, "FConfirmDlgProc", APPHELP, HELPPROC$)
  125.     IF sz$ = "CONTINUE" THEN
  126.         UIPop 1
  127.     ELSEIF sz$ = "LICENSE" THEN
  128.         i = WinHelp(hWnd%, MakePath(CDROMDRV$, FN_HELPFILE), 1, 900)
  129.         GOTO LICENSE
  130.     ELSEIF sz$ = "REACTIVATE" THEN
  131.         GOTO LICENSE
  132.     ELSEIF sz$ = "BACK" THEN
  133.         UIPop 1
  134.         GOTO WELCOME
  135.     ELSE
  136.         GOSUB ASKQUIT
  137.         GOTO LICENSE
  138.     END IF
  139.  
  140.  
  141.  
  142.  
  143.  
  144. IF DoesFileExist (MakePath(GetWindowsDir, FN_INI$), femExist) = 1 THEN
  145.  
  146.     iCurrentVer = Val(GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "Release"))
  147.     iInstalledVer = Val(GetIniKeyString (MakePath(GetWindowsDir, FN_INI$), "Product", "Release"))
  148.  
  149.     If iCurrentVer < iInstalledVer Then
  150.  
  151. NEWERVERINSTALLED:
  152.         sz$ = UIStartDlg(CUIDLL$, NEWERVERINSTALLED, "FInfoDlgProc", APPHELP, HELPPROC$)
  153.         IF sz$ = "CONTINUE" THEN
  154.             UIPop 1
  155.         ELSEIF sz$ = "REACTIVATE" THEN
  156.             GOTO GETPATHL1
  157.         ELSEIF sz$ = "BACK" THEN
  158.             UIPop 1
  159.             GOTO LICENSE
  160.         ELSE
  161.             GOSUB ASKQUIT
  162.             GOTO NEWERVERINSTALLED
  163.         END IF
  164.  
  165.     End If
  166.  
  167. END IF
  168.  
  169.  
  170.  
  171.  
  172. GETPATH:
  173.     SetSymbolValue "EditTextIn", DEST$
  174.     SetSymbolValue "EditFocus", "END"
  175. GETPATHL1:
  176.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  177.     DEST$ = GetSymbolValue("EditTextOut")
  178.  
  179.     IF sz$ = "CONTINUE" THEN
  180.         IF IsDirWritable(DEST$) = 0 THEN
  181.             GOSUB BADPATH
  182.             GOTO GETPATHL1
  183.         END IF
  184.         UIPop 1
  185.     ELSEIF sz$ = "REACTIVATE" THEN
  186.         GOTO GETPATHL1
  187.     ELSEIF sz$ = "BACK" THEN
  188.         UIPop 1
  189.         GOTO LICENSE
  190.     ELSE
  191.         GOSUB ASKQUIT
  192.         GOTO GETPATH
  193.     END IF
  194.  
  195.  
  196.  
  197.     Install
  198.  
  199.  
  200.  
  201. QUIT:
  202.     ON ERROR GOTO ERRQUIT
  203.  
  204.     IF ERR = 0 THEN
  205.         dlg% = EXITSUCCESS
  206.     ELSEIF ERR = STFQUIT THEN
  207.         dlg% = EXITQUIT
  208.     ELSE
  209.         dlg% = EXITFAILURE
  210.     END IF
  211. QUITL1:
  212.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  213.     IF sz$ = "REACTIVATE" THEN
  214.         GOTO QUITL1
  215.     END IF
  216.  
  217.     UIPop 1
  218.  
  219.  
  220.  
  221.  
  222.  
  223. IF dlg% = EXITSUCCESS THEN
  224.  
  225. LAUNCH:
  226.     sz$ = UIStartDlg(CUIDLL$, LAUNCH, "FConfirmDlgProc", APPHELP, HELPPROC$)
  227.     IF sz$ = "RUN" THEN
  228.         i = WinExec (MakePath(CDROMDRV$, FN_EXE), 1)
  229.     ELSEIF sz$ = "REACTIVATE" THEN
  230.         GOTO LAUNCH
  231.     END IF
  232.     UIPop 1
  233.  
  234. END IF
  235.  
  236.  
  237.  
  238.  
  239.  
  240.     END
  241.  
  242.  
  243.  
  244.  
  245.  
  246. ERRQUIT:
  247.     i% = DoMsgBox("Setup sources were corrupted.  Please try cleaning the CD-ROM and then run setup again.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  248.     END
  249.  
  250.  
  251.  
  252. BADPATH:
  253.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  254.     IF sz$ = "REACTIVATE" THEN
  255.         GOTO BADPATH
  256.     END IF
  257.     UIPop 1
  258.     RETURN
  259.  
  260.  
  261.  
  262. ASKQUIT:
  263.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  264.  
  265.     IF sz$ = "EXIT" THEN
  266.         UIPopAll
  267.         ERROR STFQUIT
  268.     ELSEIF sz$ = "REACTIVATE" THEN
  269.         GOTO ASKQUIT
  270.     ELSE
  271.         UIPop 1
  272.     END IF
  273.     RETURN
  274.  
  275.  
  276.  
  277. '**
  278. '** Purpose:
  279. '**     Builds the copy list and performs all installation operations.
  280. '** Arguments:
  281. '**     none.
  282. '** Returns:
  283. '**     none.
  284. '*************************************************************************
  285. SUB Install STATIC
  286.  
  287.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  288.     CreateDir DEST$, cmoNone
  289.  
  290.     SetCopyGaugePosition 76, 130
  291.  
  292.     OpenLogFile MakePath(DEST$, "GAME2000.ILG"), 0
  293.     WriteToLogFile ""
  294.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  295.     WriteToLogFile ""
  296.     WriteToLogFile "May have had to create the directory: " + DEST$
  297.     WriteToLogFile ""
  298.  
  299.     AddSectionKeyFileToCopyList "Main", "1", SrcDir$, DEST$
  300.     AddSectionKeyFileToCopyList "Dynalinks", "1", SrcDir$, GetWindowsSysDir
  301.     CopyFilesInCopyList
  302.  
  303.     ' Create INI File
  304.     ini$ = MakePath(GetWindowsDir, FN_INI$)
  305.     CreateIniKeyValue ini$, "Settings", "PlayFlic", "-1", cmoOverwrite
  306.     CreateIniKeyValue ini$, "Settings", "VerifyOnExit", "-1", cmoNone
  307.     CreateIniKeyValue ini$, "Settings", "PlayButtonSound", "-1", cmoNone
  308.     CreateIniKeyValue ini$, "Settings", "VerifyDelete", "-1", cmoNone
  309.     CreateIniKeyValue ini$, "Settings", "MinimizeOnLaunch", "0", cmoNone
  310.  
  311.     CreateIniKeyValue ini$, "Paths", "Database", MakePath(DEST$, SZ_DBF$), cmoOverwrite
  312.     CreateIniKeyValue ini$, "Options", "SystemDB", MakePath(DEST$, "system.mda"), cmoOverwrite
  313.  
  314.     CreateIniKeyValue ini$, "Product", "Title", GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "Title"), cmoOverwrite
  315.     CreateIniKeyValue ini$, "Product", "Release", GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "Release"), cmoOverwrite
  316.     CreateIniKeyValue ini$, "Product", "ReleaseText", GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "ReleaseText"), cmoOverwrite
  317.  
  318.     ' Create LMICD.INI File, store information in it...
  319.     ini$ = MakePath(GetWindowsDir, "LMICD.INI")
  320.     CreateIniKeyValue ini$, SZ_LMICD_ID$, "Title", SZ_LMICD_TITLE$, cmoOverwrite
  321.     CreateIniKeyValue ini$, SZ_LMICD_ID$, "CDTitle", SZ_LMICD_CDTITLE$, cmoOverwrite
  322.     CreateIniKeyValue ini$, SZ_LMICD_ID$, "ProductLine", SZ_LMICD_PRODUCTLINE$, cmoOverwrite
  323.     CreateIniKeyValue ini$, SZ_LMICD_ID$, "WorkingDir", CDROMDRV$ + "\", cmoOverwrite
  324.  
  325.     CreateProgmanGroup SZ_GROUPNAME, "", cmoNone
  326.     ShowProgmanGroup  SZ_GROUPNAME, 1, cmoNone
  327.     CreateProgmanItem SZ_GROUPNAME, SZ_PRODUCT$, MakePath(CDROMDRV$, FN_EXE), MakePath(DEST$,FN_ICON$)+",0,0,0,", cmoOverwrite
  328.     CreateProgmanItem SZ_GROUPNAME, SZ_PRODUCT$ + " Help", "winhelp.exe " + MakePath(CDROMDRV$,FN_HELPFILE), MakePath(DEST$,FN_ICON$)+",0,0,0,"+CDROMDRV$ + "\", cmoOverwrite
  329.  
  330.     CloseLogFile
  331.  
  332. END SUB
  333.  
  334.  
  335.  
  336.  
  337.  
  338. '**
  339. '** Purpose:
  340. '**     Appends a file name to the end of a directory path,
  341. '**     inserting a backslash character as needed.
  342. '** Arguments:
  343. '**     szDir$  - full directory path (with optional ending "\")
  344. '**     szFile$ - filename to append to directory
  345. '** Returns:
  346. '**     Resulting fully qualified path name.
  347. '*************************************************************************
  348. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  349.     IF szDir$ = "" THEN
  350.         MakePath = szFile$
  351.     ELSEIF szFile$ = "" THEN
  352.         MakePath = szDir$
  353.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  354.         MakePath = szDir$ + szFile$
  355.     ELSE
  356.         MakePath = szDir$ + "\" + szFile$
  357.     END IF
  358. END FUNCTION
  359.