home *** CD-ROM | disk | FTP | other *** search
/ PC Format Collection 7 / PCFORMAT07.iso / SDISKPC / DKSETUP / DKSETUP.MST < prev    next >
Text File  |  1994-07-29  |  14KB  |  519 lines

  1.  
  2. '**************************************************************************
  3. '*                       Sampler Setup
  4. '**************************************************************************
  5.  
  6. '$DEFINE DEBUG  ''Define for script development/debugging
  7.  
  8. '$INCLUDE 'setupapi.inc'
  9. '$INCLUDE 'msdetect.inc'
  10. '' '$INCLUDE 'msshared.inc'
  11.  
  12. '' OPTION EXPLICIT
  13.  
  14. DECLARE FUNCTION FIsVGA LIB "mscuistf.dll" AS INTEGER
  15. DECLARE FUNCTION FIs256Colour LIB "mscuistf.dll" AS INTEGER
  16.  
  17.  
  18.  
  19. ''Dialog ID's
  20. CONST WELCOME       = 100
  21. CONST CUSTOMHELP    = 106
  22. CONST SPEED         = 111
  23. CONST BILLBOARD     = 113
  24. CONST ASKQUIT       = 200
  25. CONST DESTPATH      = 300
  26. CONST EXITFAILURE   = 400
  27. CONST EXITQUIT      = 600
  28. CONST EXITSUCCESS   = 700
  29. CONST OPTIONS       = 800
  30. CONST APPHELP       = 900
  31. CONST DONENEWSYSSOFT    = 1100
  32. CONST MAILMAN           = 1500
  33. CONST DONENOSYSSOFT     = 1800
  34. CONST NEWSYSTEMSOFTWARE = 2300
  35. CONST NEWADPCM          = 2600
  36. CONST WARNNOSYSSOFT     = 3100
  37. CONST PROGMANGRP        = 3742
  38. CONST CUSTOM        = 6200
  39. CONST NOSPACE       = 6300
  40. CONST BADPATH       = 6400
  41. CONST NEED31        = 6401
  42. CONST NOMOUSE       = 6402
  43. CONST BADVGA        = 6403
  44. CONST NOT256        = 6404
  45. CONST POORMACHINE   = 6405
  46. CONST AWFULMACHINE  = 6406
  47. CONST PATHHELP      = 6407
  48. CONST WHIZZHELP     = 6408
  49. CONST URKADPCM      = 6409
  50. CONST ADPCMHELP     = 6410
  51.  
  52. ''Bitmap ID
  53. CONST LOGO = 1
  54.  
  55. GLOBAL CURSOR%      '' Old mouse cursor state
  56. GLOBAL DEST$        '' Default destination directory.
  57. GLOBAL ProdSrc$, dirCode$, dirSetup$
  58. GLOBAL SysSrc$
  59. GLOBAL SRCDIR$      '' Source Drive
  60. GLOBAL FussyUser$   '' "1" for express installation, "2" for custom.
  61. GLOBAL MINIMAL$     '' "ON" for minimal installation, "OFF" for normal
  62. GLOBAL PROGMAN$     '' "ON" for invoke program manager, "OFF" otherwise
  63. GLOBAL CUSTCHECK$   '' the state of all Custom dialogue check boxes
  64. GLOBAL PROGGRP$     '' Name of Program Manager Group
  65. GLOBAL PRODNAME$    '' Product Name
  66. GLOBAL COMPNAME$    '' Company Name
  67. GLOBAL WINSYSDIR$   '' Windows System Driver
  68. GLOBAL DESTDRIVE$   '' Destination drive
  69. GLOBAL WINDRIVE$    '' Windows drive (system directory)
  70. GLOBAL WinDir$      '' Windows directory
  71. GLOBAL DD%          '' Integer DESTDRIVE$
  72. GLOBAL WD%          '' Integer WINDRIVE$
  73. GLOBAL SizeReq&     '' Total installation size?
  74. GLOBAL NEWSYSADPCM$
  75. GLOBAL CrapLng%
  76. GLOBAL Junk&
  77. GLOBAL CUIDLL$
  78. GLOBAL HELPPROC$
  79. GLOBAL SZINF$
  80. GLOBAL OPTCUR$
  81. GLOBAL I%
  82. GLOBAL SZ$, Key$, SrcDrive$, SrcPengeDir$
  83. GLOBAL VerNew$
  84. GLOBAL VerOld$
  85. GLOBAL ADPCMCOPY%, ADPCMINIUPDATED%
  86. GLOBAL dlg%
  87. GLOBAL INI$
  88. GLOBAL INSTRINI$    '' Fully-qualified path to BODY.INI
  89. GLOBAL Count%, RebootMsg%, uLen%
  90. GLOBAL OLDNTH&, NEWNTH&
  91. GLOBAL OldYear%, NewYear%, OldMonth%, NewMonth%, OldDay%, NewDay%
  92. GLOBAL ExeFile$, PengeFile$, IniFile$, Section$, Moi$
  93.  
  94. DECLARE SUB Install
  95. DECLARE FUNCTION IsVersionLater (VersionOld$, VersionNew$) AS INTEGER
  96. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  97. DECLARE FUNCTION IsDateLater (DateOld$, DateNew$) AS INTEGER
  98.  
  99. '******************************************************************
  100. '** Declare the funcitons in USER.EXE we need to register a
  101. '** unique message identifier and needed to post that message
  102. '** to the NSETUP.EXE program.  See the Windows api documentation
  103. '** for additional information on these functions.
  104. '******************************************************************
  105. DECLARE FUNCTION PostMessage LIB "user" (hwnd%, msg%, wparam%, lparam&) AS INTEGER
  106. DECLARE FUNCTION RegisterWindowMessage LIB "user" (szRebootMessage$) AS INTEGER
  107.  
  108.  
  109.  
  110. INIT:
  111.     Cursor% = ShowWaitCursor ()
  112.     dirCode$ = "SDISKPC"
  113.     dirSetup$ = "SDISKPC\DKSETUP"
  114.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  115.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  116.     PRODNAME$ = "Sampler Disc"
  117.     COMPNAME$ = "DK Multimedia"
  118.     ExeFile$ = "dkmmsduk.exe"
  119.     PengeFile$ = ""
  120.     IniFile$ = ""
  121.     Section$ = "Sampler"
  122.     Moi$ = ProdName$ + " Setup"
  123.     WinSysDir$ = GetWindowsSysDir ()
  124.     WinDir$ = GetWindowsDir ()
  125.     WINDRIVE$ = MID$ (GetWindowsSysDir (), 1, 1)
  126.     INSTRINI$ = MakePath(GetWindowsDir(),IniFile$)  ' For TR4 // Roy 17/6/94
  127.  
  128.     SrcDir$ = GetSymbolValue ("STF_SRCDIR")
  129.     uLen% = Len (SrcDir$) - Len (dirSetup$)
  130.     ProdSrc$ = Mid$ (SrcDir$, 1, uLen% - 1) + dirCode$
  131.     SysSrc$ = SrcDir$
  132.  
  133.     SetAbout PRODNAME$, "⌐ 1994 " + COMPNAME$
  134.     CrapLng% = SetBeepingMode (1)
  135.     SetBitmap CUIDLL$, LOGO
  136.     SetTitle PRODNAME$ + " Setup"
  137.     CrapLng% = SetDecompMode (1)
  138.  
  139.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  140.  
  141.     IF szInf$ = "" THEN
  142.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  143.     END IF
  144.  
  145.     ReadInfFile szInf$
  146.  
  147.     OPTCUR$ = "1"
  148.     DEST$ = "C:\"
  149.     MINIMAL$ = "OFF"
  150.     PROGMAN$ = "ON"
  151.     ADPCMINIUPDATED% = 0
  152.  
  153. '***************************************************************
  154. '**  Here we go registering the message so we can communicate
  155. '**  with NSETUP.EXE.
  156. '***************************************************************
  157.     RebootMsg% = RegisterWindowMessage ("DKSetup")
  158.  
  159.  
  160. '$IFDEF DEBUG
  161.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  162.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  163.     IF IsDriveValid(WinDrive$) = 0 THEN
  164.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  165.         GOTO QUIT
  166.     END IF
  167. '$ENDIF ''DEBUG
  168.  
  169.  
  170. WELCOME:
  171.     RestoreCursor (Cursor%)
  172.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  173.     Cursor% = ShowWaitCursor ()
  174.     IF sz$ = "CONTINUE" THEN
  175.         UIPop 1
  176.     ELSE
  177.         GOSUB ASKQUIT
  178.         GOTO WELCOME
  179.     END IF
  180.  
  181. TEST31:
  182.     IF GetWindowsMajorVersion () > 3 THEN
  183.         GOTO TESTVGA
  184.     END IF
  185.  
  186.     IF GetWindowsMajorVersion () < 3 THEN
  187.         GOTO GORDONBENNETT
  188.     END IF
  189.  
  190.     IF GetWindowsMinorVersion () >= 10 THEN
  191.         GOTO TESTVGA
  192.     END IF
  193.  
  194. GORDONBENNETT:
  195.     RestoreCursor (Cursor%)
  196.     sz$ = UIStartDlg (CUIDLL$, NEED31, "FInfoDlgProc", AWFULMACHINE, HELPPROC$)
  197.     Cursor% = ShowWaitCursor ()
  198.     UIPopAll
  199.     ERROR STFQUIT
  200.  
  201.  
  202. TESTVGA:
  203.     IF GetScreenHeight () >= 480 AND GetScreenWidth () >= 640 THEN
  204.         GOTO TESTMOUSE
  205.     ELSE
  206.         RestoreCursor (Cursor%)
  207.         sz$ = UIStartDlg (CUIDLL$, BADVGA, "FInfoDlgProc", AWFULMACHINE, HELPPROC$)
  208.         Cursor% = ShowWaitCursor ()
  209.         IF sz$ = "CONTINUE" THEN
  210.             UIPop(1)
  211.             GOTO TESTMOUSE
  212.         ELSEIF sz$ = "REACTIVATE" THEN
  213.             GOTO TESTVGA
  214.         ELSEIF sz$ = "BACK" THEN
  215.             UIPop 1
  216.             GOTO WELCOME
  217.         ELSE
  218.             GOSUB ASKQUIT
  219.             GOTO TESTMOUSE
  220.         END IF
  221.     END IF
  222.  
  223. TESTMOUSE:
  224.     IF HasMouseInstalled() > 0 THEN
  225.         GOTO TESTCOLOUR
  226.     ELSE
  227.         RestoreCursor (Cursor%)
  228.         sz$ = UIStartDlg (CUIDLL$, NOMOUSE, "FInfoDlgProc", AWFULMACHINE, HELPPROC$)
  229.         Cursor% = ShowWaitCursor ()
  230.         IF sz$ = "CONTINUE" THEN
  231.             UIPop(1)
  232.             GOTO TESTCOLOUR
  233.         ELSEIF sz$ = "REACTIVATE" THEN
  234.             GOTO TESTMOUSE
  235.         ELSEIF sz$ = "BACK" THEN
  236.             UIPop 1
  237.             GOTO WELCOME
  238.         ELSE
  239.             GOSUB ASKQUIT
  240.             GOTO TESTCOLOUR
  241.         END IF
  242.     END IF
  243.  
  244. TESTCOLOUR:
  245.     IF FIs256Colour() > 0 THEN
  246.         GOTO WHIZZO
  247.     ELSE
  248.         RestoreCursor (Cursor%)
  249.         sz$ = UIStartDlg (CUIDLL$, NOT256, "FInfoDlgProc", POORMACHINE, HELPPROC$)
  250.         Cursor% = ShowWaitCursor ()
  251.         IF sz$ = "CONTINUE" THEN
  252.             UIPop(1)
  253.             GOTO WHIZZO
  254.         ELSEIF sz$ = "REACTIVATE" THEN
  255.             GOTO TESTCOLOUR
  256.         ELSEIF sz$ = "BACK" THEN
  257.             UIPop 1
  258.             GOTO WELCOME
  259.         ELSE
  260.             GOSUB ASKQUIT
  261.             GOTO WHIZZO
  262.         END IF
  263.     END IF
  264.  
  265. WHIZZO:
  266.     RestoreCursor (Cursor%)
  267.     sz$ = UIStartDlg(CUIDLL$, CUSTOM, "FInfoDlgProc", APPHELP, HELPPROC$)
  268.     Cursor% = ShowWaitCursor ()
  269.  
  270.     IF sz$ = "CONTINUE" THEN
  271.         UIPop(1)
  272.         ProgMan$ = "ON"
  273.         GOTO FUSSPOT
  274.     ELSEIF sz$ = "CANCEL" THEN
  275.         UIPop(1)
  276.         ProgMan$ = "OFF"
  277.         GOTO FUSSPOT
  278.     ELSEIF sz$ = "REACTIVATE" THEN
  279.         GOTO WHIZZO
  280.     ELSEIF sz$ = "BACK" THEN
  281.         UIPop 1
  282.         GOTO WELCOME
  283.     ELSE
  284.         GOSUB ASKQUIT
  285.         GOTO FUSSPOT
  286.     END IF
  287.  
  288. FUSSPOT:
  289.     SetCopyGaugePosition -1, 140
  290.     Install
  291.  
  292.  
  293. QUIT:
  294.     ON ERROR GOTO ERRQUIT
  295.  
  296.     IF ERR = 0 THEN
  297.         dlg% = EXITSUCCESS
  298.     ELSEIF ERR = STFQUIT THEN
  299.         dlg% = EXITQUIT
  300.         GOTO QUITL1
  301.     ELSE
  302.         dlg% = EXITFAILURE
  303.         GOTO QUITL1
  304.     END IF
  305.  
  306. QUITL3:
  307.     dlg% = DONENEWSYSSOFT
  308.     RestoreCursor (Cursor%)
  309.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfoDlgProc", 0, "")
  310.     Cursor% = ShowWaitCursor ()
  311.  
  312.     IF sz$ = "REACTIVATE" THEN
  313.         GOTO QUITL3
  314.     ELSEIF sz$ = "CONTINUE" THEN
  315.         RUN "NOTEPAD.EXE" + " " + MakePath(ProdSrc$,"README.TXT"), NOWAIT
  316.         GOTO QUITL3
  317.     ELSEIF sz$ = "BACK" THEN
  318.         SetRestartDir DEST$
  319.         i% = PostMessage (65535, RebootMsg%, 0, 0)
  320.     END IF
  321.     UIPop 1
  322.  
  323.     STOP
  324.     END
  325.  
  326.  
  327. QUITL1:
  328.     RestoreCursor (Cursor%)
  329.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  330.     Cursor% = ShowWaitCursor ()
  331.     IF sz$ = "REACTIVATE" THEN
  332.         GOTO QUITL1
  333.     END IF
  334.     UIPop 1
  335.  
  336.     STOP
  337.     END
  338.  
  339. ERRQUIT:
  340.     i% = DoMsgBox("The setup sources were corrupted. You may be able to correct the problem by using SCANDISK to fix your hard disk.", Moi$, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  341.     END
  342.  
  343.  
  344.  
  345.  
  346.  
  347. ASKQUIT:
  348.     RestoreCursor (Cursor%)
  349.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  350.     Cursor% = ShowWaitCursor ()
  351.  
  352.     IF sz$ = "EXIT" THEN
  353.         UIPopAll
  354.         ERROR STFQUIT
  355.     ELSEIF sz$ = "REACTIVATE" THEN
  356.         GOTO ASKQUIT
  357.     ELSE
  358.         UIPop 1
  359.     END IF
  360.     RETURN
  361.  
  362.  
  363.  
  364. '**
  365. '** Purpose:
  366. '**     Builds the copy list and performs all installation operations.
  367. '** Arguments:
  368. '**     none.
  369. '** Returns:
  370. '**     none.
  371. '*************************************************************************
  372. SUB Install STATIC
  373.  
  374.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  375.  
  376.     OpenLogFile MakePath(DEST$, "SETUP.LOG"), 0
  377.     SrcDrive$ = MID$(SrcDir$, 1, 1)
  378.     uLen% = LEN (SrcDir$) - Len (dirSetup$) - 1
  379.     SrcPengeDir$ = MID$(SrcDir$, 1, uLen%-1)
  380.  
  381.  
  382.     ''ini$ = MakePath(WinDir$, "BODY.INI")  // Roy 17/6/94
  383. ''    CreateIniKeyValue "WIN.INI", "MSSetup Sample 1", "Option", OPTCUR$, cmoNone
  384.     ''CreateIniKeyValue ini$, "Directory", "Data", SrcDir$ , cmoNone // Roy 17/6/94
  385.  
  386.     IF PROGMAN$ = "ON" THEN
  387.  
  388.         PROGGRP$ = COMPNAME$
  389.  
  390.         WriteToLogFile ""
  391.         WriteToLogFile "Updating Program Manager."
  392.         WriteToLogFile ""
  393.         CreateProgmanGroup PROGGRP$, "", cmoNone
  394.         ShowProgmanGroup   PROGGRP$, 1, cmoNone
  395.  
  396.         sz$ = ",,,,"+ProdSrc$
  397.         szInf$ = MakePath (ProdSrc$,ExeFile$)
  398.         CreateProgmanItem PROGGRP$, PRODNAME$, szInf$, sz$, cmoOverwrite
  399.         CreateProgmanItem PROGGRP$, ProdName$ + " Read Me", "notepad.exe "+MakePath(ProdSrc$,"readme.txt"), "", cmoOverwrite
  400.  
  401.     END IF
  402.  
  403.     WriteToLogFile ""
  404.     WriteToLogFile "Installation complete"
  405.     WriteToLogFile ""
  406.     CloseLogFile
  407.     RemoveFile MakePath(DEST$, "SETUP.LOG"), cmoNone
  408.  
  409.  
  410. END SUB
  411.  
  412. FUNCTION IsVersionLater (VersionOld$, VersionNew$) STATIC AS INTEGER
  413.  
  414.     IsVersionLater = 0
  415.  
  416.     FOR Count% = 1 TO 4
  417.  
  418.        OldNth& = GetVersionNthField (VersionOld$, Count%)
  419.        NewNth& = GetVersionNthField (VersionNew$, Count%)
  420.  
  421.         IF OldNth& > NewNth& THEN
  422.  
  423.             EXIT FOR
  424.  
  425.         END IF
  426.  
  427.         IF NewNth& > OldNth& THEN
  428.  
  429.             IsVersionLater = 1
  430.             EXIT FOR
  431.  
  432.         END IF
  433.  
  434.     NEXT Count%
  435.  
  436. END FUNCTION
  437.  
  438. '*************************************************************************
  439. '**
  440. '** IsDateLater
  441. '** --------
  442. '** Purpose:
  443. '**     Compares two file dates
  444. '** Arguments:
  445. '**     DateOld$ in YYYY-MM-DD-HH-MM-SS format
  446. '**     DateNew$ in YYYY-MM-DD-HH-MM-SS format
  447. '** Returns:
  448. '**     1 if new date is later, 0 if new date is older or the same
  449. '*************************************************************************
  450. FUNCTION IsDateLater (DateOld$, DateNew$) STATIC AS INTEGER
  451.  
  452.     'First compare year
  453.  
  454.     OldYear% = GetYearFromDate (DateOld$)
  455.     NewYear% = GetYearFromDate (DateNew$)
  456.  
  457.     IF NewYear% < OldYear% THEN
  458.         IsDateLater = 0
  459.  
  460.     ELSEIF NewYear% = OldYear% THEN
  461.  
  462.         'If year is the same, compare month
  463.  
  464.         OldMonth% = GetMonthFromDate (DateOld$)
  465.         NewMonth% = GetMonthFromDate (DateNew$)
  466.  
  467.         IF NewMonth% < OldMonth% THEN
  468.             IsDateLater = 0
  469.  
  470.         ELSEIF NewMonth% = OldMonth% THEN
  471.  
  472.             'If month is the same, compare day
  473.  
  474.             OldDay% = GetDayFromDate (DateOld$)
  475.             NewDay% = GetDayFromDate (DateNew$)
  476.  
  477.             IF NewDay% <= OldDay% THEN
  478.                 IsDateLater = 0
  479.             ELSE
  480.                 IsDateLater = 1
  481.             END IF
  482.  
  483.         ELSE
  484.             IsDateLater = 1
  485.         END IF
  486.  
  487.     ELSE
  488.         IsDateLater = 1
  489.     ENDIF
  490.  
  491. END FUNCTION
  492.  
  493.  
  494.  
  495.  
  496. '**
  497. '** Purpose:
  498. '**     Appends a file name to the end of a directory path,
  499. '**     inserting a backslash character as needed.
  500. '** Arguments:
  501. '**     szDir$  - full directory path (with optional ending "\")
  502. '**     szFile$ - filename to append to directory
  503. '** Returns:
  504. '**     Resulting fully qualified path name.
  505. '*************************************************************************
  506. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  507.     IF szDir$ = "" THEN
  508.         MakePath = szFile$
  509.     ELSEIF szFile$ = "" THEN
  510.         MakePath = szDir$
  511.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  512.         MakePath = szDir$ + szFile$
  513.     ELSE
  514.         MakePath = szDir$ + "\" + szFile$
  515.     END IF
  516. END FUNCTION
  517.  
  518.  
  519.