home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Magazin 1996 June / CD_06_96.BIN / demos / medman / programs / setup.mst < prev    next >
Text File  |  1995-10-15  |  27KB  |  630 lines

  1. '**************************************************************************
  2. '*                       MediaMaster Setup Script
  3. '**************************************************************************
  4. '$DEFINE DEBUG  ''Define for script development/debugging
  5. '$INCLUDE 'setupapi.inc'
  6. '$INCLUDE 'msdetect.inc'
  7. '' Dialog ID's are stored in file created by COLLIDD utility
  8. '$INCLUDE 'dialogs.inc'
  9. '' Bitmap ID
  10. CONST LOGOTIT = 1
  11. CONST LOGOTYP = 1000
  12. '' -------------------------------------------------------------------------
  13. '' --------- Option checkbox names (see Custom Installation Dialog) --------
  14. '' --------- Corresponding section names and target directories
  15. '' ----------------     see AddOptFilesToCopyList function body
  16. '' -------------------------------------------------------------------------
  17. '' -------------------------------------------------------------------------
  18. '' -------------------------- Global Variables -----------------------------
  19. '' -------------------------------------------------------------------------
  20. GLOBAL DEST$        ''Default destination directory.
  21. GLOBAL CUIDLL$
  22. GLOBAL SHAREDIR$
  23. GLOBAL TOTALNEEDED& ''Extra space required
  24. GLOBAL OPTCUR$
  25. GLOBAL CBTPATH$
  26. GLOBAL CBTPATHOUTPUT$
  27. GLOBAL LANGUAGE$
  28. GLOBAL WinDir$
  29. GLOBAL WinSysDir$
  30. GLOBAL WinSys32Dir$
  31. GLOBAL MinorVer%
  32. GLOBAL OnNT$
  33. '' -------------------------------------------------------------------------
  34. '' -------------------------- Dialog Functions -----------------------------
  35. '' -------------------------------------------------------------------------
  36. DECLARE SUB CustInstInfo0Dlg(template%)
  37. '' -------------------------------------------------------------------------
  38. '' -------------------------- Utility Functions ----------------------------
  39. '' -------------------------------------------------------------------------
  40. DECLARE FUNCTION IDC(s$) AS INTEGER
  41. DECLARE FUNCTION DriveN (path$) AS INTEGER
  42. DECLARE SUB ClearCopyListExtra
  43. DECLARE SUB AddExtraCost (drive%,cost&)
  44. DECLARE SUB AddOptFilesToCopyList (ftype$)
  45. DECLARE SUB RecalcOptFiles (ftype%)
  46. DECLARE SUB RecalcPath
  47. DECLARE SUB SetDriveStatus
  48. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  49. DECLARE FUNCTION FCreateLogoWnd LIB "mscuistf.dll" (hParent%,nID%) AS INTEGER
  50. DECLARE FUNCTION FGetAvailableRAM LIB "mscuistf.dll" AS LONG
  51. DECLARE FUNCTION FGetSwapFileSize LIB "mscuistf.dll" AS LONG
  52. DECLARE FUNCTION FGetLicenseInfo LIB "mscuistf.dll" AS INTEGER
  53. DECLARE FUNCTION FGetLicenseInfoPreinst LIB "mscuistf.dll" AS INTEGER
  54. DECLARE FUNCTION DestroyWindow LIB "user" (hWnd%) AS INTEGER
  55. DECLARE SUB MessageBeep LIB "user" (idBeep%)
  56. DECLARE SUB ShowWindow LIB "user" (hWnd%,nShowCmd%)
  57. DECLARE FUNCTION ExitWindowsExec LIB "user" (Exe$, empty$) AS INTEGER
  58. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  59. DECLARE SUB Reboot LIB "iniupd.dll"
  60. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  61. '' -------------------------------------------------------------------------
  62. '' -------------------------------------------------------------------------
  63. '' ----------                                                   ------------
  64. '' ----------                 B E G I N N I N G                 ------------
  65. '' ----------                                                   ------------
  66. '' -------------------------------------------------------------------------
  67. '' -------------------------------------------------------------------------
  68.             '' ----------- Several common definitions
  69.     OPTCUR$ = "2"
  70.     LANGUAGE$ = "German"
  71.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  72.     INFFILE$ = "setup.inf"
  73.     WIN32ENABLED% = 0
  74.     TITLE$ = "MediaMania Demo Setup"
  75.     DEST$ = "C:\MDMDEMO"
  76.     WinDir$ = GetWindowsDir
  77.     IF IsWindowsShared THEN
  78.         SHAREDIR$ = WinDir$
  79.     ELSE
  80.         SHAREDIR$ = GetWindowsSysDir
  81.     END IF
  82.     MajorVer% = GetWindowsMajorVersion()
  83.     MinorVer% = GetWindowsMinorVersion()
  84.     Processor% = GetProcessorType()
  85.     WinSysDir$ = SHAREDIR$
  86.     WinSys32Dir$ = WinDir$ + "system32"
  87.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  88.     i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  89.     END
  90.     END IF
  91.     'Prevents installation on 286
  92.     IF Processor% < 3 THEN
  93.     i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  94.     END
  95.     END IF
  96.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  97.     IF OnWindowsNT() THEN
  98.       OnNT$ = "TRUE"
  99.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  100.       IF WowVersion$ = "" THEN
  101.          i% = DoMsgBox("Video for Windows does not run on Windows NT 3.1.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  102.          END
  103.       END IF
  104.     END IF
  105.     MEDIAMANIA_EXE$ = "PROGRAMS\MDMANIA.EXE"
  106.     MEDIAMANIA_INI$ = MakePath(GetWindowsDir(),"MDMDEMO.INI")
  107.     STAMP_SUBDIR$ = "PROGRAMS"
  108.     LOGOTYPE_DELAY& = 5000
  109.     '' ShowWindow  HwndFrame(),3       '' Maximize frame
  110.     SetBitmap CUIDLL$, LOGOTIT
  111.     SetTitle TITLE$
  112.            '' -------------- Display logotype for some period of time
  113. ''    sz$ = UIStartDlg(CUIDLL$,IDD_MODELESS,"FModelessDlgProc",0,"")
  114.     hLogoWnd% = FCreateLogoWnd(HwndFrame(),LOGOTYP)
  115.     IF hLogoWnd% <> 0 THEN
  116.         CursorSave% = ShowWaitCursor
  117.         time0& = Timer
  118.     ABOUTL1:
  119.         time1& = Timer
  120.         IF time1& >= time0& AND time1 < time0&+LOGOTYPE_DELAY& THEN
  121.             GOTO ABOUTL1
  122.         END IF
  123.         i% = DestroyWindow(hLogoWnd%)
  124.         RestoreCursor CursorSave%
  125.     END IF
  126. '' ---------------------------------------------------------------------
  127. '' ------------------------- INF FILE READING --------------------------
  128. '' ---------------------------------------------------------------------
  129.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  130.     IF szInf$ = "" THEN
  131.         szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILE$
  132.     END IF
  133.     ReadInfFile szInf$
  134. '' ---------------------------------------------------------------------
  135. '' ------------------- WELCOME DIALOG PROCESSING -----------------------
  136. '' ---------------------------------------------------------------------
  137. WELCOME:
  138.     sz$ = UIStartDlg(CUIDLL$, IDD_WELCOME, "FInfoDlgProc", IDD_WELCOME_HELP, "FHelpDlgProc" )
  139.     IF sz$ = "CONTINUE" THEN
  140.         UIPop 1
  141.     ELSE
  142.         GOSUB ASKQUIT
  143.         GOTO WELCOME
  144.     END IF
  145. '' ---------------------------------------------------------------------
  146. '' -------------------- SYSREQ DIALOG PROCESSING -----------------------
  147. '' ---------------------------------------------------------------------
  148.     DIM  req(6) AS INTEGER
  149.     req(1) = 1
  150.     IF GetWindowsMajorVersion < 3 THEN
  151.         req(1) = 0
  152.     ELSEIF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 10 THEN
  153.         req(1) = 0
  154.     END IF
  155.     req(2) = 1
  156.     req(3) = Has87MathChip
  157.     req(4) = FGetSwapFileSize <> 0
  158.     req(5) = FGetAvailableRAM >= 6*1024
  159.     req(6) = HasMouseInstalled
  160.     req(0) = 1
  161.     FOR i% = 1 TO 6 STEP 1
  162.         IF req(i%) = 0 THEN
  163.             req(0) = 0
  164.         END IF
  165.     NEXT i%
  166.     IF req(0) THEN
  167.         GOTO LICENSE
  168.     END IF
  169.     req(0) = 1
  170.     FOR i% = 1 TO 3 STEP 1
  171.         IF req(i%) = 0 THEN
  172.             req(0) = 0
  173.         END IF
  174.     NEXT i%
  175.     IF req(0) = 0 THEN
  176.         AddListItem "ControlsDisabled",Str$(IDC("C"))
  177.     END IF
  178.     FOR i% = 1 TO 6 STEP 1
  179.         IF req(i) THEN
  180.             AddListItem "StatusItemsText", "Present"
  181.         ELSE
  182.             AddListItem "StatusItemsText", "Absent"
  183.         END IF
  184.     NEXT i%
  185. SYSREQ:
  186.     sz$ = UIStartDlg(CUIDLL$, IDD_SYSREQ, "FCustInstDlgProc", IDD_SYSREQ_HELP, "FHelpDlgProc" )
  187.     IF sz$ = "CONTINUE" THEN
  188.         UIPop 1
  189.     ELSEIF sz$ = "CANCEL" THEN
  190.         IF req(0) = 0 THEN
  191.             UIPopAll
  192.             ERROR STFQUIT
  193.         ELSE
  194.             GOSUB ASKQUIT
  195.             GOTO SYSREQ
  196.         END IF
  197.     ELSE
  198.         GOTO SYSREQ
  199.     END IF
  200.     RemoveSymbol "StatusItemsText"
  201. '' ---------------------------------------------------------------------
  202. '' --------------------- LICENSE DIALOG PROCESSING ---------------------
  203. '' ---------------------------------------------------------------------
  204. LICENSE:
  205. '' ---------------------------------------------------------------------
  206. '' --------------- CUSTOM INSTALLATION DIALOG PROCESSING ---------------
  207. '' ---------------------------------------------------------------------
  208. CUSTINST:
  209.             '' --------- Try to find MediaMaster if previously installed
  210.             '' --------- Custom Installation Dialog Box Initialization
  211.                 '' Clear the list of extra space (not listed in setup.inf)
  212.                 '' required per drive. This list is used in calls to
  213.                 '' GetCopyListCost function to provide the information
  214.                 '' about additional required space.
  215.     FOR i% = 1 TO 26 STEP 1
  216.         AddListItem "ExtraCosts", "0"
  217.     NEXT i%
  218.                 '' Initialize the dialog input values
  219.     FOR i% = 1 TO 6 STEP 1
  220.         AddListItem "DriveStatusText", ""
  221.     NEXT i%
  222.     AddListItem "DriveStatusText", DEST$
  223.                 '' Language combo box init
  224.                 '' Compute data to be displayed in the dialog
  225.     RecalcPath
  226.     SetDriveStatus
  227.     SetSymbolValue "RadioDefault", OPTCUR$
  228.             '' -------- Custom Installation Dialog Box Loop
  229. CUSTINSTL1:
  230.     sz$ = UIStartDlg(CUIDLL$, IDD_CUSTINSTDEMOCD, "FCustInstDemoDlgProc", IDD_CUSTINSTDEMOCD_HELP, "FHelpDlgProc")
  231.     IF sz$ = "CONTINUE" THEN
  232.         IF TOTALNEEDED& > 0 THEN
  233.             CustInstInfo0Dlg IDD_TOOBIG
  234.         ELSE
  235.             UIPop 1
  236.             GOTO GETLANG
  237.         ENDIF
  238.     ELSEIF sz$ = "PATH" THEN
  239.         GOSUB GETPATH
  240.     ELSEIF len(sz$) >= 3 AND mid$(sz$,1,3) = "CHK" THEN
  241.         OPTCUR$ = GetSymbolValue("ButtonChecked")
  242.         SetDriveStatus
  243.     ELSEIF sz$ = "CANCEL" THEN
  244.         GOSUB ASKQUIT
  245.     ELSEIF sz$ = "REACTIVATE" THEN
  246.         RecalcPath
  247.         SetDriveStatus
  248.     END IF
  249.     GOTO CUSTINSTL1
  250. '' ---------------------------------------------------------------------
  251. '' --------------------- GET PATH DIALOG PROCESSING --------------------
  252. '' ---------------------------------------------------------------------
  253. GETPATH:
  254.     SetSymbolValue "EditTextIn", DEST$
  255.     SetSymbolValue "EditFocus", "END"
  256. GETPATHL1:
  257.     sz$ = UIStartDlg(CUIDLL$, IDD_DESTPATH, "FEditDlgProc", IDD_DESTPATH_HELP, "FHelpDlgProc")
  258.     IF sz$ = "CONTINUE" THEN
  259.         olddest$ = DEST$
  260.         DEST$ = GetSymbolValue("EditTextOut")
  261.         ''Validate new path.
  262.         IF IsDirWritable(DEST$) = 0 THEN
  263.             CustInstInfo0Dlg IDD_BADPATH
  264.             DEST$ = olddest$
  265.             GOTO GETPATHL1
  266.         END IF
  267.         UIPop 1
  268.         ''Truncate display if too long.
  269.         IF LEN(DEST$) > 30 THEN
  270.             ReplaceListItem "DriveStatusText", 7, MID$(DEST$, 1, 30)+"..."
  271.         ELSE
  272.             ReplaceListItem "DriveStatusText", 7, DEST$
  273.         END IF
  274.         ''Recalc if path changed.
  275.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  276.             RecalcPath
  277.             SetDriveStatus
  278.         END IF
  279.         olddest$ = ""
  280.         RETURN
  281.     ELSEIF sz$ = "REACTIVATE" THEN
  282.         RecalcPath
  283.         SetDriveStatus
  284.     ELSE
  285.         UIPop 1
  286.         RETURN
  287.     END IF
  288.     GOTO GETPATHL1
  289. GETLANG:
  290. '' ---------------------------------------------------------------------
  291. '' ---------------------------- INSTALLATION ---------------------------
  292. '' ---------------------------------------------------------------------
  293. INSTALL:
  294.     IF OPTCUR$ = "1" THEN
  295.         CBTPATH$ = MakePath(GetSymbolValue("STF_SRCDIR"), "DEMO")
  296.         CBTPATHOUTPUT$ = MakePath(DEST$, "DEMO")
  297.         CreateDir CBTPATHOUTPUT$, cmoNone
  298.     ELSE
  299.         CBTPATH$ = MakePath(DEST$, "DEMO")
  300.         CBTPATHOUTPUT$ = MakePath(DEST$, "DEMO")
  301.     ENDIF
  302.     ClearCopyListExtra
  303.     AddOptFilesToCopyList OPTCUR$
  304.     CreateDir DEST$, cmoNone
  305.     SetRestartDir WinDir$
  306.     CopyFilesInCopyList
  307.  
  308.     CreateDir MakePath(DEST$, "PLUGINS"), cmoNone
  309.     CreateIniKeyValue MEDIAMANIA_INI$, "Directories", "CBT", CBTPATH$, cmoOverwrite
  310.     CreateIniKeyValue MEDIAMANIA_INI$, "Directories", "CBTOutput", CBTPATHOUTPUT$, cmoOverwrite
  311. ''Updating WIN.INI and SYSTEM.INI
  312. ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  313. IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  314.     IF VflatdPresent() = 0 THEN
  315.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  316.     END IF
  317. END IF
  318.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  319.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  320.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  321.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "IR32.dll", cmoOverwrite
  322.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  323.     I% = DoesIniKeyExist (WinDir$ + "system.ini", "Drivers", "VIDC.RT21")
  324.     IF I% = 0  THEN
  325.        CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21_r.dll", cmoOverwrite
  326.     END IF
  327.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "ir21_r.dll", cmoOverwrite
  328.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  329.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  330.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  331.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  332.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  333.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  334.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  335.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  336. ''*************************************************************************************************************************
  337. ''*************************************************************************************************************************
  338. ''To add a DCI provider, please un-comment the UDH line, and un-comment and replace the    <provider> with your own file name
  339. ''
  340. ''  CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "DCI", "<provider>", cmoOverwrite
  341. ''  CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "vids.draw", "udh.dll", cmoOverwrite
  342. ''*************************************************************************************************************************
  343. ''*************************************************************************************************************************
  344. ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  345. IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  346.     Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  347.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  348.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  349. '' Mplayer
  350.     CreateProgmanItem "Zubeh÷r", "Medien-Wiedergabe", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  351. END IF    ''NT and next version of Windows installation stop here.
  352.     Run ("profdisp.exe")
  353.         CreateIniKeyValue MEDIAMANIA_INI$,"Directories","Root",DEST$,cmoOverwrite
  354.         CreateProgmanGroup "MediaMania Demo", "", cmoNone
  355.         ShowProgmanGroup  "MediaMania Demo", 1, cmoNone
  356.             CreateProgmanItem "MediaMania Demo", "MediaMania Demo", MakePath(DEST$,MEDIAMANIA_EXE$), "", cmoOverwrite
  357.             CreateProgmanItem "MediaMania Demo", "Capture", MakePath(DEST$,"PROGRAMS\MDMCAP.EXE"), "", cmoOverwrite
  358.         CreateProgmanItem "MediaMania Demo", "Read Me", "WINHELP.EXE "+MakePath(DEST$,"PROGRAMS\MMDEMO.HLP"), "", cmoOverwrite
  359. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows
  360. '' automatically; else, it gives the user the choice
  361.     RESTRT% = RestartListEmpty ()
  362.     Exe$ = WinDir$ + "\_msrstrt.exe"
  363.     Batch$ = WinDir$ + "\_mssetup.bat"
  364.     empty$ = ""
  365. RESTART:
  366.     IF RESTRT% = 0 THEN
  367.         sz$ = UIStartDlg(CUIDLL$, IDD_RESTART, "FInfo0DlgProc", 0, "")
  368.         IF sz$ = "REACTIVATE" THEN
  369.              GOTO RESTART
  370.         ENDIF
  371.         I% = ExitExecRestart ()
  372.         RemoveFile Exe$, cmoForce
  373.         RemoveFile Batch$, cmoForce
  374.         END
  375.     ELSE
  376.         sz$ = UIStartDlg(CUIDLL$, IDD_RESTARTQUERY, "FQuitDlgProc", 0, "")
  377.         IF sz$ = "CONTINUE" THEN
  378.             I% = ExitWindowsExec (Exe$, empty$)
  379.             IF I% = 0 THEN
  380.                 GOTO RESTART
  381.             ELSE
  382.             END
  383.         ENDIF
  384.         ELSEIF sz$ = "EXIT" THEN
  385.             UIPopAll
  386.             END
  387.         ELSEIF sz$ = "REACTIVATE" THEN
  388.             GOTO RESTART
  389.         ELSE
  390.             UIPop 1
  391.         END IF
  392.     END IF
  393.     GOTO ENDLABEL
  394. '' ---------------------------------------------------------------------
  395. '' ------------------------ SETUP QUIT PROCESSING ----------------------
  396. '' ---------------------------------------------------------------------
  397. QUIT:
  398.     ON ERROR GOTO ERRQUIT
  399.     IF ERR = 0 THEN
  400.         dlg% = IDD_EXITSUCCESSREG
  401.     ELSEIF ERR = STFQUIT THEN
  402.         dlg% = IDD_EXITQUIT
  403.     ELSE
  404.         dlg% = IDD_EXITFAILURE
  405.     END IF
  406. QUITL1:
  407.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  408.     IF sz$ = "REACTIVATE" THEN
  409.         GOTO QUITL1
  410.     END IF
  411.     UIPop 1
  412.     END
  413. ERRQUIT:
  414.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  415. ENDLABEL:
  416.     END
  417. '' -------------------------------------------------------------------------
  418. '' -------------------------------------------------------------------------
  419. '' ----------                                                   ------------
  420. '' ----------         A U X I L I A R Y   D I A L O G S         ------------
  421. '' ----------                                                   ------------
  422. '' -------------------------------------------------------------------------
  423. '' -------------------------------------------------------------------------
  424. '' ---------------------------------------------------------------------
  425. '' --------------------- ASK QUIT DIALOG PROCESSING --------------------
  426. '' ---------------------------------------------------------------------
  427. ASKQUIT:
  428.     sz$ = UIStartDlg(CUIDLL$, IDD_ASKQUIT, "FQuitDlgProc", 0, "")
  429.     IF sz$ = "EXIT" THEN
  430.         UIPopAll
  431.         ERROR STFQUIT
  432.     ELSEIF sz$ = "REACTIVATE" THEN
  433.         GOTO ASKQUIT
  434.     ELSE
  435.         UIPop 1
  436.     END IF
  437.     RETURN
  438. '' ---------------------------------------------------------------------
  439. '' ------------------- CUSTINST INFO0 DIALOG PROCESSING ----------------
  440. '' ---------------------------------------------------------------------
  441. SUB CustInstInfo0Dlg(template%) STATIC
  442. L1:
  443.     sz$ = UIStartDlg(CUIDLL$, template%, "FInfo0DlgProc", 0, "")
  444.     IF sz$ = "REACTIVATE" THEN
  445.         ''RecalcPath
  446.         ''SetDriveStatus
  447.         GOTO L1
  448.     END IF
  449.     UIPop 1
  450. END SUB
  451. '' -------------------------------------------------------------------------
  452. '' -------------------------------------------------------------------------
  453. '' ----------                                                   ------------
  454. '' ----------         U T I L I T Y   F U N C T I O N S         ------------
  455. '' ----------                                                   ------------
  456. '' -------------------------------------------------------------------------
  457. '' -------------------------------------------------------------------------
  458. '' --------------- Returns control identifier by given string
  459. ''                 for letters and statics,
  460. ''                      e.g. IDC("A")=IDC_A, IDC("B")=IDC_B,
  461. ''                           IDC("STATIC1")=IDC_STATIC1, etc.
  462. FUNCTION IDC(s$) STATIC AS INTEGER
  463.     IF Len(s$) = 1 THEN
  464.         IDC = 401+asc(s$)-asc("A")
  465.     ELSEIF Mid$(s$,1,6) = "STATIC" THEN
  466.         IDC = 600+val(Mid$(s$,7))
  467.     ELSEIF Mid$(s$,1,4) = "LIST" THEN
  468.         IDC = 428+val(Mid$(s$,5))
  469.     ELSE
  470.         IDC = -1
  471.     END IF
  472. END FUNCTION
  473. '' --------------- Converts ASCII path to integer drive number
  474. FUNCTION DriveN(path$) STATIC AS INTEGER
  475.     DriveN = asc(ucase$(path$))-asc("A")+1
  476. END FUNCTION
  477. '' --------------- Clears copy list and ExtraCosts list
  478. SUB ClearCopyListExtra STATIC
  479.     ClearCopyList
  480.     FOR i% = 1 TO 26 STEP 1
  481.         ReplaceListItem "ExtraCosts", i%, "0"
  482.     NEXT i%
  483. END SUB
  484. '' -------- Adds specified cost to the drive% item of the ExtraCosts list
  485. SUB AddExtraCost (drive%,cost&) STATIC
  486.     ReplaceListItem "ExtraCosts", drive%, STR$( VAL(GetListItem("ExtraCosts",drive%))+cost& )
  487. END SUB
  488. '**
  489. '** Purpose:
  490. '**     Adds the specified section files to the copy list.
  491. '** Arguments:
  492. '**     ftype%  - type of option to add, one of the following:
  493. '**             OPT_MEDIAMANIA, OPT_SAMPLES
  494. '**     falways% - if this parameter is zero then the section is added
  495. '**             depending on the corresponding checkbox state. If this
  496. '**             parameter is non-zero the section is always added.
  497. '** Returns:
  498. '**     none.
  499. '*************************************************************************
  500. SUB AddOptFilesToCopyList (ftype$) STATIC
  501.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  502.     AddSectionFilesToCopyList "ProgramFiles", SrcDir$, MakePath$(DEST$,"PROGRAMS")
  503.     AddSectionFilesToCopyList "CaptureFiles", SrcDir$, MakePath$(DEST$,"PROGRAMS")
  504.     AddSectionFilesToCopyList "BehaviourFiles", SrcDir$, MakePath$(DEST$,"BEHAVIOR")
  505.     AddSectionFilesToCopyList "SystemFiles", SrcDir$, SHAREDIR$
  506. '' Remove DCISVGA file
  507.     AddSectionFilesToCopyList "remove", SrcDir$, WinSysDir$
  508. ''  Runtime files (on Windows disk)
  509. ''  Do not install OLE or MPlayer if on next release of NT or Windows
  510.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN            'These files not necessary on Windows NT
  511.     AddSectionFilesToCopyList "MPlayer", SrcDir$, WinDir$
  512.     AddSectionFilesToCopyList "OLE2", SrcDir$, WinSysDir$
  513.     END IF
  514.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  515.     AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WinSysDir$
  516.     AddSectionFilesToCopyList "AVICodecs", SrcDir$, WinSysDir$
  517.     IF OnNT$ = "TRUE" THEN
  518.     AddSectionFilesToCopyList "NT MSVideo", SrcDir$, WinSys32Dir$
  519.     ENDIF
  520.     AddSectionFilesToCopyList "QuickTimeFiles", SrcDir$, MakePath$(DEST$,"PROGRAMS")
  521.     AddSectionFilesToCopyList "ProgramWinFiles", SrcDir$, WinDir$
  522.     AddSectionFilesToCopyList "CBTFilesOutput", SrcDir$, MakePath$(DEST$,"DEMO")
  523.                 ''Add extra cost to Windows drive for ini/progman, etc.
  524.                 ''Also add extra cost to Dest drive for inifile
  525.     AddExtraCost    DriveN(WinDir$),0
  526.     AddExtraCost    DriveN(DEST$),0
  527.     IF ftype$ = "2" THEN
  528.         AddSectionFilesToCopyList "CBTFiles", SrcDir$, MakePath$(DEST$,"DEMO")
  529.     END IF
  530. END SUB
  531. '**
  532. '** Purpose:
  533. '**     Recalculates disk space for the given option files and sets
  534. '**     the status info symbol "StatusItemsText".
  535. '** Arguments:
  536. '**     ftype% - type of option to add, one of the following:
  537. '**             OPT_MEDIAMANIA, OPT_SAMPLES
  538. '** Returns:
  539. '**     none.
  540. '*************************************************************************
  541. SUB RecalcOptFiles (ftype%) STATIC
  542.     ClearCopyListExtra
  543.     AddOptFilesToCopyList "2"
  544.     StillNeed& = GetCopyListCost("ExtraCosts", "SizeList", "")
  545.     cost& = 0
  546.     FOR i% = 1 TO 26 STEP 1
  547.         cost&  = cost& + VAL(GetListItem("SizeList", i%))
  548.     NEXT i%
  549.     ReplaceListItem "StatusItemsText", ftype%, STR$((cost& + 1023) / 1024) + " K"
  550.     RemoveSymbol("SizeList")
  551. END SUB
  552. '**
  553. '** Purpose:
  554. '**     Recalculates disk space and sets option status info according
  555. '**     to the current destination path.
  556. '** Arguments:
  557. '**     none.
  558. '** Returns:
  559. '**     none.
  560. '*************************************************************************
  561. SUB RecalcPath STATIC
  562.     CursorSave% = ShowWaitCursor()
  563.     for i% = 1 TO OPT_LAST STEP 1
  564.         RecalcOptFiles i%
  565.     NEXT i%
  566.     RestoreCursor CursorSave%
  567. END SUB
  568. '**
  569. '** Purpose:
  570. '**     Sets drive status info according to latest disk space calcs.
  571. '** Arguments:
  572. '**     none.
  573. '** Returns:
  574. '**     none.
  575. '*************************************************************************
  576. SUB SetDriveStatus STATIC
  577.     CursorSave% = ShowWaitCursor()
  578.     ClearCopyListExtra
  579.     AddOptFilesToCopyList OPTCUR$
  580.     TOTALNEEDED& = GetCopyListCost("ExtraCosts","SizeList","")
  581.     drive$ = UCASE$(MID$(DEST$,1,1))
  582.     ndrive% = DriveN(drive$)
  583.     cost& = VAL(GetListItem("SizeList", ndrive%))
  584.     free& = GetFreeSpaceForDrive(drive$)
  585.     ReplaceListItem "DriveStatusText", 1, drive$ + ":"
  586.     ReplaceListItem "DriveStatusText", 2, STR$((cost&+1023) / 1024) + " K"
  587.     ReplaceListItem "DriveStatusText", 3, STR$(free& / 1024) + " K"
  588.     IF ndrive% = DriveN(WinDir$) THEN
  589.         ReplaceListItem "DriveStatusText", 4, ""
  590.         ReplaceListItem "DriveStatusText", 5, ""
  591.         ReplaceListItem "DriveStatusText", 6, ""
  592.     ELSE
  593.         drive$ = UCASE$(MID$(WinDir$,1,1))
  594.         ndrive% = DriveN(WinDir$)
  595.         cost& = VAL(GetListItem("SizeList", ndrive%))
  596.         IF cost& = 0 THEN
  597.             ReplaceListItem "DriveStatusText", 4, ""
  598.             ReplaceListItem "DriveStatusText", 5, ""
  599.             ReplaceListItem "DriveStatusText", 6, ""
  600.         ELSE
  601.             free& = GetFreeSpaceForDrive(drive$)
  602.             ReplaceListItem "DriveStatusText", 4, drive$ + ":"
  603.             ReplaceListItem "DriveStatusText", 5, STR$((cost&+1023) / 1024) + " K"
  604.             ReplaceListItem "DriveStatusText", 6, STR$(free& / 1024) + " K"
  605.         END IF
  606.     END IF
  607.     RestoreCursor CursorSave%
  608. END SUB
  609. '**
  610. '** Purpose:
  611. '**     Appends a file name to the end of a directory path,
  612. '**     inserting a backslash character as needed.
  613. '** Arguments:
  614. '**     szDir$  - full directory path (with optional ending "\")
  615. '**     szFile$ - filename to append to directory
  616. '** Returns:
  617. '**     Resulting fully qualified path name.
  618. '*************************************************************************
  619. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  620.     IF szDir$ = "" THEN
  621.         MakePath = szFile$
  622.     ELSEIF szFile$ = "" THEN
  623.         MakePath = szDir$
  624.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  625.         MakePath = szDir$ + szFile$
  626.     ELSE
  627.         MakePath = szDir$ + "\" + szFile$
  628.     END IF
  629. END FUNCTION
  630.