home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Madness / VRMAD96_ONE.ISO / pmorph / setup.mst < prev    next >
Text File  |  1995-08-22  |  13KB  |  432 lines

  1. '**************************************************************************
  2. '*                  VfW 1.1 Runtime Setup
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG        '' debug flag
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'mscpydis.inc'    ''System
  9. '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  10.  
  11. ''Dialog ID's
  12. CONST WELCOME       = 100
  13. CONST ASKQUIT       = 200
  14. CONST DESTPATH      = 300
  15. CONST EXITFAILURE   = 400
  16. CONST EXITQUIT      = 600
  17. CONST EXITSUCCESS   = 700
  18. CONST APPHELP       = 900
  19. CONST CHECK         = 2500
  20. CONST SMALLWIN      = 2200
  21. CONST RESTART       = 2600
  22. CONST RESTARTII     = 2700
  23. CONST BADPATH       = 6400
  24.  
  25. ''Bitmap ID
  26. CONST LOGO = 1
  27.  
  28. '' space needed for PhotoMorph installation (4 Mb)
  29. CONST PM2DISK    = 4068
  30. GLOBAL DiskSpace&
  31. GLOBAL SizeReq&  '' Total Disk Size required for installation
  32.  
  33. GLOBAL SrcDir$
  34. GLOBAL PMODEST$
  35.  
  36. ''File Types
  37. GLOBAL WinDir$
  38. GLOBAL WinSysDir$
  39. GLOBAL WINDRIVE$    ''Windows Drive Letter.
  40. GLOBAL CHECKSTATES$
  41.  
  42. DECLARE SUB Install
  43. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  44. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  45. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  46. DECLARE SUB Reboot LIB "iniupd.dll"
  47. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  48.  
  49. INIT:
  50.  
  51.     CUIDLL$ = "mscuistf.dll"            '' Custom user interface dll
  52.     NCSCUI$ = "ncscui.dll"                '' NCS CUI dll
  53.     HELPPROC$ = "FHelpDlgProc"          '' Help dialog procedure
  54.     
  55.     WIN32ENABLED% = 0
  56.     MajorVer% = GetWindowsMajorVersion()
  57.     MinorVer% = GetWindowsMinorVersion()
  58.  
  59.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  60.         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)
  61.         END
  62.     END IF
  63.  
  64.     IF OnWindowsNT() THEN
  65.         i% = DoMsgBox("This version of Video for Windows does not run on Windows NT.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  66.         END
  67.     END IF
  68.  
  69. ''    check disk space
  70. ''    DiskSpace& = GetFreeSpaceForDrive(PMODEST$)
  71. ''    IF DiskSpace& < PM2DISK then
  72. ''        i% = DoMsgBox("This disk does not have sufficient space to Install PhotoMorph, 3MB is required.", "Insufficient Space", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  73. ''        END
  74. ''    END IF
  75.  
  76.     SetBitmap NCSCUI$, LOGO
  77.     SetTitle "PhotoMorph 2.02"
  78.  
  79.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  80.     IF szInf$ = "" THEN
  81.        szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  82.     END IF
  83.     ReadInfFile szInf$
  84.  
  85.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  86.  
  87. WELCOME1:
  88.  
  89.     sz$ = UIStartDlg(NCSCUI$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  90.     IF sz$ = "CONTINUE" THEN
  91.         UIPop 1
  92.     ELSE
  93.         GOSUB NCSASKQUIT
  94.         GOTO WELCOME1
  95.     END IF
  96.  
  97. '' Get PhotoMorph Directory
  98.     PMODEST$ = "C:\PMORPH2"
  99.     GOSUB GETPATH
  100.  
  101. '' Prepare Copy list and check size
  102.  
  103.     ClearCopyList
  104.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  105.     WinDir$ = GetWindowsDir()
  106.     DEST$ = GetWindowsDir()
  107.     WinSysDir$ = GetWindowsSysDir()
  108.  
  109. ''  Runtime files (on Windows disk)
  110.  
  111.     AddSectionFilesToCopyList "Delete Files", SrcDir$, PMODEST$
  112.     AddSectionFilesToCopyList "PhotoMorph 2 Program", SrcDir$, PMODEST$
  113.     AddSectionFilesToCopyList "PhotoMorph 2 Projects", SrcDir$, PMODEST$
  114.     AddSectionFilesToCopyList "PM Disk 2", SrcDir$, PMODEST$
  115.     AddSectionFilesToCopyList "PhotoMorph 2 Images", SrcDir$, PMODEST$
  116.  
  117.  
  118. ''  Check windrive diskspace
  119.     SizeReq& = GetCopyListCost ("","", "")
  120.     IF SizeReq& <> 0 THEN
  121.         i% = DoMsgBox("This disk does not have sufficient space to Install PhotoMorph, 3MB is required.", "Insufficient Space", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  122.         END
  123.     END IF
  124.  
  125.     CopyFilesInCopyList
  126.  
  127. ''    sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  128. ''    ClearCopyList
  129. ''    AddSectionFilesToCopyList "PM Disk 2", SrcDir$, PMODEST$
  130. ''    CopyFilesInCopyList
  131.  
  132.     CreateProgmanGroup "PhotoMorph 2", "", cmoNone
  133.     ShowProgmanGroup   "PhotoMorph 2",  1, cmoNone
  134.  
  135.     CreateProgmanItem "PhotoMorph 2", "PhotoMorph 2", PMODEST$ + "\pmorph.exe ", "", cmoOverwrite
  136.     CreateProgmanItem "PhotoMorph 2", "Read Me", PMODEST$ + "\readme.wri ", "", cmoOverwrite
  137.     CreateProgmanItem "PhotoMorph 2", "PhotoMorph 2 Manual", PMODEST$ + "\manual.pdf", PMODEST$ + "\manual.ico", cmoOverwrite
  138.     CreateProgmanItem "PhotoMorph 2", "Cool Products", PMODEST$ + "\pmorder.wri ", "", cmoOverwrite
  139.  
  140.    GOTO QUIT
  141.    '' Terminate without installing VFW for Virtual Reality Madness 
  142.  
  143. '' Starting Video For Windows Installation Here...
  144.  
  145.  
  146.     SetBitmap CUIDLL$, LOGO
  147.     SetTitle "Video For Windows 1.1A"
  148.  
  149. WELCOME:
  150.  
  151.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  152.     IF sz$ = "CONTINUE" THEN
  153.        UIPop 1
  154.     ELSE
  155.  
  156.         '' Get the PhotoMorph Files on the second disk
  157.         ClearCopyList
  158.         AddSectionFilesToCopyList "PM Disk 2", SrcDir$, PMODEST$
  159.         CopyFilesInCopyList
  160.  
  161.         GOSUB ASKQUIT
  162.         GOTO WELCOME
  163.     END IF
  164.  
  165. ''Prepare Copy list and check size
  166.  
  167.     ClearCopyList
  168.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  169.     WinDir$ = GetWindowsDir()
  170.     DEST$ = GetWindowsDir()
  171.     WinSysDir$ = GetWindowsSysDir()
  172.     
  173.     '' Make sure we get the VFW files on disk 1 first
  174.     AddSectionFilesToCopyList "VFW Disk 1",  SrcDir$, WinSysDir$
  175.  
  176. ''  Check windrive diskspace
  177.     SizeReq& = GetCopyListCost ("","", "")
  178.     IF SizeReq& <> 0 THEN
  179.         GOSUB SMALLWIN
  180.         END
  181.     END IF
  182.     CopyFilesInCopyList
  183.  
  184.     ClearCopyList
  185.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  186.     AddSectionFilesToCopyList "OLE2",         SrcDir$, WinSysDir$
  187.     AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WinSysDir$
  188.     AddSectionFilesToCopyList "MPlayer",     SrcDir$, WinDir$
  189.     AddSectionFilesToCopyList "AVICodecs",     SrcDir$, WinSysDir$
  190.     AddSectionFilesToCopyList "Indeo-ini",     SrcDir$, WinDir$
  191.  
  192. ''  Check windrive diskspace
  193.     SizeReq& = GetCopyListCost ("","", "")
  194.     IF SizeReq& <> 0 THEN
  195.         GOSUB SMALLWIN
  196.         END
  197.     END IF
  198.  
  199. Install
  200.  
  201. '' Restart Windows: if it has to update ACM from DOS, it restarts Windows 
  202. '' automatically else, it gives the user the choice.
  203.  
  204.     RESTRT% = RestartListEmpty ()
  205.     Exe$ = DEST$ + "\_msrstrt.exe"
  206.     Batch$ = DEST$ + "\_mssetup.bat"
  207.     empty$ = ""
  208.  
  209. RESTART:
  210.  
  211.     IF RESTRT% = 0 THEN
  212.         sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  213.         IF sz$ = "REACTIVATE" THEN
  214.             GOTO RESTART
  215.         ENDIF
  216.         I% = ExitExecRestart ()
  217.         RemoveFile Exe$, cmoForce
  218.         RemoveFile Batch$, cmoForce
  219.         END
  220.     ELSE
  221.         sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  222.         IF sz$ = "CONTINUE" THEN
  223.             I% = ExitWindowsExec (Exe$, empty$)
  224.             IF I% = 0 THEN
  225.                 GOTO RESTART
  226.             ELSE
  227.                 END
  228.             ENDIF
  229.         ELSEIF sz$ = "EXIT" THEN
  230.             UIPopAll
  231.             END
  232.         ELSEIF sz$ = "REACTIVATE" THEN
  233.             GOTO RESTART
  234.         ELSE
  235.             UIPop 1
  236.         END IF
  237.     END IF
  238.  
  239. QUIT:
  240.  
  241.     ON ERROR GOTO ERRQUIT
  242.  
  243.     IF ERR = 0 THEN
  244.         dlg% = EXITSUCCESS
  245.     ELSEIF ERR = STFQUIT THEN
  246.         dlg% = EXITQUIT
  247.     ELSE
  248.         dlg% = EXITFAILURE
  249.     END IF
  250.  
  251. QUITL1:
  252.  
  253.     sz$ = UIStartDlg(NCSCUI$, dlg%, "FInfo0DlgProc", 0, "")
  254.     IF sz$ = "REACTIVATE" THEN
  255.         GOTO QUITL1
  256.     END IF
  257.     UIPop 1
  258.     END
  259.  
  260. ERRQUIT:
  261.  
  262.     i% = DoMsgBox("An installation problem occured, call the product support service", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  263.     END
  264.  
  265. ASKQUIT:
  266.  
  267.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  268.  
  269.     IF sz$ = "EXIT" THEN
  270.         UIPopAll
  271. ''        ERROR STFQUIT
  272.         END
  273.     ELSEIF sz$ = "REACTIVATE" THEN
  274.         GOTO ASKQUIT
  275.     ELSE
  276.         UIPop 1
  277.     END IF
  278.     RETURN
  279.  
  280. SMALLWIN:
  281.  
  282.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  283.     IF sz$ = "REACTIVATE" THEN
  284.         GOTO SMALLWIN
  285.     END IF
  286.     UIPop 1
  287.     RETURN
  288.  
  289. '**
  290. '** Purpose:
  291. '**     Performs all installation operations.
  292. '** Arguments:
  293. '**     none.
  294. '** Returns:
  295. '**     none.
  296. '*************************************************************************
  297. SUB Install STATIC
  298.  
  299.     SetRestartDir WinDir$
  300.     CopyFilesInCopyList
  301.  
  302.     '' Get the PhotoMorph Files on the second disk
  303.     ClearCopyList
  304.     AddSectionFilesToCopyList "PM Disk 2", SrcDir$, PMODEST$
  305.     CopyFilesInCopyList
  306.  
  307. ''Updating WIN.INI and SYSTEM.INI
  308.     IF VflatdPresent() = 0 THEN
  309.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  310.     END IF
  311.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  312.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  313.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "indeov.drv", cmoOverwrite
  314.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  315.     I% = DoesIniKeyExist (WinDir$ + "system.ini", "Drivers", "VIDC.RT21")
  316.     IF I% = 0  THEN
  317.        CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "indeov.drv", cmoOverwrite
  318.     END IF
  319.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "indeov.drv", cmoOverwrite
  320.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  321.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  322.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  323.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  324.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  325.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  326.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  327.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  328.     Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  329.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  330.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  331.  
  332. '' Mplayer
  333.     CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  334.  
  335.     Run ("profdisp.exe")   
  336.  
  337. END SUB
  338.  
  339. '**
  340. '** Purpose:
  341. '**     Appends a file name to the end of a directory path,
  342. '**     inserting a backslash character as needed.
  343. '** Arguments:
  344. '**     szDir$  - full directory path (with optional ending "\")
  345. '**     szFile$ - filename to append to directory
  346. '** Returns:
  347. '**     Resulting fully qualified path name.
  348. '*************************************************************************
  349. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  350.     IF szDir$ = "" THEN
  351.         MakePath = szFile$
  352.     ELSEIF szFile$ = "" THEN
  353.         MakePath = szDir$
  354.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  355.         MakePath = szDir$ + szFile$
  356.     ELSE
  357.         MakePath = szDir$ + "\" + szFile$
  358.     END IF
  359. END FUNCTION
  360.  
  361. GETPATH:
  362.     SetSymbolValue "EditTextIn", PMODEST$
  363.     SetSymbolValue "EditFocus", "END"
  364. GETPATHL1:
  365.     sz$ = UIStartDlg(NCSCUI$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  366.  
  367.     IF sz$ = "CONTINUE" THEN
  368.         olddest$ = PMODEST$
  369.         PMODEST$ = GetSymbolValue("EditTextOut")
  370.  
  371.         ''Validate new path.
  372.         IF IsDirWritable(PMODEST$) = 0 THEN
  373.             GOSUB BADPATH
  374.             GOTO GETPATHL1
  375.         END IF
  376.         UIPop 1
  377.  
  378.         ''Truncate display if too long.
  379. ''        IF LEN(DEST$) > 23 THEN
  380. ''            ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  381. ''        ELSE
  382. ''            ReplaceListItem DRIVETEXT$, 7, DEST$
  383. ''        END IF
  384.  
  385.         ''Recalc if path changed.
  386.         IF (olddest$ <> PMODEST$) AND (olddest$ <> PMODEST$+"\") AND (olddest$+"\" <> PMODEST$) THEN
  387. ''          RecalcPath
  388. ''          SetDriveStatus
  389.         END IF
  390.  
  391.         olddest$ = ""
  392. ''        GOTO CUSTINST
  393.         RETURN
  394.     ELSEIF sz$ = "REACTIVATE" THEN
  395. ''        RecalcPath
  396. ''        SetDriveStatus
  397. ''        GOTO GETPATHL1
  398.         RETURN
  399.     ELSEIF sz$ = "EXIT" THEN
  400.         GOSUB NCSASKQUIT
  401.         GOTO GETPATHL1
  402.     ELSE
  403.         UIPop 1
  404.         RETURN
  405. ''        GOTO CUSTINST
  406.     END IF
  407.  
  408.     RETURN
  409.  
  410. BADPATH:
  411.     sz$ = UIStartDlg(NCSCUI$, BADPATH, "FInfo0DlgProc", 0, "")
  412.     IF sz$ = "REACTIVATE" THEN
  413. ''        RecalcPath
  414. ''        SetDriveStatus
  415.         GOTO BADPATH
  416.     END IF
  417.     UIPop 1
  418.     RETURN
  419.  
  420. NCSASKQUIT:
  421.     sz$ = UIStartDlg(NCSCUI$, ASKQUIT, "FQuitDlgProc", 0, "")
  422.  
  423.     IF sz$ = "EXIT" THEN
  424.         UIPopAll
  425.         ERROR STFQUIT
  426.     ELSEIF sz$ = "REACTIVATE" THEN
  427.         GOTO NCSASKQUIT
  428.     ELSE
  429.         UIPop 1
  430.     END IF
  431. RETURN
  432.