home *** CD-ROM | disk | FTP | other *** search
/ The Sistine Chapel / The Sistine Chapel.iso / setfiles / setup.mst < prev    next >
Encoding:
Text File  |  1996-08-08  |  11.1 KB  |  447 lines

  1. '$DEFINE DEBUG   ''Define for script development/debugging
  2.  
  3. '$INCLUDE 'setupapi.inc'
  4. '$INCLUDE 'msdetect.inc'
  5. '$INCLUDE 'setst.inc'
  6.  
  7. ''Dialog ID's
  8. CONST ASKQUIT      = 200
  9. CONST DESTPATH     = 300
  10. CONST EXITFAILURE  = 400
  11. CONST EXITQUIT     = 600
  12. CONST EXITSUCCESS  = 700
  13. CONST OPTIONS      = 800
  14. CONST APPHELP      = 900
  15. CONST RESTART      = 2600
  16. CONST RESTARTII    = 2700
  17. CONST CUSTINST     = 6200
  18. CONST TELEINST     = 6250
  19. CONST TOOBIG       = 6300
  20. CONST BADPATH      = 6400
  21.  
  22. ''Bitmap ID
  23. CONST LOGO         = 1
  24.  
  25. ''File Types
  26. CONST APPFILES     = 1
  27. CONST OPTFILES1    = 2
  28. CONST OPTFILES2    = 3
  29.  
  30. GLOBAL SRCDIR$
  31. GLOBAL isvhd$
  32. GLOBAL DEST$        ''Default destination directory.
  33. GLOBAL WINDRIVE$    ''Windows drive letter.
  34. GLOBAL WINDIR$
  35. GLOBAL WINSYSDIR$
  36. GLOBAL TBKDIR$
  37. GLOBAL SndDIR$
  38. GLOBAL SndZiel$
  39. GLOBAL TBKDEST$
  40. GLOBAL NEEDET&
  41. GLOBAL DRVSPACE&
  42. GLOBAL tb15Path$
  43.  
  44. '' Driver 
  45. CONST ADDVFW            = 1
  46. GLOBAL VFWPATH$
  47.  
  48.  
  49. ''CustInst list symbol names
  50.  
  51. ''Dialog list symbol names
  52. GLOBAL STATUSTEXT$
  53. GLOBAL DRIVETEXT$
  54.  
  55.  
  56. DECLARE SUB BuildCopyList
  57. DECLARE SUB CalculateCopyList
  58. DECLARE SUB SetDriveStatus
  59. DECLARE SUB RegisterEntries
  60. DECLARE SUB CreateIniEntries
  61. DECLARE SUB SetupProgman
  62.  
  63. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  64.  
  65. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  66. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  67. DECLARE SUB Reboot LIB "iniupd.dll"
  68. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  69. DECLARE FUNCTION vhdinstall  AS STRING
  70.  
  71.  
  72. TRAP CleanupTrap From "MSSHLSTF.DLL"
  73.  
  74. End Trap           
  75.     
  76.  
  77.  
  78.     Inst% = HinstFrame()
  79.  
  80.  
  81.     ii% = CreateCover(0, 0, 0, 0, 0)
  82.     
  83.     ret% = Ctl3dRegister(Inst%)
  84.     ret% = Ctl3dAutoSubClass(Inst%)
  85.  
  86.     hSetup = InitSetup(COMMAND$)
  87.     hWnd% = HwndFrame()
  88.     ret% = SubSetMainWin(hWnd%)
  89.     
  90.     ii% = CloseCover()
  91.  
  92.  
  93.     WIN32ENABLED% = 0
  94.     MajorVer% = GetWindowsMajorVersion()
  95.     MinorVer% = GetWindowsMinorVersion()
  96.  
  97.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  98.     i% = DoMsgBox("Microsoft Windows version 3.10 is required to run this program.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  99.     END
  100.     END IF
  101.  
  102.     
  103.     IF DeviceColor() <= 256 THEN
  104.        ii% = DoMsgBox("Please, modify your window setup in order to display 32,000 colors or higher", "Hardware", MB_OK)
  105.     END IF
  106.  
  107.  
  108. ON ERROR GOTO QUIT
  109.  
  110. INIT:
  111.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  112.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  113.     SetTitle "The Sistine Chapel"
  114.     VFWPATH$ = "VFW"
  115.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  116.     IF szInf$ = "" THEN
  117.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  118.     END IF
  119.  
  120.     ReadInfFile szInf$
  121.  
  122.     WINDRIVE$ = UCASE$(MID$(GetWindowsDir, 1, 1))
  123.     DEST$ = WINDRIVE$ + ":\sistine"
  124.     WINDIR$ = GetWindowsDir()
  125.     WINSYSDIR$ = GetWindowsSysDir()
  126.  
  127.     ''CustInst list symbols
  128.  
  129.     STATUSTEXT$  = "StatusItemsText"
  130.     DRIVETEXT$   = "DriveStatusText"
  131.  
  132.     
  133.     FOR i% = 1 TO 3 STEP 1
  134.     AddListItem STATUSTEXT$, ""
  135.     NEXT i%
  136.  
  137.     FOR i% = 1 TO 2 STEP 1
  138.     AddListItem DRIVETEXT$, ""
  139.     NEXT i%
  140.  
  141.     ReplaceListItem DRIVETEXT$, 2, DEST$
  142.     
  143.     SetDriveStatus
  144.  
  145.  
  146. CUSTINST:
  147.     sz$ = UIStartDlg(CUIDLL$, TELEINST, "FTeleInstDlgProc", APPHELP, HELPPROC$)
  148.  
  149.     IF sz$ = "CONTINUE" THEN
  150.     ''Install only if it will fit.
  151.         BuildCopyList
  152.         CalculateCopyList
  153.         IF NEEDET& <> 0 THEN
  154.             GOSUB TOOBIG
  155.             GOTO CUSTINST
  156.         END IF
  157.     UIPop 1
  158.     GOTO INSTALL
  159.     ELSEIF sz$ = "PATH" THEN
  160.     GOTO GETPATH
  161.     ELSEIF sz$ = "REACTIVATE" THEN
  162.     SetDriveStatus
  163.     GOTO CUSTINST
  164.     ELSE
  165.     GOSUB ASKQUIT
  166.     GOTO CUSTINST
  167.     END IF
  168.  
  169.  
  170.  
  171. INSTALL:
  172.     CreateDir DEST$, cmoNone
  173.    
  174.     BuildCopyList
  175.     CopyFilesInCopyList
  176.     CreateIniEntries
  177.     RegisterEntries
  178.     SetupProgman
  179.  
  180.  
  181.     RESTRT% = RestartListEmpty ()
  182.     Exe$ = DEST$ + "\_msrstrt.exe"
  183.     Batch$ = DEST$ + "\_mssetup.bat"
  184.     empty$ = ""
  185.     
  186.  RESTART:
  187. IF RESTRT% = 0 THEN
  188.     sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  189.     IF sz$ = "REACTIVATE" THEN
  190.         GOTO RESTART
  191.     ENDIF
  192.     I% = ExitExecRestart ()
  193.     RemoveFile Exe$, cmoForce
  194.     RemoveFile Batch$, cmoForce
  195.     END
  196. ELSE
  197.     sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  198.     IF sz$ = "CONTINUE" THEN
  199.         I% = ExitWindowsExec (Exe$, empty$)
  200.         IF I% = 0 THEN
  201.             GOTO RESTART
  202.         ELSE
  203.             END
  204.         ENDIF
  205.     ELSEIF sz$ = "EXIT" THEN
  206.         UIPopAll
  207.         END
  208.     ELSEIF sz$ = "REACTIVATE" THEN
  209.         GOTO RESTART
  210.     ELSE
  211.         UIPop 1
  212.     END IF
  213. END IF
  214.  
  215.  
  216. QUIT:
  217.     ''ON ERROR GOTO ERRQUIT
  218.  
  219.     IF ERR = 0 THEN
  220.     dlg% = EXITSUCCESS
  221.     ELSEIF ERR = STFQUIT THEN
  222.     dlg% = EXITQUIT
  223.     ELSE
  224.     dlg% = EXITQUIT          ''EXITFAILURE
  225.     END IF
  226.  
  227.  
  228. ERRQUIT:
  229.     i% = DoMsgBox("The Sistine Chapel is not installed properly!", "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  230.     END
  231.  
  232.  
  233.  
  234. GETPATH:
  235.     SetSymbolValue "EditTextIn", DEST$
  236.     SetSymbolValue "EditFocus", "END"
  237. GETPATHL1:
  238.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  239.  
  240.     IF sz$ = "CONTINUE" THEN
  241.     olddest$ = DEST$
  242.     DEST$ = GetSymbolValue("EditTextOut")
  243.  
  244.     ''Validate new path.
  245.     IF IsDirWritable(DEST$) = 0 THEN
  246.         GOSUB BADPATH
  247.         GOTO GETPATHL1
  248.     END IF
  249.     UIPop 1
  250.  
  251.     ''Truncate display if too long.
  252.     IF LEN(DEST$) > 23 THEN
  253.         ReplaceListItem DRIVETEXT$, 2, MID$(DEST$, 1, 23)+"..."
  254.     ELSE
  255.         ReplaceListItem DRIVETEXT$, 2, DEST$
  256.     END IF
  257.  
  258.     ''Recalc if path changed.
  259.     IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  260.         SetDriveStatus
  261.     END IF
  262.  
  263.     olddest$ = ""
  264.     GOTO CUSTINST
  265.     ELSEIF sz$ = "REACTIVATE" THEN
  266.     SetDriveStatus
  267.     GOTO GETPATHL1
  268.     ELSEIF sz$ = "EXIT" THEN
  269.     GOSUB ASKQUIT
  270.     GOTO GETPATHL1
  271.     ELSE
  272.     UIPop 1
  273.     GOTO CUSTINST
  274.     END IF
  275.  
  276.  
  277.  
  278. TOOBIG:
  279.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  280.     IF sz$ = "REACTIVATE" THEN
  281.     SetDriveStatus
  282.     GOTO TOOBIG
  283.     END IF
  284.     UIPop 1
  285.     RETURN
  286.  
  287.  
  288.  
  289. BADPATH:
  290.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  291.     IF sz$ = "REACTIVATE" THEN
  292.     SetDriveStatus
  293.     GOTO BADPATH
  294.     END IF
  295.     UIPop 1
  296.     RETURN
  297.  
  298.  
  299.  
  300. ASKQUIT:
  301.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  302.  
  303.     IF sz$ = "EXIT" THEN
  304.     UIPopAll
  305.     ERROR STFQUIT
  306.     ELSEIF sz$ = "REACTIVATE" THEN
  307.     GOTO ASKQUIT
  308.     ELSE
  309.     UIPop 1
  310.     END IF
  311.     RETURN
  312.  
  313.  
  314.  
  315. SUB CalculateCopyList STATIC
  316.     NEEDET& = GetCopyListCost("", "", "")   
  317. END SUB
  318.  
  319. SUB SetupProgman STATIC
  320.     '' Todo Add Progman Commands
  321.  
  322.     CreateProgmanGroup "MUSEI VATICANI", "", cmoOverwrite
  323.     ShowProgmanGroup "MUSEI VATICANI", 1, cmoNone
  324.     CreateProgmanItem "MUSEI VATICANI", "THE SISTINE CHAPEL", MakePath(DEST$,"sistina.exe"),MakePath(DEST$,"sistina.ico"), cmoOverwrite 
  325.  
  326. END SUB
  327.  
  328. SUB BuildCopyList STATIC
  329.  
  330.     SRCDIR$  = GetSymbolValue("STF_SRCDIR")
  331.     TBSRC$   = MakePath(SRCDIR$, TBKDIR$)        
  332.     sndSRC$  = MakePath(SRCDIR$, sndDIR$)        
  333.     snddest$ = MakePath(Dest$, SndZiel$)         
  334.     TBKDEST$ = MakePath(WINDIR$, "asym\runtime\")        
  335.     source$ = MakePath(srcdir$, "files\")        
  336.  
  337.     ClearCopyList
  338.         addsectionFilesToCopyList "DEFAULT", SOURCE$, DEST$
  339.         addsectionFilesToCopyList "SISTEM", SOURCE$, WINSYSDIR$
  340.         ''addsectionFilesToCopyList "WINDO", SOURCE$, WINDIR$
  341.     IF ADDVFW <> 0 THEN                        
  342.     '' Video for Windows Files
  343.  
  344.     VFWSRC$= MakePath(SRCDIR$, VFWPATH$)    
  345.     addsectionFilesToCopyList "VfW Runtime", VFWSRC$, WINSYSDIR$
  346.     addsectionFilesToCopyList "OLE2", VFWSRC$, WINSYSDIR$
  347.     addsectionFilesToCopyList "ACM Drivers", VFWSRC$, WINSYSDIR$
  348.     addsectionFilesToCopyList "MPlayer", VFWSRC$, WINDIR$
  349.     addsectionFilesToCopyList "AVICodecs", VFWSRC$, WINSYSDIR$
  350.  
  351.     END IF
  352. END SUB
  353.  
  354.  
  355. SUB CreateIniEntries STATIC
  356.  
  357.     '' Default Entries
  358.  ini$ = MakePath(dest$, "\sistina.INI")
  359.  
  360.     CreateIniKeyValue Dest$ + "\sistina.INI","parameters", "data", dest$+"\", cmoOverwrite
  361.     CreateIniKeyValue Dest$ + "\sistina.INI","parameters", "pictures", srcdir$, cmoOverwrite
  362.      
  363.     IF ADDVFW <> 0 THEN                        
  364.     '' Video for Windows Entries
  365.  
  366.     IF VflatdPresent() = 0 THEN
  367.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  368.     END IF
  369.     isvhd$ = vhdinstall 
  370.     IF isvhd$ = "yes" THEN
  371.         CreateIniKeyValue WinDir$ + "system.ini", "386enh", "device", "VCDENH.386", cmoOverwrite
  372.     END IF    
  373.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  374.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "ir32.dll", cmoOverwrite
  375.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite
  376.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "iyvu9.dll", cmoOverwrite
  377.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  378.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  379.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  380.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  381.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  382.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  383.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  384.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  385.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "ir21.dll", "Intel Indeo(TM) Video R2.1", cmoOverwrite
  386.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  387.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  388.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  389.  
  390.  
  391.  
  392. END IF
  393. END SUB
  394.  
  395.  
  396. SUB RegisterEntries STATIC
  397.  
  398.     '' Default Registers
  399.  
  400.     
  401.     IF ADDVFW <> 0 THEN                        
  402.     '' Video for Windows Entries
  403.  
  404.         Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  405.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  406.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  407.  
  408.     END IF
  409. END SUB
  410.  
  411.  
  412. SUB SetDriveStatus STATIC
  413.  
  414.     free& = GetFreeSpaceForDrive(MID$(DEST$, 1, 1))
  415.     ReplaceListItem DRIVETEXT$, 1, STR$(free& / 1024) + " K"
  416.  
  417. END SUB
  418.  
  419. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  420.     IF szDir$ = "" THEN
  421.     MakePath = szFile$
  422.     ELSEIF szFile$ = "" THEN
  423.     MakePath = szDir$
  424.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  425.     MakePath = szDir$ + szFile$
  426.     ELSE
  427.     MakePath = szDir$ + "\" + szFile$
  428.     END IF
  429. END FUNCTION
  430.  
  431. FUNCTION vhdinstall STATIC AS STRING
  432.   TROVATO% = 0
  433.   canale% = FREEFILE    
  434.   OPEN  windir$ + "system.ini" for INPUT AS #canale%
  435.   WHILE NOT (EOF(1)) AND (TROVATO% = 0)
  436.       LINE INPUT #canale% , RETVAL$    
  437.     TROVATO% = INSTR (1, UCASE$(RETVAL$) ,"VCDENH.386")
  438.   WEND
  439.   CLOSE #canale%
  440.   IF (TROVATO% > 0) THEN
  441.         vhdinstall = "no"
  442.   ELSE
  443.     vhdinstall = "yes"
  444.   END IF
  445.  
  446. END FUNCTION
  447.