home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World Interactive 1996 October / pcwoct96.zip / pcwoct96 / SETUP.MST < prev    next >
Text File  |  1996-05-16  |  24KB  |  702 lines

  1. rem ****************************************************************************
  2. rem *
  3. rem *    File:        setup.mst
  4. rem *
  5. rem *    Author:        Clive Nutter
  6. rem *
  7. rem *    Purpose:    Script file for MS setup engine.
  8. rem *
  9. rem *    Change History:
  10. rem *
  11. rem *        01.09.95, CLN    Created, based on AV title setup.mst.
  12. rem *        02.09.95, CLN    Added QuickTime version checking.
  13. rem *        03.09.95, CLN    Amended so each promo has its own copy of
  14. rem *                engine.
  15. rem *        06.09.95, CLN    Added code for First World War & War in the
  16. rem *                Pacific promos.
  17. rem *        15.09.95, CLN    Add DLL call to update system configuration.
  18. rem *                Add code to display read-me file.
  19. rem *        09.10.95, CLN    Cater for advert(s) and retail loop variants.
  20. rem *        04.01.96, CLN    Allow selection of VfW and WinToon and engine
  21. rem *                sharing options.
  22. rem *        01.04.96, CLN    Change to install QuickTime 2.1.0.
  23. rem *
  24. rem ****************************************************************************
  25.  
  26. '$INCLUDE 'setupapi.inc'
  27. '$INCLUDE 'mscpydis.inc'    ''System
  28. '$INCLUDE 'msdetect.inc'    ''Detects Available Disk Space      
  29. '$INCLUDE 'avsetup.inc'
  30. '$INCLUDE 'pmgrdde.inc'        ''Program Manager DDE
  31. '$INCLUDE 'system.inc'        ''FlagTower system configuration
  32. '$INCLUDE 'flagtowr.inc'    ''FlagTower title values
  33.  
  34. ''Dialog ID's
  35. CONST WELCOME       = 100
  36. CONST ASKQUIT       = 200
  37. CONST ASKPATH       = 300
  38. CONST EXITFAILURE   = 400
  39. CONST EXITQUIT      = 600
  40. CONST EXITSUCCESS   = 700
  41. CONST APPHELP       = 900
  42. CONST SMALLWIN      = 2200
  43. CONST RESTART       = 2600
  44. CONST RESTARTII     = 2700
  45. CONST BADPATH       = 6400
  46.  
  47. 'GLOBAL SizeReq&        '' Total Disk Size required for installation
  48.  
  49. GLOBAL WinDir$            ''Windows directory
  50. GLOBAL WinSysDir$        ''Windows system directory
  51. GLOBAL WinSys32Dir$        ''Win32 system directory
  52. GLOBAL MinorVer%        ''Windows minor version number
  53. GLOBAL OnNT$            ''NT flag
  54.  
  55. GLOBAL SrcDir$            ''Source directory                   
  56. GLOBAL CDDrive$            ''CD-Rom drive letter
  57. GLOBAL DbPath$            ''Database directory
  58.  
  59. GLOBAL AVDest$            ''Directory to put AV engine libraries
  60. GLOBAL AVDestRoot$        '' Root directory for title
  61.  
  62. global isInstallQTW as integer
  63.  
  64. ''----- External functions called by Video for Windows setup
  65. DECLARE FUNCTION ExitWindowsExec  LIB "user" (Exec$, Param$) AS INTEGER
  66. DECLARE FUNCTION OnWindowsNT LIB "iniupd.dll" AS INTEGER
  67. DECLARE SUB      Reboot LIB "iniupd.dll"
  68. DECLARE FUNCTION VflatdPresent LIB "iniupd.dll" AS INTEGER
  69. DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  70.  
  71. ''----- External functions called by WinG setup
  72. DECLARE FUNCTION GetRealSystemDirectory LIB "setuphlp.dll" (szDir$, cbBuf%) AS INTEGER
  73. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.dll" (szOrig$, szNew$) AS INTEGER
  74. DECLARE SUB      RenameFilePlease LIB "setuphlp.dll" (szOrig$, szNew$)
  75. DECLARE FUNCTION RestartWindows LIB "setuphlp.dll" AS INTEGER
  76.                  
  77. ''----- Effects library functions used
  78. DECLARE FUNCTION DivertBackMessage LIB "avsetup.dll" (WinHandle%, InstHandle%) AS INTEGER
  79. DECLARE SUB      MaxWindowArea LIB "avsetup.dll" (WinHandle%)
  80. DECLARE FUNCTION ShowBitmap LIB "avsetup.dll" (WinHandle%, szName$, nFx%, nFxTime%) AS INTEGER          
  81. DECLARE FUNCTION SetFileAttribute LIB "avsetup.dll" (szName$, nMode%) AS INTEGER
  82. DECLARE FUNCTION fnnGetQTWVersion LIB "qtw_vers.dll" (ourVersion&) AS INTEGER
  83. DECLARE FUNCTION CallModifyCONFIG LIB "confchk.dll" (WinHandle%) AS INTEGER
  84.  
  85. ''----- Local functions
  86. DECLARE FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) AS INTEGER
  87. DECLARE FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) AS INTEGER
  88. declare sub     CopyTitleBinaries(pathBinary$, sectBinary$, sectCDilla$, sectEngine$, sectAccusoft$ )
  89. declare sub     CopyTitleDatabase(pathDatabase$, sectDatabase$ )
  90. declare sub     InstallTitle( pathRoot$, pathBinary$, pathDatabase$, iniFile$, dllFile$, iconNo$ )
  91. declare sub     CreateTitleIcon( pathBinary$, dllFile$, iconNo$ )
  92. declare sub     CreateMenuIcon( pathBinary$ )
  93. DECLARE SUB      Install
  94. DECLARE FUNCTION MakePath(szDir$, szFile$) AS STRING
  95. DECLARE SUB      UpdateWinG32(szOrig$)
  96.  
  97. INIT:
  98.  
  99.     CUIDLL$   = "ftcuistf.dll"          ''Custom user interface dll
  100.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  101.  
  102.     MajorVer%      = GetWindowsMajorVersion()
  103.     MinorVer%      = GetWindowsMinorVersion()
  104.     Processor%      = GetProcessorType()
  105.     WinDir$       = GetWindowsDir()
  106.     WinSysDir$      = GetWindowsSysDir()
  107.     WinSys32Dir$  = WinDir$ + "system32"
  108.     SrcDir$       = GetSymbolValue("STF_SRCDIR")
  109.     
  110.     'Make sure the user's system can handle Video for Windows
  111.     dummy% = CheckVideoSystem(MajorVer%, MinorVer%, Processor%) 
  112.     IF OnWindowsNT() THEN
  113.         OnNT$ = "TRUE"
  114.     END IF
  115.                            
  116.     'Read setup's .INF file                           
  117.     szInf$ = GetSymbolValue("STF_SRCINFPATH")                                 
  118.     IF szInf$ = "" THEN
  119.        szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  120.     END IF
  121.     ReadInfFile szInf$
  122.  
  123.     'Divert paint messages of background window to our own routine                      
  124.     dummy% = DivertBackMessage(HwndFrame(), HinstFrame())
  125.     MaxWindowArea(HwndFrame())
  126.     dummy% = ShowBitmap(HwndFrame(), SrcDir$+"logo.bmp",106,1000)     
  127.             
  128.                
  129. WELCOME:
  130.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  131.  
  132.     IF sz$ = "CONTINUE" THEN
  133.         UIPop 1
  134.     ELSE
  135.         GOSUB ASKQUIT
  136.         GOTO WELCOME
  137.     END IF
  138.  
  139.                                                       
  140. GETPATH: 
  141.     AVDest$ = Dir_DefaultInstall
  142.  
  143.     SetSymbolValue "EditTextIn", AVDest$
  144.     SetSymbolValue "EditTextOut", AVDest$
  145.     SetSymbolValue "EditFocus", "END"
  146. GETPATHL1:
  147.     SetSymbolValue "DLGEVENT", ""
  148.  
  149.     sz$ = UIStartDlg(CUIDLL$, ASKPATH, "FEditDlgProc", 0, "")
  150.     AVDest$ = GetSymbolValue("EditTextOut")
  151.     AVDestRoot$ = AVDest$
  152.  
  153.     IF sz$ = "CONTINUE" THEN
  154.         IF IsDirWritable(AVDest$) = 0 THEN 
  155.            GOSUB BADPATH
  156.            GOTO GETPATHL1
  157.         END IF
  158.         UIPop 1
  159.     ELSE 
  160.         IF sz$ = "EXIT" THEN
  161.             GOSUB ASKQUIT
  162.         END IF
  163.         GOTO GETPATH        
  164.     END IF
  165.           
  166.           
  167.     if not Dir_Group = "" then
  168.         AVDest$ = AVDest$ + Dir_Group
  169.     end if
  170.  
  171.     rem *** Prepare copy list
  172.  
  173.     ClearCopyList                                           
  174.  
  175. '$INCLUDE 'init.mst'
  176.  
  177. '$ifdef IsUsingVfW
  178.  
  179.     '' ------------------- Copy list for Video for Windows --------------------
  180.     ''Remove DCISVGA file
  181.  
  182.     RemoveFile WinSysDir$+"dcisvga.drv", cmoForce
  183.  
  184.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN            
  185.             'These files not necessary on Windows NT
  186.         AddSectionFilesToCopyList "VfW MPlayer", SrcDir$, WinDir$
  187.         AddSectionFilesToCopyList "VfW OLE2", SrcDir$, WinSysDir$
  188.     END IF
  189.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  190.     AddSectionFilesToCopyList "VfW ACM Drivers", SrcDir$, WinSysDir$
  191.     AddSectionFilesToCopyList "VfW AVICodecs", SrcDir$, WinSysDir$
  192.     IF OnNT$ = "TRUE" THEN
  193.         AddSectionFilesToCopyList "VfW NT MSVideo", SrcDir$, WinSys32Dir$
  194.     ENDIF
  195. '$endif
  196.  
  197. '' --------------------- Copy list for WinG -----------------------
  198.     AddSectionFilesToCopyList "WinG runtime", SrcDir$, WinSysDir$
  199.     Dest1$ = MakePath (WinSysDir$,"Wing32.dll")
  200.     Dest2$ = MakePath (WinSysDir$,"Wing32.xxx")
  201.     RenameFilePlease Dest1$, Dest2$
  202.  
  203. '$ifdef IsUsingWinToon
  204.  
  205.     '' ---------------------- Copy list for WinToon -----------------------
  206.     AddSectionFilesToCopyList "WinToon runtime", SrcDir$, WinSysDir$
  207. '$endif
  208.  
  209. '' --------------------- Copy list for MediaView ----------------------
  210.     AddSectionFilesToCopyList "MediaView runtime", SrcDir$, WinSysDir$
  211.  
  212.     rem *** Copy list for QuickTime
  213.  
  214.     isInstallQTW = 0
  215.  
  216.     qtwVersion& = 10794    ' version 2.1.0.42
  217. rem    qtwVersion& = 11065    ' version 2.1.1.57
  218.  
  219.     s% = fnnGetQTWVersion( qtwVersion& )
  220.  
  221.     if s% = 1 then
  222.         isInstallQTW = 1
  223.  
  224. '$ifdef IsUsingQTUtilities
  225.         AddSectionFilesToCopyList "QuickTime 2.1.0 Utilities", SrcDir$, WinDir$
  226. '$endif
  227.         AddSectionFilesToCopyList "QuickTime 2.1.0 Runtime", SrcDir$, WinSysDir$
  228.     endif
  229.  
  230. '' ------------------------ Copy list for ADS -------------------------
  231.     AddSectionFilesToCopyList "ADS", SrcDir$, WinSysDir$
  232.  
  233. '' ------------------------ Copy list for AAPLAY -------------------------
  234.     AddSectionFilesToCopyList "AAPLAY Animation", SrcDir$, WinSysDir$
  235.  
  236. '$ifdef IsEncrypted
  237.     rem *** Copy list for C-Dilla
  238.  
  239. '$ifdef IsUsingCDillaV1
  240.     AddSectionFilesToCopyList "C-Dilla system", SrcDir$, WinDir$
  241. '$endif
  242.  
  243. '$endif
  244.  
  245.     rem *** Common utilities and system files
  246.  
  247.     AddSectionFilesToCopyList Sect_GenericUtility, SrcDir$, AVDestRoot$
  248.     AddSectionFilesToCopyList Sect_GenericSystem, SrcDir$, WinSysDir$
  249.  
  250.     if not Dir_Group = "" then
  251.         dummy% = setDOSFileAttr( AVDest$ + Dir_Binary + FN_Description, 0, 1 )
  252.  
  253.         AddSectionFilesToCopyList Sect_GenericGroupUtility, SrcDir$, AVDest$
  254.         AddSectionFilesToCopyList Sect_GenericGroupBinary, SrcDir$, AVDest$ + Dir_Binary
  255.     end if
  256.  
  257. '$INCLUDE 'copylist.mst'
  258.  
  259. '' -------- Check space on hard disk --------
  260.     SizeReq& = GetCopyListCost ("","", "")
  261.     IF SizeReq& <> 0 THEN
  262.         GOSUB SMALLWIN
  263.         END
  264.     END IF
  265.  
  266.                               
  267. '' Perform install                              
  268.     Install
  269.  
  270. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  271. '' else, it gives the user the choice
  272.     RESTRT% = RestartListEmpty ()
  273.     Exe$ = WinDir$ + "\_msrstrt.exe"
  274.     Batch$ = WinDir$ + "\_mssetup.bat"
  275.     empty$ = ""
  276.  
  277. RESTART:
  278.     IF RESTRT% = 0 THEN
  279.        sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfo0DlgProc", 0, "")
  280.        IF sz$ = "REACTIVATE" THEN
  281.                GOTO RESTART
  282.        ENDIF
  283.        I% = ExitExecRestart ()
  284.        RemoveFile Exe$, cmoForce
  285.        RemoveFile Batch$, cmoForce
  286.        END
  287.     ELSE
  288.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  289.        IF sz$ = "CONTINUE" THEN
  290.                I% = ExitWindowsExec (Exe$, empty$)                             
  291.                IF I% = 0 THEN
  292.                    GOTO RESTART
  293.                ELSE
  294.                  END
  295.                ENDIF
  296.        ELSEIF sz$ = "EXIT" THEN
  297.                UIPopAll
  298.               END
  299.        ELSEIF sz$ = "REACTIVATE" THEN
  300.                GOTO RESTART
  301.        ELSE
  302.               UIPop 1
  303.        END IF
  304.     END IF
  305.  
  306.  
  307. QUIT:
  308.     ON ERROR GOTO ERRQUIT
  309.  
  310.     IF ERR = 0 THEN
  311.         dlg% = EXITSUCCESS
  312.     ELSEIF ERR = STFQUIT THEN
  313.         dlg% = EXITQUIT
  314.     ELSE
  315.         dlg% = EXITFAILURE
  316.     END IF
  317. QUITL1:
  318.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  319.     IF sz$ = "REACTIVATE" THEN
  320.         GOTO QUITL1
  321.     END IF
  322.     UIPop 1
  323.     END
  324.  
  325. ERRQUIT:
  326.     i% = DoMsgBox("An installation problem occured.", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  327.     END
  328.  
  329.  
  330. ASKQUIT:
  331.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  332.  
  333.     IF sz$ = "EXIT" THEN
  334.         UIPopAll
  335. ''        ERROR STFQUIT
  336.     END
  337.     ELSEIF sz$ = "REACTIVATE" THEN
  338.         GOTO ASKQUIT
  339.     ELSE
  340.         UIPop 1
  341.     END IF
  342.     RETURN
  343.  
  344. SMALLWIN:
  345.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  346.     IF sz$ = "REACTIVATE" THEN
  347.         GOTO SMALLWIN
  348.     END IF
  349.     UIPop 1
  350.     RETURN
  351.           
  352. BADPATH:
  353.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  354.     IF sz$ = "REACTIVATE" THEN
  355.         GOTO BADPATH
  356.     END IF
  357.     UIPop 1
  358.     RETURN
  359.  
  360. '**
  361. '** Purpose:
  362. '**     Performs all installation operations.
  363. '** Arguments:
  364. '**     none.
  365. '** Returns:
  366. '**     none.
  367. '*************************************************************************
  368. SUB Install STATIC           
  369.  
  370.     SetRestartDir WinDir$
  371.     CopyFilesInCopyList
  372.     UpdateWinG32 WinSysDir$
  373.  
  374. ''<-------------------- BACK UP INI FILES HERE !!! ---------------------->
  375.     inia$ = MakePath(WinDir$, "win.ini")
  376.     inib$ = MakePath(WinDir$, "win.ftw")
  377.     CopyFile inia$, inib$, cmoOverwrite, 0
  378.     inia$ = MakePath(WinDir$, "system.ini")
  379.     inib$ = MakePath(WinDir$, "system.ftw")
  380.     CopyFile inia$, inib$, cmoOverwrite, 0
  381.                                                                               
  382.                                                                               
  383. '$ifdef IsEncrypted
  384.     rem *** Copy list for C-Dilla version 2
  385.  
  386.     rem *** C-Dilla v2 not in setup.inf
  387.  
  388. '$ifdef IsUsingCDillaV2
  389.     i% = installCDilla( HwndFrame(), SrcDir$+"_sys\cdilla2", 0 )
  390. '$endif
  391.  
  392. '$endif
  393.  
  394. '$ifdef IsUsingVfW
  395.  
  396.     ''----------------- Update INI files for Video for Windows ---------------
  397.     ''Updating WIN.INI and SYSTEM.INI
  398.     ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  399.  
  400.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  401.         IF VflatdPresent() = 0 THEN
  402.             CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  403.         END IF
  404.     END IF
  405.  
  406.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  407.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  408.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  409.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "IR32.dll", cmoOverwrite
  410.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  411.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  412.     IF I% = 0  THEN
  413.         CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21_r.dll", cmoOverwrite
  414.     END IF
  415.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "ir21_r.dll", cmoOverwrite
  416.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  417.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  418.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  419.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  420.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  421.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  422.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  423.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  424. '$endif
  425.  
  426.     if isInstallQTW = 1 then
  427.  
  428.         rem *** Update INI files for QuickTime
  429.  
  430.         CreateIniKeyValue "win.ini", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  431.         CreateIniKeyValue "win.ini", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  432.         CreateIniKeyValue "win.ini", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  433.         i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(WinSysDir$, "mciqtw.drv"), "SYSTEM.INI")
  434.  
  435.         rem *** Create QTW.INI
  436.         ini$ = MakePath(WinDir$, "qtw.ini")
  437.         CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  438.         RemoveIniKey ini$, "video", "optimize", cmoNone
  439.     endif
  440.  
  441.     rem Compatibility hacks.
  442.     i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "system.ini")
  443.     CreateIniKeyValue "win.ini", "Mach", "DeviceBitmap", "off", cmoOverwrite
  444.  
  445.     rem *** Update INI files for AAPLAY
  446.  
  447.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "FullScreen", "AAVGA.DLL", cmoOverwrite
  448.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "DualScreen", "yes", cmoOverwrite
  449.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "Int2fSwitch", "no", cmoOverwrite
  450.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "WaveAudio", "c,522", cmoOverwrite
  451.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "flc", "Animation1", cmoOverwrite
  452.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "fli", "Animation1", cmoOverwrite
  453.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "aas", "Animation1", cmoOverwrite
  454.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "Animation1", "mciaap.drv", cmoOverwrite
  455.  
  456. '$ifdef IsUsingVfW
  457.  
  458.     ''------ Register Video for Windows components -----
  459.     ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  460.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  461.         Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  462.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  463.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  464.                                    
  465.         '' Mplayer
  466.         CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  467.  
  468.     END IF    ''NT and next version of Windows installation stop here.
  469.  
  470.     Run ("profdisp.exe")  ''Profile display for Video for Windows
  471. '$endif
  472.  
  473. '$INCLUDE 'install.mst'
  474.  
  475. '$ifdef IsUsingMenu
  476.     CreateMenuIcon AVDest$ + Dir_Binary
  477. '$endif
  478.  
  479.     CreateProgmanItem PMG_FlagTower, PMI_Uninstall, AVDestRoot$ + "\uninstal.exe", "", cmoOverwrite
  480. '$ifdef IsUsingOnLineReg
  481.     CreateProgmanItem PMG_FlagTower, PMI_OnLineReg, AVDestRoot$ + "\onlinreg.exe", "", cmoOverwrite
  482. '$endif
  483.  
  484.     i% = CallModifyCONFIG( HwndFrame() )
  485.  
  486. REM        Run( "notepad  " + SrcDir$ + "readme.txt" )
  487.  
  488. END SUB
  489.                                                                                               
  490. ' -------------------------------------------------------------------------------------------- 
  491. ' -------------------------------------------------------------------------------------------- 
  492. ' -------------------------------------------------------------------------------------------- 
  493. ' Miscellaneous Functions 
  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. SUB UpdateWinG32(szOrig$) STATIC
  519.     '
  520.     ' Check the version of wing32.dll since cannot get version
  521.     ' checking for Win32 apps from Win16
  522.     '
  523.     FileNew$  = MakePath(szOrig$, "wing32.dll")
  524.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  525.  
  526.     IF IsWin32FileNewer(FileOrig$, FileNew$) THEN
  527.         RemoveFile FileOrig$, cmoForce
  528.     ELSE
  529.         RemoveFile FileNew$, cmoForce
  530.         RenameFilePlease FileOrig$, FileNew$
  531.     END IF
  532. END SUB                                                                
  533.                                                         
  534.                                                      
  535. FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) STATIC AS INTEGER
  536.  
  537.     ramSize% = getSystemRAM()
  538.     ramSizeStr$ = str$( ramSize% )
  539.     ramSizeStr$ = ltrim$( ramSizeStr$ )
  540.  
  541.     CreateIniKeyValue szINI$, "METRICS", "CDROM", szCD$ , cmoOverwrite
  542.     CreateIniKeyValue szINI$, "METRICS", "RAM", ramSizeStr$, cmoOverwrite
  543.     CreateIniKeyValue szINI$, "METRICS", "VOLUME", "5" , cmoOverwrite
  544.  
  545.     CreateIniKeyValue szINI$, "DBPATH", "ROUTING", szDbPath$+"\ROUTING.MBF" , cmoOverwrite
  546.     CreateIniKeyValue szINI$, "DBPATH", "RUNTIME", szDbPath$+"\RUNTIME.MBF" , cmoOverwrite
  547.     CreateIniKeyValue szINI$, "DBPATH", "UNITBASE", szDbPath$+"\UNITBASE.MBF" , cmoOverwrite
  548.     CreateIniKeyValue szINI$, "DBPATH", "FILEBASE", szDbPath$+"\FILEBASE.MBF" , cmoOverwrite
  549.     CreateIniKeyValue szINI$, "DBPATH", "TIMELINE", szDbPath$+"\TL_BASE.MBF" , cmoOverwrite
  550.     CreateIniKeyValue szINI$, "DBPATH", "GCACHE", szDbPath$+"\GCACHE.MBF" , cmoOverwrite
  551.  
  552.     CreateTitleINIFile = 0                                              
  553.     
  554. END FUNCTION                                               
  555.  
  556. sub CopyTitleBinaries(pathBinary$, sectBinary$, sectCDilla$, sectEngine$, sectAccusoft$ ) static
  557.  
  558.     rem *** Copy list for Accusoft Pro Gold
  559.  
  560.     AddSectionFilesToCopyList sectAccusoft$, SrcDir$, pathBinary$
  561.  
  562. '$ifdef IsEncrypted
  563.     rem *** Copy list for C-Dilla
  564.  
  565. rem    AddSectionFilesToCopyList Sect_CDillaSystem, SrcDir$, WinDir$
  566.     AddSectionFilesToCopyList sectCDilla$, SrcDir$, pathBinary$
  567. '$endif
  568.  
  569.     rem *** Copy list for AV ENGINE
  570.  
  571.     AddSectionFilesToCopyList sectEngine$, SrcDir$, pathBinary$
  572.  
  573.     rem *** Copy list for title
  574.  
  575.     AddSectionFilesToCopyList sectBinary$, SrcDir$, pathBinary$
  576.  
  577.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 0, 1 )
  578.  
  579. end sub
  580.  
  581. sub CopyTitleDatabase(pathDatabase$, sectDatabase$ ) static
  582.  
  583.     AddSectionFilesToCopyList sectDatabase$, SrcDir$, pathDatabase$
  584.  
  585. end sub
  586.  
  587. sub InstallTitle( pathRoot$, pathBinary$, pathDatabase$, iniFile$, dllFile$, iconNo$ ) static
  588.  
  589.     CDDrive$ = MID$(SrcDir$,1,1)          
  590.  
  591.     CreateDir pathRoot$, cmoNone
  592.     CreateDir pathBinary$, cmoNone
  593.     CreateDir pathDatabase$, cmoNone
  594.     dummy% = CreateTitleINIFile( pathBinary$+"\"+iniFile$, CDDrive$, pathDatabase$ )
  595.  
  596.     rem *** Change file attribute of 'flagtowr.ttl' to Read-only+Hidden
  597.  
  598.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 3, 1 )
  599.  
  600.     rem *** create unitdb.mbf in title database directory to aid performance
  601.  
  602. rem    CopyFile pathDatabase+"\unitbase.mbf", pathDatabase+"\unitdb.mbf", cmoOverwrite, 0
  603.  
  604. end sub
  605.  
  606. sub CreateMenuIcon( pathBinary$ ) static
  607.  
  608.     dim    PMI_Title as string
  609.  
  610.     PMI_Title = string$( 110, 32 )
  611.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  612.  
  613.     rem *** Create Program Manager Group
  614.  
  615.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  616.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  617.     
  618.     rem *** Create Icon(s)
  619.  
  620.     s% = pmDeleteItem( PMI_Title )
  621.  
  622.     CreateProgmanItem PMG_FlagTower, PMI_Title, AVDest$ + "\prommenu.exe" + " " + AVDest$, "", cmoOverwrite
  623.  
  624. end sub
  625.  
  626. sub CreateTitleIcon( pathBinary$, dllFile$, iconNo$ ) static
  627.  
  628.     dim    PMI_Title as string
  629.     dim    PMI_ReadMe as string
  630.     dim    Cmd_ReadMe as string
  631.  
  632.     PMI_Title = string$( 110, 32 )
  633.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  634.  
  635.     rem *** Create Program Manager Group
  636.  
  637.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  638.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  639.     
  640.     rem *** Create Icon(s)
  641.  
  642.     s% = pmDeleteItem( PMI_Title )
  643.  
  644.     TitleDLL$ = pathBinary$+"\"+dllFile$
  645.     Launch$   = pathBinary$+"\LAUNCH.EXE "
  646.  
  647.     if len( iconNo$ ) = 1 then
  648.  
  649. '$ifdef IsEncrypted
  650.         Other$    = pathBinary$+"\ZLAUNCH.EXE "
  651. '$else
  652.         Other$    = Launch$
  653. '$endif
  654.  
  655.         Other$    = Other$ + "," + iconNo$
  656.  
  657.     else
  658.  
  659.         Other$ = pathBinary$ + iconNo$ + ",0"
  660.  
  661.     end if
  662.  
  663.     Other$ = Other$ + ",0,0," + pathBinary$
  664.  
  665.     rem *** Icon for title
  666.  
  667.     CreateProgmanItem PMG_FlagTower, PMI_Title, Launch$+TitleDLL$, Other$, cmoOverwrite
  668.  
  669.     rem *** Icon for readme
  670.  
  671.     PMI_ReadMe = PMI_Title + " - Read me"
  672.     Cmd_ReadMe = pathBinary$ + FN_ReadMe
  673.  
  674.     CreateProgmanItem PMG_FlagTower, PMI_ReadMe, Cmd_ReadMe , "" , cmoOverwrite
  675.  
  676. end sub
  677.  
  678. FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) STATIC AS INTEGER
  679. 'Check if system have necessary processor and version of Windows running to install Video for Windows
  680.     ''Video for Windows tests
  681.     IF WinMajVer% < 3 OR (WinMajVer% = 3 AND WinMinVer% < 10) THEN
  682.         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)
  683.         END
  684.     END IF
  685.  
  686.     'Prevents installation on 286
  687.     IF ProcType% < 3 THEN
  688.         i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  689.         END
  690.     END IF
  691.  
  692.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  693.     IF OnWindowsNT() THEN
  694.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  695.       IF WowVersion$ = "" THEN
  696.          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)
  697.          END
  698.       END IF
  699.     END IF
  700.  
  701. END FUNCTION
  702.