home *** CD-ROM | disk | FTP | other *** search
/ Sound, Music & MIDI Collection 2 / SMMVOL2.bin / DEMO / PRG / MUSICATR.ZIP / DISK1 / SETUP.MS_ / SETUP.MS
Encoding:
Text File  |  1994-06-24  |  29.3 KB  |  907 lines

  1. ' ------------- Copyright (c) Jo Brodtkorb, Musicator 1992-93 ---------------
  2. ' ***************************************************************************
  3. '
  4. ' FILE NAME        : c:\mw2-inst\setup.mst
  5. ' CREATED          : 92.12.15
  6. ' LAST UPDATED     : 93.01.04
  7. ' PURPOSE          : Setupprogram for Musicator Win 2.0
  8. '
  9. ' INIT  DATE         LOG (Newest first)
  10. ' ---------------------------------------------------------------------------
  11. ' Jo was not able to get demo to run so original was changed, THIS IS DEMO!! 
  12. ' Sven  93.01.04     Support for a demo verion of Musicator Win
  13. ' Sven  92.12.15     Initial version created
  14. ' **************************************************************************
  15.  
  16. ' --------------------------------------------------------------------------
  17. '
  18. ' Denne seksjonen skal redigeres for de forskjellige typer installasjon
  19. '
  20. ' Neste linje kommenteres ut med '' hvis installasjonen ikke er en demoversjon
  21. ' Når linjen ikke er kommentert ut ser den slik ut: '$DEFINE DEMO
  22. ' Av '$DEFINE DEMO
  23. ' --------------------------------------------------------------------------
  24.  
  25. '' '$DEFINE DEBUG  ''Define for script development/debugging
  26.  
  27. '-- Includes ---------------------------------------------------------------
  28.  
  29. '$INCLUDE 'setupapi.inc'
  30. '$INCLUDE 'msdetect.inc'
  31.  
  32.  
  33. '-- Constants --------------------------------------------------------------
  34.  
  35. CONST szBadDisks$ = "Setup disks may be corrupted.  Please contact your Dealer."
  36. CONST szKB$       = " K"
  37. CONST szMB$       = " MB"
  38. '$IFDEF DEMO
  39.     CONST szTitle$      = "Musicator Win Demo Setup"
  40.     CONST szGroupName$  = "Musicator Win Demo"
  41.     CONST szProgramName$= "Musicator Win Demo"
  42.     CONST szDefDir$   = "C:\MW2-DEMO"
  43. '$ELSE
  44.     CONST szTitle$      = "Musicator Win Demo Setup"
  45.     CONST szGroupName$  = "Musicator Win Demo"
  46.     CONST szProgramName$= "Musicator Win Demo"
  47.     CONST szDefDir$   = "C:\MW2DEMO"
  48. '$ENDIF
  49. CONST szInfName$  = "SETUP.INF"
  50. CONST fTRUE%      = 1
  51. CONST fFALSE%     = 0
  52. CONST szON$       = "ON"
  53. CONST szOFF$      = "OFF"
  54. CONST MinTempSpace%     = 3072
  55. CONST EWRestartWin&     = 42
  56. CONST EWRebootSystem&   = 43
  57. CONST MaxNoOfDisks%     = 26
  58.  
  59. ''Dialog ID's (must match those in DIALOGS.H)
  60. CONST WELCOME       = 1100
  61. CONST WELCOMEDEMO   = 1101  ' Demo version of Musicator Win
  62. CONST CUSTINST      = 1200
  63. CONST CUSTINSTDEMO  = 1201
  64. CONST ASKQUIT       = 1300
  65. CONST ASKQUITDEMO   = 1301
  66. CONST ASKATM        = 1400
  67. CONST ASKATMDEMO    = 1401
  68. CONST GETPATH       = 1500
  69. CONST GETPATHDEMO   = 1501
  70. CONST BADDIR        = 1600
  71. CONST BADDIRDEMO    = 1601
  72. CONST CREATEPATH    = 1700
  73. CONST CREATEPATHDEMO= 1701
  74. CONST WAITSIZE      = 1800
  75. CONST WAITSIZEDEMO  = 1801
  76. CONST EXITSUCCESS   = 1900
  77. CONST EXITSUCCESSDEMO = 1901
  78. CONST EXITQUIT      = 2000
  79. CONST EXITQUITDEMO  = 2001
  80. CONST HELPINSTALL   = 2100
  81. CONST HELPINSTALLDEMO = 2101
  82. CONST HELPPATH      = 2200
  83. CONST HELPPATHDEMO  = 2201
  84. CONST TOOBIG        = 2300
  85. CONST TOOBIGDEMO    = 2301
  86. CONST EXITFAILURE   = 2400
  87. CONST EXITFAILUREDEMO = 2401
  88. CONST RESTARTWIN    = 2500
  89. CONST RESTARTWINDEMO= 2501
  90. ' CONST BWCCEXISTS  = 2600
  91. ' CONST BWCCNEW     = 2700
  92. ' CONST BWCCOLD     = 2800
  93. ' CONST BWCCHELP    = 2900
  94. CONST CDCONFIRMINFO = 3000
  95. CONST CDGETNAMEORG  = 3100
  96. CONST CDALREADYUSED = 3200
  97. CONST CDBADFILE     = 3300
  98. CONST CDBADNAMEORG  = 3400
  99.  
  100. ''Bitmap ID (must match those in DIALOGS.RC)
  101. '$IFDEF DEMO
  102.    CONST LOGO = 2
  103. '$ELSE
  104.    CONST LOGO = 1
  105. '$ENDIF
  106.  
  107. '-- Globals ----------------------------------------------------------------
  108. GLOBAL  szDir$              ''Destination directory
  109. GLOBAL  szDrive$            ''Destination drive
  110. GLOBAL  szWinDrive$         ''Windows drive
  111. GLOBAL  cbDrive&            ''Space available on destination drive
  112. GLOBAL  cbWinDrive&         ''Space available on Windows drive
  113. GLOBAL  szSrcDir$           ''Source directory
  114. GLOBAL  szWinDir$           ''Windows directory
  115. GLOBAL  fATMFiles%          ''Install ATM or TrueType
  116. GLOBAL  cbMGWFiles&         ''KBytes required for basic GWS
  117. GLOBAL  cbWinFiles&         ''KBytes required for files in Windows directory
  118. GLOBAL  CUIDLL$             ''Dialog/Images DLL
  119. GLOBAL  HELPPROC$           ''Help dialog procedure
  120. GLOBAL  DriveList$          ''List of available drives
  121. GLOBAL  szCDOrganization$   ''Organisation that owns the produkt
  122. GLOBAL  szCDName$           ''Person that owns the produkt
  123.  
  124.  
  125. '-- Declaratin of DLL functions---------------------------------------------
  126. DECLARE FUNCTION SetupCryptName LIB "mscuistf.dll" (szInString$, szOutString$) AS INTEGER
  127. ' DECLARE FUNCTION ExitWindows LIB "user.exe" (dwReturnCode&, iReserved%) AS INTEGER
  128. DECLARE FUNCTION ExitWindowsExec LIB "user.exe" (lpszExe$, lpszParams$) AS INTEGER
  129.  
  130. '-- Prototypes -------------------------------------------------------------
  131. DECLARE SUB BadPath
  132. DECLARE SUB CalcPathSpace
  133. DECLARE SUB CheckTempSpace
  134. DECLARE SUB CheckATM
  135. DECLARE FUNCTION CreateInstallPath(szDir$) AS STRING
  136. DECLARE FUNCTION AskForBWCC AS INTEGER
  137. DECLARE SUB DetermineSizes
  138. DECLARE SUB GetDriveList
  139. DECLARE SUB GetInstallPath
  140. DECLARE SUB Install
  141. DECLARE SUB InsufficientSpace
  142. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  143.  
  144.  
  145. '---------------------------------------------------------------------------
  146. ' INIT:  Load globals and read .INF file
  147. '---------------------------------------------------------------------------
  148. INIT:
  149.    SetTitle szTitle$
  150.    CursorSave% = ShowWaitCursor()
  151.    CUIDLL$   = "mscuistf.dll"          ''Custom user interface dll
  152.    HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  153.  
  154.    SetBitmap CUIDLL$, LOGO
  155.  
  156.    szInf$ = GetSymbolValue("STF_SRCINFPATH")
  157.    IF szInf$ = "" THEN
  158.       szInf$ = GetSymbolValue("STF_CWDDIR") + szInfName$
  159.    END IF
  160.    ReadInfFile szInf$
  161.  
  162.    szWinDir$ = GetWindowsDir()
  163.    szWinDrive$ = MID$(szWinDir$, 1, 1)
  164. '$IFDEF DEBUG
  165.    i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  166.    '' IsDirWriteable does not work propably
  167.    IF IsDriveValid(szWinDrive$) = fFALSE% THEN
  168.       i% = DoMsgBox("Windows drive ('"+szWinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  169.       GOTO QUIT
  170.    END IF
  171. '$ENDIF ''DEBUG
  172.    RestoreCursor CursorSave%
  173.  
  174.  
  175. '---------------------------------------------------------------------------
  176. ' WELCOME:  Display Welcome dialog
  177. '---------------------------------------------------------------------------
  178. WELCOME:
  179. '$IFDEF DEMO
  180. '     sz$ = UIStartDlg(CUIDLL$, WELCOMEDEMO, "FInfoDlgProc", HELPINSTALLDEMO, HELPPROC$)
  181.    sz$ = UIStartDlg(CUIDLL$, WELCOMEDEMO, "FInfoDlgProc", 0, "")
  182. '$ELSE
  183.    sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", 0, "")
  184. '$ENDIF
  185.    IF sz$ = "CONTINUE" THEN
  186.       UIPop 1
  187.    ELSE
  188.       GOSUB ASKQUIT
  189.       GOTO WELCOME
  190.    END IF
  191.  
  192. CHECKPROSESSOR:
  193.    IF GetProcessorType() < 3 THEN ' Less than 80386
  194.       i% = DoMsgBox("'" + Ltrim$(Str$(GetProcessorType())) + "' is not a legal machine", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  195.       GOSUB ASKQUIT
  196.       GOTO CHECKDOS
  197.    ENDIF
  198.  
  199. CHECKDOS:
  200. '     IF GetDOSMajorVersion() = 3 THEN
  201. '         IF GetDOSMinorVersion() = 3 THEN
  202. '             GOTO CHECKWINDOWS
  203. '         ENDIF
  204. '     ELSEIF GetDOSMajorVersion() = 4 THEN
  205. '         IF GetDOSMinorVersion() = 1 THEN
  206. '             GOTO CHECKWINDOWS
  207. '         ENDIF
  208. '     ELSEIF GetDOSMajorVersion() > 4 THEN
  209. '         GOTO CHECKWINDOWS
  210. '     ENDIF
  211. '     i% = DoMsgBox(Ltrim$(Str$(GetDOSMajorVersion()))+"."+Ltrim$(Str$(GetDOSMinorVersion()))+ " is not a legal DOS version", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  212. '     GOSUB ASKQUIT
  213. '     GOTO CHECKDOS
  214.  
  215. CHECKWINDOWS:
  216.    IF GetWindowsMajorVersion() < 3 THEN
  217.       i% = DoMsgBox(Ltrim$(Str$(GetWindowsMajorVersion()))+"."+Ltrim$(Str$(GetWindowsMinorVersion()))+ " is not a legal Windows version", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  218.       GOSUB ASKQUIT
  219.       GOTO CHECKWINDOWS
  220.    ELSEIF GetWindowsMajorVersion() = 3 THEN
  221.       IF GetWindowsMinorVersion() = 0 THEN
  222.          i% = DoMsgBox(Ltrim$(Str$(GetWindowsMajorVersion()))+"."+Ltrim$(Str$(GetWindowsMinorVersion()))+ " is not a legal Windows version", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  223.       ENDIF
  224.    ELSEIF GetWindowsMajorVersion() > 3 THEN
  225. '             i% = DoMsgBox(Ltrim$(Str$(GetWindowsMajorVersion()))+"."+Ltrim$(Str$(GetWindowsMinorVersion()))+ " is not a legal Windows version", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  226.    ENDIF
  227.  
  228.  
  229. '---------------------------------------------------------------------------
  230. ' CUSTINST:  Get users installation selections
  231. '---------------------------------------------------------------------------
  232. CUSTINST:
  233.    CursorSave% = ShowWaitCursor()
  234. '$IFDEF DEMO
  235.    sz$ = UIStartDlg(CUIDLL$, WAITSIZEDEMO, "FModelessDlgProc", 0, "")
  236. '$ELSE
  237.    sz$ = UIStartDlg(CUIDLL$, WAITSIZE, "FModelessDlgProc", 0, "")
  238. '$ENDIF
  239.    szDir$ = szDefDir$
  240.    DRIVETEXT$   = "DriveStatusText"
  241.    FOR i% = 1 to 7 STEP 1
  242.       AddListItem DRIVETEXT$, ""
  243.    NEXT i%
  244.    GetDriveList
  245.    iMaxDiskNo% = GetListLength (DriveList$)
  246.  
  247.    iFound% = fFALSE%
  248.    FOR iDiskNo% = 1 TO iMaxDiskNo% STEP 1
  249.       szDrive$ = MID$(GetListItem (DriveList$, iDiskNo%), 1, 1)
  250.       szDir$ = szDrive$ + MID$(szDir$, 2)
  251.       DetermineSizes
  252.       CalcPathSpace
  253.       IF szWinDrive$ = szDrive$ THEN
  254.          cbTotal& = cbMGWFiles& + cbWinFiles&
  255.       ELSE
  256.          cbTotal& = cbMGWFiles&
  257.       ENDIF
  258.       IF cbTotal& < cbDrive&  THEN
  259.          iFound% = fTRUE%
  260.          EXIT FOR
  261.       ENDIF
  262.    NEXT iDiskNo%
  263.    IF iFound% = fFALSE% THEN
  264.       szDir$ = szDefDir$
  265.       DetermineSizes
  266.       CalcPathSpace
  267.    ENDIF
  268.    UIPop 1     ''WaitSize
  269.    RestoreCursor CursorSave%
  270. ASKI1:
  271.    IF szWinDrive$ = szDrive$ THEN
  272.         cbTotal&    = cbMGWFiles& + cbWinFiles&
  273.         cbWinTotal& = fFALSE%
  274.     ELSE
  275.         cbTotal&    = cbMGWFiles&
  276.         cbWinTotal& = cbWinFiles&
  277.     ENDIF
  278.  
  279.     ReplaceListItem DRIVETEXT$, 1, szDrive$ + ":"
  280.     ReplaceListItem DRIVETEXT$, 2, Ltrim$(Str$(cbTotal&))+szKB
  281.     ReplaceListItem DRIVETEXT$, 3, Ltrim$(Str$(cbDrive&))+szKB
  282.     ReplaceListItem DRIVETEXT$, 7, szDir$
  283.  
  284.     IF szWinDrive$ = szDrive$ THEN
  285.         ReplaceListItem DRIVETEXT$, 4, ""
  286.         ReplaceListItem DRIVETEXT$, 5, ""
  287.         ReplaceListItem DRIVETEXT$, 6, ""
  288.     ELSE
  289.         ReplaceListItem DRIVETEXT$, 4, szWinDrive$ + ":"
  290.         ReplaceListItem DRIVETEXT$, 5, Ltrim$(Str$(cbWinTotal&))+szKB
  291.         ReplaceListItem DRIVETEXT$, 6, Ltrim$(Str$(cbWinDrive&))+szKB
  292.     ENDIF
  293.  
  294. '$IFDEF DEMO
  295.     sz$ = UIStartDlg(CUIDLL$, CUSTINSTDEMO, "FCustInstDlgProc", HELPINSTALLDEMO, HELPPROC$)
  296. '$ELSE
  297.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", HELPINSTALL, HELPPROC$)
  298. '$ENDIF
  299.  
  300.     IF sz$ = "CONTINUE" THEN
  301.         IF cbTotal& > cbDrive& THEN
  302.             InsufficientSpace
  303.             GOTO ASKI1
  304.         END IF
  305.         CheckTempSpace
  306.         CheckATM
  307.         UIPop 1
  308.     ELSEIF sz$ = "PATH" THEN
  309.         GetInstallPath
  310.         GOTO ASKI1
  311.     ELSEIF sz$ = "REACTIVATE" THEN
  312.         GOTO ASKI1
  313.     ELSEIF sz$ = "EXIT" THEN
  314.         GOSUB ASKQUIT
  315.         GOTO ASKI1
  316.     ELSE
  317.         GOTO ASKI1
  318.     END IF
  319.     UIPop 1
  320.  
  321.     Install
  322.  
  323.  
  324.  
  325. '---------------------------------------------------------------------------
  326. ' QUIT:  Exit setup
  327. '---------------------------------------------------------------------------
  328. QUIT:
  329.    ON ERROR GOTO ERRQUIT
  330.  
  331.    IF ERR = 0 THEN
  332. '$IFDEF DEMO
  333.       dlg% = EXITSUCCESSDEMO
  334. '$ELSE
  335.       dlg% = EXITSUCCESS
  336. '$ENDIF
  337.    ELSEIF ERR = STFQUIT THEN
  338. '$IFDEF DEMO
  339.       dlg% = EXITQUITDEMO
  340. '$ELSE
  341.       dlg% = EXITQUIT
  342. '$ENDIF
  343.    ELSE
  344. '$IFDEF DEMO
  345.       dlg% = EXITFAILUREDEMO
  346. '$ELSE
  347.       dlg% = EXITFAILURE
  348. '$ENDIF
  349.    END IF
  350.  
  351. QUITL1:
  352.    sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  353.    IF sz$ = "REACTIVATE" THEN
  354.       GOTO QUITL1
  355.    END IF
  356.    UIPop 1
  357.  
  358. AGAIN:
  359.    IF ERR = 0 THEN
  360.  
  361. ''      IF RestartListEmpty() = fFALSE% THEN
  362. '$IFDEF DEMO
  363.       sz$ = UIStartDlg(CUIDLL$, RESTARTWINDEMO, "FInfoDlgProc", 0, "")
  364. '$ELSE
  365.       sz$ = UIStartDlg(CUIDLL$, RESTARTWIN, "FInfoDlgProc", 0, "")
  366. '$ENDIF
  367.       IF sz$ = "CONTINUE" THEN
  368.          UIPop 1
  369.       ELSEIF sz$ = "BACK" THEN
  370.          UIPop 1
  371.          END
  372.       ELSE
  373.          UIPop 1
  374.          GOTO AGAIN
  375.       END IF
  376.       i% = ExitExecRestart
  377. '     IF i% = 0 THEN
  378.       i% = ExitWindowsExec ("WIN.COM", ":")
  379.       i% = DoMsgBox("Please close down and restart Windows.", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  380.       'END IF
  381. '     ELSE
  382. '        i% = ExitExecRestart
  383. '        i% = ExitWindowsExec("WIN.COM", ":")
  384. '        i% = DoMsgBox("Please close down and restart Windows.", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  385. '     ENDIF
  386.    ENDIF
  387.  
  388.    END
  389.  
  390. ERRQUIT:
  391.    i% = DoMsgBox(szBadDisks$, szTitle$, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  392.    END
  393.  
  394.  
  395. '---------------------------------------------------------------------------
  396. ' ASKQUIT:  Ensure the user really wants to quit
  397. '---------------------------------------------------------------------------
  398. ASKQUIT:
  399. '$IFDEF DEMO
  400.     sz$ = UIStartDlg(CUIDLL$, ASKQUITDEMO, "FQuitDlgProc", 0, "")
  401. '$ELSE
  402.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  403. '$ENDIF
  404.  
  405.     IF sz$ = "EXIT" THEN
  406.         UIPopAll
  407.         ERROR STFQUIT
  408.     ELSEIF sz$ = "REACTIVATE" THEN
  409.         GOTO ASKQUIT
  410.     ELSE
  411.         UIPop 1
  412.     END IF
  413.     RETURN
  414.  
  415.  
  416. '*************************************************************************
  417. '                    S  U  B  R  O  U  T  I  N  E  S
  418. '*************************************************************************
  419.  
  420. '****************************************************************************
  421. ' FUNCTION         : BadPath
  422. '
  423. ' DESCRIPTION      : Display BADDIR dialog
  424. '
  425. ' NOTES            : Arguments none.
  426. '                    Returns none.
  427. '
  428. ' INIT  DATE         LOG (Newest first)
  429. ' ---------------------------------------------------------------------------
  430. ' SVBR  92.12.15     Initial version created
  431. '****************************************************************************/
  432. SUB BadPath STATIC
  433.  
  434. BADDIR1:
  435. '$IFDEF DEMO
  436.     sz$ = UIStartDlg(CUIDLL$, BADDIRDEMO, "FInfo0DlgProc", 0, "")
  437. '$ELSE
  438.     sz$ = UIStartDlg(CUIDLL$, BADDIR, "FInfo0DlgProc", 0, "")
  439. '$ENDIF
  440.     IF sz$ = "REACTIVATE" THEN
  441.         GOTO BADDIR1
  442.     END IF
  443.     UIPop 1
  444. END SUB ''End of BadPath
  445.  
  446. '*************************************************************************
  447. '** Routine: CalcPathSpace
  448. '** Purpose:
  449. '**     Determine free space on path drive.
  450. '** Arguments:
  451. '**     szDir
  452. '** Returns:
  453. '**     cbDrive
  454. '**     szDrive
  455. '*************************************************************************
  456. SUB CalcPathSpace STATIC
  457.     szDrive$ = Mid$(szDir$, 1, 1)
  458.     cbDrive& = GetFreeSpaceForDrive(Mid$(szDrive$,1, 1))
  459.     cbDrive& = (cbDrive& + 1023) / 1024
  460.     cbWinDrive& = GetFreeSpaceForDrive(Mid$(szWinDrive$,1, 1))
  461.     cbWinDrive& = (cbWinDrive& + 1023) / 1024
  462. END SUB
  463.  
  464. '*************************************************************************
  465. '** Routine: CheckTempSpace
  466. '** Purpose:
  467. '**     Check free space on temp-directory.
  468. '** Arguments:
  469. '**     none
  470. '** Returns:
  471. '**     none
  472. '*************************************************************************
  473. SUB CheckTempSpace STATIC
  474.     szTempDir$ = GetEnvVariableValue ("TEMP")
  475.     IF szTempDir$ = "" THEN
  476.         szTempDir$ = GetWindowsDir()
  477.     ENDIF
  478.     cbFree& = GetFreeSpaceForDrive(Mid$(szTempDir$,1, 1))
  479.     cbFree& = (cbFree& + 1023) / 1024
  480.     IF cbFree& < MinTempSpace% THEN
  481.         i% = DoMsgBox("It is recomended to use a TEMP-directory whith at least 3 MB free space. You have only " + Ltrim$(Str$(cbFree&)) + szKB$ + "!", szTitle$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  482.     ENDIF
  483. END SUB
  484.  
  485. '*************************************************************************
  486. '** Routine: CheckATM
  487. '** Purpose:
  488. '**     Determinate if the user has selected ATM
  489. '** Arguments:
  490. '**     none
  491. '** Returns:
  492. '**     none
  493. '*************************************************************************
  494. SUB CheckATM STATIC
  495.     ini$ = MakePath(GetWindowsDir, "ATM.INI")
  496.  
  497. AGAIN:
  498.     IF DoesFileExist (ini$, femExists) = fTRUE%  THEN
  499. '$IFDEF DEMO
  500.         sz$ = UIStartDlg(CUIDLL$, ASKATMDEMO, "FInfoDlgProc", 0, "")
  501. '$ELSE
  502.         sz$ = UIStartDlg(CUIDLL$, ASKATM, "FInfoDlgProc", 0, "")
  503. '$ENDIF
  504.         IF sz$ = "CONTINUE" THEN
  505.             UIPop 1
  506.             fATMFiles% = fTRUE%
  507.             IF GetIniKeyString (ini$, "Settings", "ATM") = "Off" THEN
  508.                 CreateIniKeyValue ini$, "Settings", "ATM", "On", cmoOverwrite
  509.             ENDIF
  510.         ELSEIF sz$ = "BACK" THEN
  511.             UIPop 1
  512.             fATMFiles% = fFALSE%
  513.         ELSE
  514.             UIPop 1
  515.             GOTO AGAIN
  516.         END IF
  517.  
  518.     ELSE
  519.         fATMFiles% = fFALSE%
  520.     ENDIF
  521. END SUB
  522.  
  523. '*************************************************************************
  524. '** Routine: AskForBWCC
  525. '** Purpose:
  526. '**
  527. '** Arguments:
  528. '**     none
  529. '** Returns:
  530. '**     none
  531. '*************************************************************************
  532. FUNCTION AskForBWCC STATIC AS INTEGER
  533.  
  534.     i% = DoMsgBox("Ikke implementert BWCC.DLL-sjekk", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  535. BWCCAGAIN:
  536.     sz$ = UIStartDlg(CUIDLL$, BWCCEXISTS, "FInfoDlgProc", BWCCHELP, HELPPROC$)
  537.  
  538.     ''Må fjerne BACK
  539.     IF sz$ = "BACK" THEN
  540.         UIPop 1
  541.         AskForBWCC = -1
  542.     ELSEIF sz$ = "CONTINUE" THEN
  543.         UIPop 1
  544.         AskForBWCC = fTRUE%
  545.     ELSEIF sz$ = "EXIT" THEN
  546.         UIPop 1
  547.         AskForBWCC = fFALSE%
  548.     ELSEIF sz$ = "CANCEL" THEN
  549.         UIPop 1
  550.         AskForBWCC = fFALSE%
  551.     ELSEIF sz$ = "REACTIVATE" THEN
  552.         GOTO BWCCAGAIN
  553.     ELSE
  554.         UIPop 1
  555.     END IF
  556.  
  557. END FUNCTION
  558.  
  559. '*************************************************************************
  560. '** Routine: CreateInstallPath
  561. '** Purpose:
  562. '**     Create destination directories
  563. '** Arguments:
  564. '**     none.
  565. '** Returns:
  566. '**     none.
  567. '*************************************************************************
  568. FUNCTION CreateInstallPath (szDir$) STATIC AS STRING
  569.     sz$ = "CONTINUE"
  570.     IF DoesDirExist(szDir$) <> 1 THEN
  571. CREATEPATH1:
  572. '$IFDEF DEMO
  573.     sz$ = UIStartDlg(CUIDLL$, CREATEPATHDEMO, "FInfo0DlgProc", 0, "")
  574. '$ELSE
  575.     sz$ = UIStartDlg(CUIDLL$, CREATEPATH, "FInfo0DlgProc", 0, "")
  576. '$ENDIF
  577.     IF sz$ = "REACTIVATE" THEN
  578.         GOTO CREATEPATH1
  579.     ELSEIF sz$ = "CONTINUE" THEN
  580.         CreateDir szDir$, cmoVital
  581.     END IF
  582.     UIPop 1
  583.     END IF
  584.     CreateInstallPath = sz$
  585. END FUNCTION
  586.  
  587. '*************************************************************************
  588. '** Routine: DetermineSizes
  589. '** Purpose:
  590. '**     Determine space required for each option.
  591. '** Arguments:
  592. '**     none.
  593. '** Returns:
  594. '**     cbMGWFiles
  595. '**     cbWinFiles
  596. '*************************************************************************
  597. SUB DetermineSizes STATIC
  598.     szSrcDir$ = GetSymbolValue("STF_SRCDIR")
  599.  
  600.     ClearCopyList
  601.     AddSectionFilesToCopyList "BasisFiles", szSrcDir$, szDir$
  602.     AddSectionFilesToCopyList "MctFiles", szSrcDir$, szDir$
  603.     IF szDir$ = szWinDir$ THEN
  604.     'AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM")
  605.     IF fATMFiles% = fTRUE% THEN
  606.         ini$ = MakePath(GetWindowsDir, "ATM.INI")
  607.         szPSpfmFontsPath$ = GetIniKeyString (ini$, "Setup", "PFM_Dir")
  608.         szPSpfbFontsPath$ = GetIniKeyString (ini$, "Setup", "PFB_Dir")
  609.         '' NB! SVBR B¢r sjekke om disse ligger på samme sted som Windows
  610.         AddSectionFilesToCopyList "ATMpfbFiles", szSrcDir$, szPSpfbFontsPath$
  611.         AddSectionFilesToCopyList "ATMpfmFiles", szSrcDir$, szPSpfmFontsPath$
  612. '           RenameFile MakePath(sz
  613.     ELSE
  614.         AddSectionFilesToCopyList "TrueTypeFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM")
  615.     ENDIF
  616.     ENDIF
  617.  
  618.     ListSym$ = "MGWNeeds"
  619.     i% = GetCopyListCost ("", ListSym$, "")
  620.     cbMGWFiles& = 0
  621.     FOR i% = 1 TO MaxNoOfDisks% STEP 1
  622.     cbMGWFiles&  = cbMGWFiles& + VAL(GetListItem(ListSym$, i%))
  623.     NEXT i%
  624.     cbMGWFiles& = (cbMGWFiles& + 1023) / 1024
  625.  
  626.     IF szDir$ <> szWinDir$ THEN
  627.     ClearCopyList
  628.     'AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, szWinDir$
  629.     IF fATMFiles% = fTRUE% THEN
  630.         ini$ = MakePath(GetWindowsDir, "ATM.INI")
  631.         szPSpfmFontsPath$ = GetIniKeyString (ini$, "Setup", "PFM_Dir")
  632.         szPSpfbFontsPath$ = GetIniKeyString (ini$, "Setup", "PFB_Dir")
  633.         '' NB! SVBR B¢r sjekke om disse ligger på samme sted som Windows
  634.         AddSectionFilesToCopyList "ATMpfbFiles", szSrcDir$, szPSpfbFontsPath$
  635.         AddSectionFilesToCopyList "ATMpfmFiles", szSrcDir$, szPSpfmFontsPath$
  636.     ELSE
  637.         AddSectionFilesToCopyList "TrueTypeFiles", szSrcDir$, szWinDir$
  638.     ENDIF
  639.  
  640.     ListSym$ = "WindowsNeeds"
  641.     i% = GetCopyListCost ("", ListSym$, "")
  642.     cbWinFiles& = 0
  643.     FOR i% = 1 TO MaxNoOfDisks% STEP 1
  644.         cbWinFiles&  = cbWinFiles& + VAL(GetListItem(ListSym$, i%))
  645.     NEXT i%
  646.     cbWinFiles& = (cbWinFiles& + 1023) / 1024
  647.     ELSE
  648.     cbWinFiles& = 0
  649.     ENDIF
  650.  
  651.     ClearCopyList
  652.     ListSym$ = ""
  653. END SUB
  654.  
  655. '*************************************************************************
  656. '** Routine: GetDriveList
  657. '** Purpose:
  658. '**
  659. '** Arguments:
  660. '**     none.
  661. '** Returns:
  662. '**
  663. '*************************************************************************
  664. SUB GetDriveList STATIC
  665.     DriveList$ = "DriveList"
  666.     SetSymbolValue DriveList$, ""
  667.     TmpDriveList$ = "TmpDriveList"
  668.     GetValidDrivesList( TmpDriveList$ )
  669.     iMaxDiskNo% = GetListLength (TmpDriveList$)
  670.     RemovableDriveList$ = "RemovableDriveList"
  671.     GetRemovableDrivesList( RemovableDriveList$ )
  672.     iMaxRemovableDiskNo% = GetListLength (RemovableDriveList$)
  673.     FOR iDiskNo% = 1 TO iMaxDiskNo% STEP 1
  674.     fFound% = fFALSE%
  675.     FOR iRemovableDiskNo% = 1 TO iMaxRemovableDiskNo% STEP 1
  676.         IF GetListItem (TmpDriveList$, iDiskNo%) = GetListItem (RemovableDriveList$, iRemovableDiskNo%) THEN
  677.         fFound% = fTRUE%
  678.         EXIT FOR
  679.         ENDIF
  680.     NEXT iRemovableDiskNo%
  681.     IF fFound% <> 1 THEN
  682.         cbDrive& = GetFreeSpaceForDrive (GetListItem (TmpDriveList$, iDiskNo%) )
  683.         cbDrive& = (cbDrive& + 1023) / 1024
  684. '             AddListItem DriveList$, GetListItem (TmpDriveList$, iDiskNo%) + CHR$(9) + Ltrim$(Str$( cbDrive& )) + szKB
  685.         AddListItem DriveList$, GetListItem (TmpDriveList$, iDiskNo%) + "       " + Ltrim$(Str$( cbDrive& )) + szKB
  686.     ENDIF
  687.     NEXT iDiskNo%
  688. '$IFDEF DEBUG
  689.     i% = DoMsgBox("Liste over stasjoner = " + GetSymbolValue(DriveList$), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  690. '$ENDIF ''DEBUG
  691.     RemoveSymbol (TmpDriveList$)
  692.     RemoveSymbol (RemovableDriveList$)
  693. END SUB
  694.  
  695. '*************************************************************************
  696. '** Routine: GetInstallPath
  697. '** Purpose:
  698. '**     Query user for installation path.
  699. '** Arguments:
  700. '**     none.
  701. '** Returns:
  702. '**     szDir$
  703. '*************************************************************************
  704. SUB GetInstallPath STATIC
  705. GETPATH:
  706. '$IFDEF DEBUG
  707.     i% = DoMsgBox("Liste over stasjoner = " + GetSymbolValue(DriveList$), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  708. '$ENDIF ''DEBUG
  709.     SetSymbolValue "ListItemsIn", GetSymbolValue(DriveList$)
  710. '     LOCALHARDDRIVES$ = "LocalHardDrives"
  711. '     GetValidDrivesList( LOCALHARDDRIVES$ )
  712. '     SetSymbolValue "ListItemsIn", GetSymbolValue(LOCALHARDDRIVES$)
  713. '     NB! SVBR
  714. '     SetSymbolValue "ListItemsOut", szDir$
  715.     SetSymbolValue "EditTextIn", szDir$
  716.     SetSymbolValue "EditFocus", "END"
  717. GETPATHL1:
  718.     fError% = fFALSE%
  719. '$IFDEF DEMO
  720.     sz$ = UIStartDlg(CUIDLL$, GETPATHDEMO, "FListEditDlgProc", HELPPATHDEMO, HELPPROC$)
  721. '$ELSE
  722.     sz$ = UIStartDlg(CUIDLL$, GETPATH, "FListEditDlgProc", HELPPATH, HELPPROC$)
  723. '$ENDIF
  724.  
  725.     IF sz$ = "CONTINUE" THEN
  726.     szTDir$ = GetSymbolValue("EditTextOut")
  727.     szTDir$ = Ltrim$(szTDir$)
  728.     szTDir$ = Rtrim$(szTDir$)
  729.  
  730.     IF InStr(1, szTDir$, ":") = fFALSE% THEN
  731.         szTDir$ = Mid$(GetSymbolValue("STF_CWDDIR"), 1, 1) + ":" + szTDir$
  732.     END IF
  733.  
  734.     IF MID$(szTDir$, LEN(szTDir$), 1) = "\" THEN
  735.         fError% = fTRUE%
  736.     END IF
  737.  
  738.     '' NB! SVBR IsDirWriteable does not work propably
  739. '         IF fError% <> fTRUE% AND IsDirWritable(szTDir$) = fFALSE% THEN
  740.     IF fError% <> fTRUE% AND IsDriveValid( MID$(szTDir$, 1, 1) ) = fFALSE% THEN
  741.         fError% = fTRUE%
  742.     END IF
  743.     IF fError% <> fTRUE% AND IsDriveRemovable(szTDir$) <> 0 THEN
  744.         fError% = fTRUE%
  745.     END IF
  746.  
  747.     IF fError% <> fTRUE% AND Exists(szTDir$) THEN
  748.         fError% = fTRUE%
  749.     END IF
  750.  
  751.     IF fError% <> fTRUE% THEN
  752.         i% = 0
  753. GETPATHL2:
  754.         iLastDir% = i%
  755.         i% = INSTR(iLastDir%+1, szTDir$, "\")
  756.         IF i% <> 0 THEN
  757.         GOTO GETPATHL2
  758.         END IF
  759.         IF MID$(szTDir$, iLastDir%, 1) = "\" THEN
  760.         iLastDir% = iLastDir% + 1
  761.         END IF
  762.  
  763.         szLastDir$ = UCASE$(MID$(szTDir$, iLastDir%))
  764.  
  765.         IF szLastDir$ = "PRN" OR szLastDir$ = "AUX" OR szLastDir$ = "CON" THEN
  766.         fError% = fTRUE%
  767.         END IF
  768.  
  769.         IF LEN(szLastDir$) = 4 THEN
  770.         iNum = VAL(MID$(szLastDir$, 4, 1))
  771.         IF iNum >= 1 AND iNum <= 9 THEN
  772.             IF MID$(szLastDir$, 1, 3) = "COM" OR MID$(szLastDir$, 1, 3) = "LPT" THEN
  773.             fError% = fTRUE%
  774.             END IF
  775.         END IF
  776.         END IF
  777.     END IF
  778.  
  779.     IF fError% = fTRUE% THEN
  780.         BadPath
  781.         GOTO GETPATHL1
  782.     END IF
  783.  
  784.     sz$ = CreateInstallPath(szTDir$)
  785.     IF sz$ <> "CONTINUE" THEN
  786.         GOTO GETPATHL1
  787.     END IF
  788.  
  789. '$IFDEF DEMO
  790.     sz$ = UIStartDlg(CUIDLL$, WAITSIZEDEMO, "FModelessDlgProc", 0, "")
  791. '$ELSE
  792.     sz$ = UIStartDlg(CUIDLL$, WAITSIZE, "FModelessDlgProc", 0, "")
  793. '$ENDIF
  794.     szDir$ = szTDir$
  795.     DetermineSizes
  796.     CalcPathSpace
  797.     UIPop 1
  798.  
  799.     END IF
  800.     UIPop 1
  801. END SUB
  802.  
  803. '*************************************************************************
  804. '** Routine: Install
  805. '** Purpose:
  806. '**     Builds the copy list and performs all installation operations.
  807. '** Arguments:
  808. '**     none.
  809. '** Returns:
  810. '**     none.
  811. '*************************************************************************
  812. SUB Install STATIC
  813.     '' Do not check the size of files on diskett
  814. '    i% = SetSizeCheckMode (scmOnIgnore)
  815.  
  816.     CreateDir szDir$, cmoVital
  817.     AddSectionFilesToCopyList "BasisFiles", szSrcDir$, szDir$
  818.     AddSectionFilesToCopyList "MctFiles", szSrcDir$, szDir$
  819. '   IF DoesFileExist ( Makepath (szWinDir$, "SYSTEM\BWCC.DLL"), femExists) = fTRUE% THEN
  820. '         IF GetDateOfFile ( Makepath (szWinDir$, "SYSTEM\BWCC.DLL") ) = GetSectionKeyDate ("BWCCdllFiles", "Borland Custom Control") THEN
  821. '             AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM")
  822. '         ELSE
  823. '             InstBWCC% = AskForBWCC()
  824. '             IF InstBWCC%= 1 THEN
  825. '                 AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM")
  826. '             ELSEIF InstBWCC%= -1 THEN
  827. '                 ' Back
  828. '             ENDIF
  829. '         ENDIF
  830. '   ELSE
  831. '   AddSectionFilesToCopyList "BWCCdllFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM")
  832. '   ENDIF
  833.     IF fATMFiles% = fTRUE% THEN
  834.     ini$ = MakePath(GetWindowsDir, "ATM.INI")
  835.     szPSpfmFontsPath$ = GetIniKeyString (ini$, "Setup", "PFM_Dir")
  836.     AddSectionFilesToCopyList "ATMpfmFiles", szSrcDir$, szPSpfmFontsPath$
  837.     szPSpfbFontsPath$ = GetIniKeyString (ini$, "Setup", "PFB_Dir")
  838.     AddSectionFilesToCopyList "ATMpfbFiles", szSrcDir$, szPSpfbFontsPath$
  839.     ELSE
  840.     AddSectionFilesToCopyList "TrueTypeFiles", szSrcDir$, MakePath (szWinDir$, "SYSTEM")
  841.     ENDIF
  842.     SetRestartDir szWinDir$
  843.     CopyFilesInCopyList
  844.  
  845.     IF fATMFiles% = fTRUE% THEN
  846.     ini$ = MakePath(GetWindowsDir, "ATM.INI")
  847.     CreateIniKeyValue ini$, "Fonts", "Musicator", MakePath( szPSpfmFontsPath$, "mu______.pfm") + "," + MakePath( szPSpfbFontsPath$, "mu______.pfb"), cmoOverwrite
  848.     ELSE
  849.     ini$ = MakePath(GetWindowsDir, "WIN.INI")
  850.     CreateIniKeyValue ini$, "fonts", "Musicator (TrueType)", "MUSICA2.FOT", cmoOverwrite
  851.     ENDIF
  852.  
  853.     CreateProgmanGroup szGroupName$, "", cmoNone
  854.     CreateProgmanItem szGroupName$, "Readme", "Write.exe " + MakePath (szDir$, "README.WRI"), "", cmoOverwrite
  855.     CreateProgmanItem szGroupName$, szProgramName$, MakePath (szDir$, "winmusgs.exe"), "", cmoOverwrite
  856.  
  857. END SUB
  858.  
  859. '*************************************************************************
  860. '** Routine: InsufficientSpace
  861. '** Purpose:
  862. '**     Display TOOBIG dialog
  863. '** Arguments:
  864. '**     none.
  865. '** Returns:
  866. '**     none.
  867. '*************************************************************************
  868. SUB InsufficientSpace STATIC
  869. BADDIR1:
  870. '$IFDEF DEMO
  871.     sz$ = UIStartDlg(CUIDLL$, TOOBIGDEMO, "FInfo0DlgProc", 0, "")
  872. '$ELSE
  873.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  874. '$ENDIF
  875.     IF sz$ = "REACTIVATE" THEN
  876.     GOTO BADDIR1
  877.     END IF
  878.     UIPop 1
  879. END SUB
  880.  
  881.  
  882. '*************************************************************************
  883. '** Routine: MakePath
  884. '** Purpose:
  885. '**     Appends a file name to the end of a directory path,
  886. '**     inserting a backslash character as needed.
  887. '** Arguments:
  888. '**     szDir$  - full directory path (with optional ending "\")
  889. '**     szFile$ - filename to append to directory
  890. '** Returns:
  891. '**     Resulting fully qualified path name.
  892. '*************************************************************************
  893. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  894.     IF szDir$ = "" THEN
  895.     MakePath = szFile$
  896.     ELSEIF szFile$ = "" THEN
  897.     MakePath = szDir$
  898.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  899.     MakePath = szDir$ + szFile$
  900.     ELSE
  901.     MakePath = szDir$ + "\" + szFile$
  902.     END IF
  903. END FUNCTION
  904.  
  905. '' EOF
  906.  
  907.