home *** CD-ROM | disk | FTP | other *** search
/ Aztec Masterblend / aztecmasterblendazteknewmediaj / cakewalk / wincake.ms_ / wincake.bin
Text File  |  1992-05-22  |  14KB  |  446 lines

  1. '**************************************************************************
  2. '* $Header:   G:/SRC/WCW/MSSETUP/VCS/WINCAKE.MSV   1.7   22 May 1992 11:11:14   pws  $
  3. '*
  4. '* DESCRIPTION: MS-Setup script for Wincake and Wcwdemo.
  5. '*
  6. '* $Log:   G:/SRC/WCW/MSSETUP/VCS/WINCAKE.MSV  $
  7. '* 
  8. '*    Rev 1.7   22 May 1992 11:11:14   pws
  9. '* Demo .INI file is named WINCAKE.INI, not WCWDEMO.INI.
  10. '* 
  11. '*    Rev 1.6   13 May 1992 22:22:10   pws
  12. '* .INF filename is now always SETUP.INF.
  13. '* 
  14. '*    Rev 1.5   08 May 1992 18:28:28   gwh
  15. '* Use EXITSUCCESS_DEMO if installing Demo.
  16. '* 
  17. '*    Rev 1.4   08 May 1992 18:00:20   pws
  18. '* Support WCWDEMO.
  19. '* 
  20. '*    Rev 1.3   03 May 1992 18:51:18   pws
  21. '* Associate filetypes in Registration Database, too.
  22. '* 
  23. '*    Rev 1.2   21 Apr 1992 00:37:36   pws
  24. '* Added filetype associations for .WRK, .MID, & .MFF to WIN.INI,
  25. '* obtaining user confirmation when desirable.
  26. '* Reject installation if Windows Version < 3.1.
  27. '* Sense and handle when insufficient disk space on any paths.
  28. '* 
  29. '*    Rev 1.1   17 Apr 1992 19:16:38   gwh
  30. '* Revised some names, including ProgMan group now "Cakewalk Professional".
  31. '* 
  32. '*    Rev 1.0   17 Apr 1992 17:14:56   pws
  33. '* Initial revision.
  34. '*
  35. '* Copyright (C) 1990- by Greg Hendershott.  All rights reserved.
  36. '**************************************************************************
  37.  
  38. '$INCLUDE 'setupapi.inc'
  39. '$INCLUDE 'msdetect.inc'
  40. '$INCLUDE 'msregdb.inc'
  41.  
  42. ''These should have all been in SETUPAPI.INC.
  43. ''Note that duplicate definitions are errors and so are commented out!
  44.  
  45. 'CONST MB_OK               = &H0000
  46. CONST MB_OKCANCEL         = &H0001
  47. CONST MB_ABORTRETRYIGNORE = &H0002
  48. CONST MB_YESNOCANCEL      = &H0003
  49. CONST MB_YESNO            = &H0004
  50. CONST MB_RETRYCANCEL      = &H0005
  51. CONST MB_TYPEMASK         = &H000F
  52.  
  53. 'CONST MB_ICONHAND         = &H0010
  54. CONST MB_ICONQUESTION     = &H0020
  55. CONST MB_ICONEXCLAMATION  = &H0030
  56. CONST MB_ICONASTERISK     = &H0040
  57. CONST MB_ICONMASK         = &H00F0
  58.  
  59. CONST MB_ICONINFORMATION  = MB_ICONASTERISK
  60. CONST MB_ICONSTOP         = MB_ICONHAND
  61.  
  62. CONST MB_DEFBUTTON1       = &H0000
  63. CONST MB_DEFBUTTON2       = &H0100
  64. CONST MB_DEFBUTTON3       = &H0200
  65. CONST MB_DEFMASK          = &H0F00
  66.  
  67. CONST MB_APPLMODAL        = &H0000
  68. CONST MB_SYSTEMMODAL      = &H1000
  69. 'CONST MB_TASKMODAL        = &H2000
  70.  
  71. CONST MB_NOFOCUS          = &H8000
  72.  
  73. CONST IDOK                = 1
  74. CONST IDCANCEL            = 2
  75. CONST IDABORT             = 3
  76. CONST IDRETRY             = 4
  77. CONST IDIGNORE            = 5
  78. CONST IDYES               = 6
  79. CONST IDNO                = 7
  80.  
  81. ''Dialog ID's
  82. CONST WELCOME                 = 100
  83. CONST ASKQUIT                 = 200
  84. CONST DESTPATH                = 300
  85. CONST EXITFAILURE             = 400
  86. CONST EXITQUIT                = 600
  87. CONST EXITSUCCESS             = 700
  88. CONST APPHELP                 = 900
  89. CONST INI_NOT_OVERWRITTEN     = 1000
  90. CONST PATCHES_NOT_OVERWRITTEN = 1100
  91. CONST EXITSUCCESS_DEMO        = 1200
  92. CONST BADPATH                 = 6400
  93.  
  94. ''Bitmap ID
  95. CONST LOGO = 1
  96.  
  97. GLOBAL COMPANY$
  98. GLOBAL PROGNAME$
  99. GLOBAL PRODUCTNAME$
  100. GLOBAL DEST$        ''Default destination directory.
  101.  
  102. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  103. DECLARE SUB MaybeAssociate (szExt$)
  104.  
  105.  
  106. INIT:
  107.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  108.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  109.     COMPANY$ = "Twelve Tone Systems"
  110.     PROGMANGROUPNAME$ = "Cakewalk Professional"
  111.     INIBASENAME$ = "WINCAKE"
  112.     INFBASENAME$ = "SETUP"
  113.     IF DoesFileExist(GetSymbolValue("STF_SRCDIR") + "WINCAKE.EX_", femExists) <> 0 THEN
  114.         PROGNAME$ = "WINCAKE"
  115.     ELSEIF DoesFileExist(GetSymbolValue("STF_SRCDIR") + "WCWDEMO.EX_", femExists) <> 0 THEN
  116.         PROGNAME$ = "WCWDEMO"
  117.     ELSE
  118.         GOTO ERRQUIT
  119.     END IF
  120.     IF PROGNAME$ = "WINCAKE" THEN
  121.         PRODUCTNAME$ = "Cakewalk Professional"
  122.     ELSEIF PROGNAME$ = "WCWDEMO" THEN
  123.         PRODUCTNAME$ = "Cakewalk Professional Demo"
  124.     END IF
  125.     DEST$ = "C:\WINCAKE"
  126.     winVerReqd$ = "3.1"
  127.  
  128.     SetBitmap CUIDLL$, LOGO
  129.     SetTitle PRODUCTNAME$ + " Setup"
  130.  
  131.     winVer$ = LTRIM$(STR$(GetWindowsMajorVersion())) + "." + LTRIM$(STR$(GetWindowsMinorVersion()))
  132.     IF winVer$ < winVerReqd$ THEN             ''String sort works
  133.         i% = DoMsgBox("Sorry, but your Windows version is "+winVer$+" and "+PRODUCTNAME$+" requires at least Windows "+winVerReqd$+".", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  134.         END
  135.     END IF
  136.  
  137.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  138.     IF szInf$ = "" THEN
  139.         szInf$ = GetSymbolValue("STF_CWDDIR") + INFBASENAME$+".INF"
  140.     END IF
  141.     ReadInfFile szInf$
  142.  
  143.     ''Disk cost list symbols
  144.     FILECOSTS$   = "FileCosts"
  145.     EXTRACOSTS$  = "ExtraCosts"
  146.     STILLNEEDED$ = "StillNeeded"
  147.     FOR i% = 1 TO 26 STEP 1
  148.         AddListItem EXTRACOSTS$, "0"
  149.     NEXT i%
  150.     ''Add extra cost to Windows drive for ini/progman, etc.
  151.     ixWinDrive% = ASC(UCASE$( MID$(GetWindowsDir(), 1, 1) )) - ASC("A") + 1
  152.     ReplaceListItem EXTRACOSTS$, ixWinDrive%, "10240"
  153.  
  154.  
  155. WELCOME:
  156.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  157.     IF sz$ = "CONTINUE" THEN
  158.         UIPop 1
  159.     ELSE
  160.         GOSUB ASKQUIT
  161.         GOTO WELCOME
  162.     END IF
  163.  
  164.  
  165. GETPATH:
  166.     SetSymbolValue "EditTextIn", DEST$
  167.     SetSymbolValue "EditFocus", "END"
  168. GETPATHL1:
  169.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  170.     DEST$ = GetSymbolValue("EditTextOut")
  171.  
  172.     IF sz$ = "CONTINUE" THEN
  173.         IF IsDirWritable(DEST$) = 0 THEN
  174.             GOSUB BADPATH
  175.             GOTO GETPATHL1
  176.         END IF
  177.         UIPop 1
  178.         ixAppDrive% = ASC(UCASE$( MID$(DEST$, 1, 1) )) - ASC("A") + 1
  179.     ELSEIF sz$ = "REACTIVATE" THEN
  180.         GOTO GETPATHL1
  181.     ELSEIF sz$ = "BACK" THEN
  182.         UIPop 1
  183.         GOTO WELCOME
  184.     ELSE
  185.         GOSUB ASKQUIT
  186.         GOTO GETPATH
  187.     END IF
  188.  
  189.  
  190.     GOSUB INSTALL
  191.     IF StillNeed& > 0 THEN
  192.         GOTO GETPATH
  193.     END IF
  194.  
  195.  
  196. QUIT:
  197.     ON ERROR GOTO ERRQUIT
  198.  
  199.     IF ERR = 0 THEN
  200.         IF PROGNAME$ = "WINCAKE" THEN
  201.             dlg% = EXITSUCCESS
  202.         ELSEIF PROGNAME$ = "WCWDEMO" THEN
  203.             dlg% = EXITSUCCESS_DEMO
  204.         END IF
  205.     ELSEIF ERR = STFQUIT THEN
  206.         dlg% = EXITQUIT
  207.     ELSE
  208.         dlg% = EXITFAILURE
  209.     END IF
  210. QUITL1:
  211.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  212.     IF sz$ = "REACTIVATE" THEN
  213.         GOTO QUITL1
  214.     END IF
  215.     UIPop 1
  216.  
  217.     END
  218.  
  219. ERRQUIT:
  220.     i% = DoMsgBox("Installation failure.  Call " + COMPANY$ + " Technical Support", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  221.     END
  222.  
  223.  
  224.  
  225. BADPATH:
  226.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  227.     IF sz$ = "REACTIVATE" THEN
  228.         GOTO BADPATH
  229.     END IF
  230.     UIPop 1
  231.     RETURN
  232.  
  233.  
  234.  
  235. ASKQUIT:
  236.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  237.  
  238.     IF sz$ = "EXIT" THEN
  239.         UIPopAll
  240.         ERROR STFQUIT
  241.     ELSEIF sz$ = "REACTIVATE" THEN
  242.         GOTO ASKQUIT
  243.     ELSE
  244.         UIPop 1
  245.     END IF
  246.     RETURN
  247.  
  248.  
  249.  
  250. '**
  251. '** Purpose:
  252. '**     Builds the copy list and performs all installation operations.
  253. '** Arguments:
  254. '**     none.
  255. '** Returns:
  256. '**     none.
  257. '*************************************************************************
  258. INSTALL:
  259.  
  260.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  261.  
  262.     AddSectionFilesToCopyList "app", SrcDir$, DEST$
  263.     IF PROGNAME$ = "WINCAKE" THEN
  264.         AddSectionFilesToCopyList "pro", SrcDir$, DEST$
  265.     ELSEIF PROGNAME$ = "WCWDEMO" THEN
  266.         AddSectionFilesToCopyList "demo", SrcDir$, DEST$
  267.     END IF
  268.     AddSectionFilesToCopyList "system", SrcDir$, GetWindowsSysDir()
  269.  
  270.     StillNeed& = GetCopyListCost(EXTRACOSTS$, FILECOSTS$, STILLNEEDED$)
  271.     IF StillNeed& > 0 THEN
  272.         ClearCopyList
  273.         FOR ix% = 1 TO 26 STEP 1              ''find first drive that needs space
  274.             need1& = VAL(GetListItem(STILLNEEDED$, ix%))
  275.             IF need1& > 0 THEN
  276.                 GOTO FNDDRV
  277.             END IF
  278.         NEXT ix%
  279.         ix = ixAppDrive                       ''(shouldn't happen)
  280.