home *** CD-ROM | disk | FTP | other *** search
/ What PC? 1996 September / WPCSEP96.ISO / setup.mst < prev    next >
Encoding:
Text File  |  1996-05-10  |  23.7 KB  |  701 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& = 11065
  217.  
  218.     s% = fnnGetQTWVersion( qtwVersion& )
  219.  
  220.     if s% = 1 then
  221.         isInstallQTW = 1
  222.  
  223. '$ifdef IsUsingQTUtilities
  224.         AddSectionFilesToCopyList "QuickTime 2.1.1 Utilities", SrcDir$, WinDir$
  225. '$endif
  226.         AddSectionFilesToCopyList "QuickTime 2.1.1 Runtime", SrcDir$, WinSysDir$
  227.     endif
  228.  
  229. '' ------------------------ Copy list for ADS -------------------------
  230.     AddSectionFilesToCopyList "ADS", SrcDir$, WinSysDir$
  231.  
  232. '' ------------------------ Copy list for AAPLAY -------------------------
  233.     AddSectionFilesToCopyList "AAPLAY Animation", SrcDir$, WinSysDir$
  234.  
  235. '$ifdef IsEncrypted
  236.     rem *** Copy list for C-Dilla
  237.  
  238. '$ifdef IsUsingCDillaV1
  239.     AddSectionFilesToCopyList "C-Dilla system", SrcDir$, WinDir$
  240. '$endif
  241.  
  242. '$endif
  243.  
  244.     rem *** Common utilities and system files
  245.  
  246.     AddSectionFilesToCopyList Sect_GenericUtility, SrcDir$, AVDestRoot$
  247.     AddSectionFilesToCopyList Sect_GenericSystem, SrcDir$, WinSysDir$
  248.  
  249.     if not Dir_Group = "" then
  250.         dummy% = setDOSFileAttr( AVDest$ + Dir_Binary + FN_Description, 0, 1 )
  251.  
  252.         AddSectionFilesToCopyList Sect_GenericGroupUtility, SrcDir$, AVDest$
  253.         AddSectionFilesToCopyList Sect_GenericGroupBinary, SrcDir$, AVDest$ + Dir_Binary
  254.     end if
  255.  
  256. '$INCLUDE 'copylist.mst'
  257.  
  258. '' -------- Check space on hard disk --------
  259.     SizeReq& = GetCopyListCost ("","", "")
  260.     IF SizeReq& <> 0 THEN
  261.         GOSUB SMALLWIN
  262.         END
  263.     END IF
  264.  
  265.                               
  266. '' Perform install                              
  267.     Install
  268.  
  269. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  270. '' else, it gives the user the choice
  271.     RESTRT% = RestartListEmpty ()
  272.     Exe$ = WinDir$ + "\_msrstrt.exe"
  273.     Batch$ = WinDir$ + "\_mssetup.bat"
  274.     empty$ = ""
  275.  
  276. RESTART:
  277.     IF RESTRT% = 0 THEN
  278.        sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfo0DlgProc", 0, "")
  279.        IF sz$ = "REACTIVATE" THEN
  280.                GOTO RESTART
  281.        ENDIF
  282.        I% = ExitExecRestart ()
  283.        RemoveFile Exe$, cmoForce
  284.        RemoveFile Batch$, cmoForce
  285.        END
  286.     ELSE
  287.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  288.        IF sz$ = "CONTINUE" THEN
  289.                I% = ExitWindowsExec (Exe$, empty$)                             
  290.                IF I% = 0 THEN
  291.                    GOTO RESTART
  292.                ELSE
  293.                  END
  294.                ENDIF
  295.        ELSEIF sz$ = "EXIT" THEN
  296.                UIPopAll
  297.               END
  298.        ELSEIF sz$ = "REACTIVATE" THEN
  299.                GOTO RESTART
  300.        ELSE
  301.               UIPop 1
  302.        END IF
  303.     END IF
  304.  
  305.  
  306. QUIT:
  307.     ON ERROR GOTO ERRQUIT
  308.  
  309.     IF ERR = 0 THEN
  310.         dlg% = EXITSUCCESS
  311.     ELSEIF ERR = STFQUIT THEN
  312.         dlg% = EXITQUIT
  313.     ELSE
  314.         dlg% = EXITFAILURE
  315.     END IF
  316. QUITL1:
  317.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  318.     IF sz$ = "REACTIVATE" THEN
  319.         GOTO QUITL1
  320.     END IF
  321.     UIPop 1
  322.     END
  323.  
  324. ERRQUIT:
  325.     i% = DoMsgBox("An installation problem occured.", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  326.     END
  327.  
  328.  
  329. ASKQUIT:
  330.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  331.  
  332.     IF sz$ = "EXIT" THEN
  333.         UIPopAll
  334. ''        ERROR STFQUIT
  335.     END
  336.     ELSEIF sz$ = "REACTIVATE" THEN
  337.         GOTO ASKQUIT
  338.     ELSE
  339.         UIPop 1
  340.     END IF
  341.     RETURN
  342.  
  343. SMALLWIN:
  344.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  345.     IF sz$ = "REACTIVATE" THEN
  346.         GOTO SMALLWIN
  347.     END IF
  348.     UIPop 1
  349.     RETURN
  350.           
  351. BADPATH:
  352.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  353.     IF sz$ = "REACTIVATE" THEN
  354.         GOTO BADPATH
  355.     END IF
  356.     UIPop 1
  357.     RETURN
  358.  
  359. '**
  360. '** Purpose:
  361. '**     Performs all installation operations.
  362. '** Arguments:
  363. '**     none.
  364. '** Returns:
  365. '**     none.
  366. '*************************************************************************
  367. SUB Install STATIC           
  368.  
  369.     SetRestartDir WinDir$
  370.     CopyFilesInCopyList
  371.     UpdateWinG32 WinSysDir$
  372.  
  373. ''<-------------------- BACK UP INI FILES HERE !!! ---------------------->
  374.     inia$ = MakePath(WinDir$, "win.ini")
  375.     inib$ = MakePath(WinDir$, "win.ftw")
  376.     CopyFile inia$, inib$, cmoOverwrite, 0
  377.     inia$ = MakePath(WinDir$, "system.ini")
  378.     inib$ = MakePath(WinDir$, "system.ftw")
  379.     CopyFile inia$, inib$, cmoOverwrite, 0
  380.                                                                               
  381.                                                                               
  382. '$ifdef IsEncrypted
  383.     rem *** Copy list for C-Dilla version 2
  384.  
  385.     rem *** C-Dilla v2 not in setup.inf
  386.  
  387. '$ifdef IsUsingCDillaV2
  388.     i% = installCDilla( HwndFrame(), SrcDir$+"_sys\cdilla2", 0 )
  389. '$endif
  390.  
  391. '$endif
  392.  
  393. '$ifdef IsUsingVfW
  394.  
  395.     ''----------------- Update INI files for Video for Windows ---------------
  396.     ''Updating WIN.INI and SYSTEM.INI
  397.     ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  398.  
  399.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  400.         IF VflatdPresent() = 0 THEN
  401.             CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  402.         END IF
  403.     END IF
  404.  
  405.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  406.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  407.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  408.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "IR32.dll", cmoOverwrite
  409.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  410.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  411.     IF I% = 0  THEN
  412.         CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21_r.dll", cmoOverwrite
  413.     END IF
  414.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "ir21_r.dll", cmoOverwrite
  415.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  416.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  417.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  418.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  419.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  420.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  421.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  422.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  423. '$endif
  424.  
  425.     if isInstallQTW = 1 then
  426.  
  427.         rem *** Update INI files for QuickTime
  428.  
  429.         CreateIniKeyValue "win.ini", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  430.         CreateIniKeyValue "win.ini", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  431.         CreateIniKeyValue "win.ini", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  432.         i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(WinSysDir$, "mciqtw.drv"), "SYSTEM.INI")
  433.  
  434.         rem *** Create QTW.INI
  435.         ini$ = MakePath(WinDir$, "qtw.ini")
  436.         CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  437.         RemoveIniKey ini$, "video", "optimize", cmoNone
  438.     endif
  439.  
  440.     rem Compatibility hacks.
  441.     i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "system.ini")
  442.     CreateIniKeyValue "win.ini", "Mach", "DeviceBitmap", "off", cmoOverwrite
  443.  
  444.     rem *** Update INI files for AAPLAY
  445.  
  446.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "FullScreen", "AAVGA.DLL", cmoOverwrite
  447.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "DualScreen", "yes", cmoOverwrite
  448.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "Int2fSwitch", "no", cmoOverwrite
  449.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "WaveAudio", "c,522", cmoOverwrite
  450.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "flc", "Animation1", cmoOverwrite
  451.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "fli", "Animation1", cmoOverwrite
  452.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "aas", "Animation1", cmoOverwrite
  453.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "Animation1", "mciaap.drv", cmoOverwrite
  454.  
  455. '$ifdef IsUsingVfW
  456.  
  457.     ''------ Register Video for Windows components -----
  458.     ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  459.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  460.         Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  461.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  462.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  463.                                    
  464.         '' Mplayer
  465.         CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  466.  
  467.     END IF    ''NT and next version of Windows installation stop here.
  468.  
  469.     Run ("profdisp.exe")  ''Profile display for Video for Windows
  470. '$endif
  471.  
  472. '$INCLUDE 'install.mst'
  473.  
  474. '$ifdef IsUsingMenu
  475.     CreateMenuIcon AVDest$ + Dir_Binary
  476. '$endif
  477.  
  478.     CreateProgmanItem PMG_FlagTower, PMI_Uninstall, AVDestRoot$ + "\uninstal.exe", "", cmoOverwrite
  479. '$ifdef IsUsingOnLineReg
  480.     CreateProgmanItem PMG_FlagTower, PMI_OnLineReg, AVDestRoot$ + "\onlinreg.exe", "", cmoOverwrite
  481. '$endif
  482.  
  483.     i% = CallModifyCONFIG( HwndFrame() )
  484.  
  485. REM        Run( "notepad  " + SrcDir$ + "readme.txt" )
  486.  
  487. END SUB
  488.                                                                                               
  489. ' -------------------------------------------------------------------------------------------- 
  490. ' -------------------------------------------------------------------------------------------- 
  491. ' -------------------------------------------------------------------------------------------- 
  492. ' Miscellaneous Functions 
  493. ' -------------------------------------------------------------------------------------------- 
  494.  
  495. '**
  496. '** Purpose:
  497. '**     Appends a file name to the end of a directory path,
  498. '**     inserting a backslash character as needed.
  499. '** Arguments:
  500. '**     szDir$  - full directory path (with optional ending "\")
  501. '**     szFile$ - filename to append to directory
  502. '** Returns:
  503. '**     Resulting fully qualified path name.
  504. '*************************************************************************
  505. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  506.     IF szDir$ = "" THEN
  507.         MakePath = szFile$
  508.     ELSEIF szFile$ = "" THEN
  509.         MakePath = szDir$
  510.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  511.         MakePath = szDir$ + szFile$
  512.     ELSE
  513.         MakePath = szDir$ + "\" + szFile$
  514.     END IF
  515. END FUNCTION
  516.  
  517. SUB UpdateWinG32(szOrig$) STATIC
  518.     '
  519.     ' Check the version of wing32.dll since cannot get version
  520.     ' checking for Win32 apps from Win16
  521.     '
  522.     FileNew$  = MakePath(szOrig$, "wing32.dll")
  523.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  524.  
  525.     IF IsWin32FileNewer(FileOrig$, FileNew$) THEN
  526.         RemoveFile FileOrig$, cmoForce
  527.     ELSE
  528.         RemoveFile FileNew$, cmoForce
  529.         RenameFilePlease FileOrig$, FileNew$
  530.     END IF
  531. END SUB                                                                
  532.                                                         
  533.                                                      
  534. FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) STATIC AS INTEGER
  535.  
  536.     ramSize% = getSystemRAM()
  537.     ramSizeStr$ = str$( ramSize% )
  538.     ramSizeStr$ = ltrim$( ramSizeStr$ )
  539.  
  540.     CreateIniKeyValue szINI$, "METRICS", "CDROM", szCD$ , cmoOverwrite
  541.     CreateIniKeyValue szINI$, "METRICS", "RAM", ramSizeStr$, cmoOverwrite
  542.     CreateIniKeyValue szINI$, "METRICS", "VOLUME", "5" , cmoOverwrite
  543.  
  544.     CreateIniKeyValue szINI$, "DBPATH", "ROUTING", szDbPath$+"\ROUTING.MBF" , cmoOverwrite
  545.     CreateIniKeyValue szINI$, "DBPATH", "RUNTIME", szDbPath$+"\RUNTIME.MBF" , cmoOverwrite
  546.     CreateIniKeyValue szINI$, "DBPATH", "UNITBASE", szDbPath$+"\UNITBASE.MBF" , cmoOverwrite
  547.     CreateIniKeyValue szINI$, "DBPATH", "FILEBASE", szDbPath$+"\FILEBASE.MBF" , cmoOverwrite
  548.     CreateIniKeyValue szINI$, "DBPATH", "TIMELINE", szDbPath$+"\TL_BASE.MBF" , cmoOverwrite
  549.     CreateIniKeyValue szINI$, "DBPATH", "GCACHE", szDbPath$+"\GCACHE.MBF" , cmoOverwrite
  550.  
  551.     CreateTitleINIFile = 0                                              
  552.     
  553. END FUNCTION                                               
  554.  
  555. sub CopyTitleBinaries(pathBinary$, sectBinary$, sectCDilla$, sectEngine$, sectAccusoft$ ) static
  556.  
  557.     rem *** Copy list for Accusoft Pro Gold
  558.  
  559.     AddSectionFilesToCopyList sectAccusoft$, SrcDir$, pathBinary$
  560.  
  561. '$ifdef IsEncrypted
  562.     rem *** Copy list for C-Dilla
  563.  
  564. rem    AddSectionFilesToCopyList Sect_CDillaSystem, SrcDir$, WinDir$
  565.     AddSectionFilesToCopyList sectCDilla$, SrcDir$, pathBinary$
  566. '$endif
  567.  
  568.     rem *** Copy list for AV ENGINE
  569.  
  570.     AddSectionFilesToCopyList sectEngine$, SrcDir$, pathBinary$
  571.  
  572.     rem *** Copy list for title
  573.  
  574.     AddSectionFilesToCopyList sectBinary$, SrcDir$, pathBinary$
  575.  
  576.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 0, 1 )
  577.  
  578. end sub
  579.  
  580. sub CopyTitleDatabase(pathDatabase$, sectDatabase$ ) static
  581.  
  582.     AddSectionFilesToCopyList sectDatabase$, SrcDir$, pathDatabase$
  583.  
  584. end sub
  585.  
  586. sub InstallTitle( pathRoot$, pathBinary$, pathDatabase$, iniFile$, dllFile$, iconNo$ ) static
  587.  
  588.     CDDrive$ = MID$(SrcDir$,1,1)          
  589.  
  590.     CreateDir pathRoot$, cmoNone
  591.     CreateDir pathBinary$, cmoNone
  592.     CreateDir pathDatabase$, cmoNone
  593.     dummy% = CreateTitleINIFile( pathBinary$+"\"+iniFile$, CDDrive$, pathDatabase$ )
  594.  
  595.     rem *** Change file attribute of 'flagtowr.ttl' to Read-only+Hidden
  596.  
  597.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 3, 1 )
  598.  
  599.     rem *** create unitdb.mbf in title database directory to aid performance
  600.  
  601. rem    CopyFile pathDatabase+"\unitbase.mbf", pathDatabase+"\unitdb.mbf", cmoOverwrite, 0
  602.  
  603. end sub
  604.  
  605. sub CreateMenuIcon( pathBinary$ ) static
  606.  
  607.     dim    PMI_Title as string
  608.  
  609.     PMI_Title = string$( 110, 32 )
  610.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  611.  
  612.     rem *** Create Program Manager Group
  613.  
  614.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  615.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  616.     
  617.     rem *** Create Icon(s)
  618.  
  619.     s% = pmDeleteItem( PMI_Title )
  620.  
  621.     CreateProgmanItem PMG_FlagTower, PMI_Title, AVDest$ + "\prommenu.exe" + " " + AVDest$, "", cmoOverwrite
  622.  
  623. end sub
  624.  
  625. sub CreateTitleIcon( pathBinary$, dllFile$, iconNo$ ) static
  626.  
  627.     dim    PMI_Title as string
  628.     dim    PMI_ReadMe as string
  629.     dim    Cmd_ReadMe as string
  630.  
  631.     PMI_Title = string$( 110, 32 )
  632.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  633.  
  634.     rem *** Create Program Manager Group
  635.  
  636.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  637.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  638.     
  639.     rem *** Create Icon(s)
  640.  
  641.     s% = pmDeleteItem( PMI_Title )
  642.  
  643.     TitleDLL$ = pathBinary$+"\"+dllFile$
  644.     Launch$   = pathBinary$+"\LAUNCH.EXE "
  645.  
  646.     if len( iconNo$ ) = 1 then
  647.  
  648. '$ifdef IsEncrypted
  649.         Other$    = pathBinary$+"\ZLAUNCH.EXE "
  650. '$else
  651.         Other$    = Launch$
  652. '$endif
  653.  
  654.         Other$    = Other$ + "," + iconNo$
  655.  
  656.     else
  657.  
  658.         Other$ = pathBinary$ + iconNo$ + ",0"
  659.  
  660.     end if
  661.  
  662.     Other$ = Other$ + ",0,0," + pathBinary$
  663.  
  664.     rem *** Icon for title
  665.  
  666.     CreateProgmanItem PMG_FlagTower, PMI_Title, Launch$+TitleDLL$, Other$, cmoOverwrite
  667.  
  668.     rem *** Icon for readme
  669.  
  670.     PMI_ReadMe = PMI_Title + " - Read me"
  671.     Cmd_ReadMe = pathBinary$ + FN_ReadMe
  672.  
  673.     CreateProgmanItem PMG_FlagTower, PMI_ReadMe, Cmd_ReadMe , "" , cmoOverwrite
  674.  
  675. end sub
  676.  
  677. FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) STATIC AS INTEGER
  678. 'Check if system have necessary processor and version of Windows running to install Video for Windows
  679.     ''Video for Windows tests
  680.     IF WinMajVer% < 3 OR (WinMajVer% = 3 AND WinMinVer% < 10) THEN
  681.         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)
  682.         END
  683.     END IF
  684.  
  685.     'Prevents installation on 286
  686.     IF ProcType% < 3 THEN
  687.         i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  688.         END
  689.     END IF
  690.  
  691.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  692.     IF OnWindowsNT() THEN
  693.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  694.       IF WowVersion$ = "" THEN
  695.          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)
  696.          END
  697.       END IF
  698.     END IF
  699.  
  700. END FUNCTION
  701.