home *** CD-ROM | disk | FTP | other *** search
/ Virtual Museums Uffizi / UFFIZI_E1_09.ISO / program / uffizie.mst < prev    next >
Text File  |  1995-10-26  |  19KB  |  561 lines

  1. '**************************************************************************
  2. '*                 Uffizi
  3. '**************************************************************************
  4.  
  5. ''$DEFINE DEBUG
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'mscpydis.inc'    ''System
  9. '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  10.  
  11. DECLARE FUNCTION mciSendString LIB "mmsystem.dll" (szCommand AS STRING, szReturn AS STRING, wRetunL AS INTEGER, hVoid AS INTEGER ) AS LONG
  12.  
  13. ''Dialog ID's
  14. CONST WELCOME       = 100
  15. CONST ASKQUIT       = 200
  16. CONST DESTPATH      = 300
  17. CONST EXITFAILURE   = 400
  18. CONST EXITQUIT      = 600
  19. CONST EXITSUCCESS   = 700
  20. CONST APPHELP       = 900
  21. CONST BADPATH       = 6400
  22. CONST CHECK         = 2500
  23. ''CONST SMALLWIN      = 2200
  24. CONST SMALLWIN      = 6300
  25. CONST RESTART       = 2600
  26. CONST RESTARTII     = 2700
  27. CONST UPDATERUNTIME = 9000
  28. CONST BADRUNTIME = 9100
  29. CONST DISKSPACEDLG  = 8050
  30. ''Bitmap ID
  31. CONST LOGO = 1
  32. CONST VFW11 = 2
  33.  
  34. GLOBAL DEST$        ''Default destination directory.
  35. GLOBAL INSTPATH$    ''Default destination directory.
  36. GLOBAL RET$
  37. GLOBAL CUIDLL$
  38. GLOBAL CD$
  39.  
  40. DECLARE SUB InstallUffizi
  41. DECLARE SUB ConfigUffizi
  42. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  43. DECLARE FUNCTION EnoughDiskSpace () AS INTEGER
  44.  
  45. GLOBAL SizeReq&  '' Total Disk Size required for installation
  46.  
  47. ''''''''''''''''''''''''''''''
  48. ''VFW11
  49. ''File Types
  50. GLOBAL WinDir$
  51. GLOBAL WinSysDir$
  52. GLOBAL WinSys32Dir$
  53. GLOBAL WINDRIVE$    ''Windows Drive Letter.
  54. GLOBAL CHECKSTATES$
  55. GLOBAL MinorVer%
  56. GLOBAL OnNT$
  57.  
  58. DECLARE SUB Install
  59. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  60. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  61. DECLARE SUB Reboot LIB "iniupd.dll"
  62. DECLARE FUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  63.  
  64.  
  65. INIT:
  66.     SetTitle "Uffizi - Setup"
  67.  
  68.     CUIDLL$ = "uffizist.dll"            ''Custom user interface dll
  69.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  70.  
  71.     WIN32ENABLED% = 0
  72.     MajorVer% = GetWindowsMajorVersion()
  73.     MinorVer% = GetWindowsMinorVersion()
  74.  
  75.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  76.     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)
  77.     END
  78.     END IF
  79.  
  80.     SetBitmap CUIDLL$, LOGO
  81.  
  82.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  83.     IF szInf$ = "" THEN
  84.     szInf$ = GetSymbolValue("STF_CWDDIR") + "UFFIZI.INF"
  85.     END IF
  86.     ReadInfFile szInf$
  87.  
  88.     WinDir$ = GetWindowsDir()
  89.     WinSysDir$ = GetWindowsSysDir()
  90.     RET$ = "                                                    "
  91.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  92.     DEST$ = GetIniKeyString( MakePath(WinDir$, "OPERAMM.INI"), "Uffizi", "InstallationPath" )
  93.     IF DEST$ = "" THEN
  94.         DEST$ = "C:\OPERAMM\UFFIZI"
  95.     END IF
  96.  
  97. '$IFDEF DEBUG
  98.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  99.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  100.     IF IsDriveValid(WinDrive$) = 0 THEN
  101.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "Fatal Error", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  102.     GOTO QUIT
  103.     END IF
  104. '$ENDIF ''DEBUG
  105.  
  106.  
  107. WELCOME:
  108.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  109.     IF sz$ = "CONTINUE" THEN
  110.     UIPop 1
  111.     ELSE
  112.     GOSUB ASKQUIT
  113.     GOTO WELCOME
  114.     END IF
  115.  
  116. GETPATH:
  117.     SetSymbolValue "EditTextIn", DEST$
  118.     SetSymbolValue "EditFocus", "END"
  119. GETPATHL1:
  120.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  121.     DEST$ = GetSymbolValue("EditTextOut")
  122.  
  123.     IF sz$ = "CONTINUE" THEN
  124.     IF IsDirWritable(DEST$) = 0 THEN
  125.         GOSUB BADPATH
  126.         GOTO GETPATHL1
  127.     END IF
  128.     rr% = EnoughDiskSpace ()
  129.     IF rr% <> 0 THEN
  130.         IF rr% = 3 THEN
  131.             GOSUB ASKQUIT
  132.             GOTO GETPATH
  133.         END IF
  134.         GOTO GETPATHL1
  135.     END IF
  136.     UIPop 1
  137.     ELSEIF sz$ = "REACTIVATE" THEN
  138.     GOTO GETPATHL1
  139.     ELSEIF sz$ = "BACK" THEN
  140.     UIPop 1
  141.     GOTO WELCOME
  142.     ELSE
  143.     GOSUB ASKQUIT
  144.     GOTO GETPATH
  145.     END IF
  146.  
  147.  
  148.     CreateDir DEST$, cmoNone
  149.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  150.     InstallUffizi
  151.  
  152.     AVI = 0
  153.     e& = mciSendString ( "sysInfo all quantity", RET$, 30, 0 )
  154.     IF e& = 0 THEN
  155.         NumDev% = VAL(RET$)
  156.         FOR dev% = 1 to NumDev%
  157.             e& = mciSendString ( "sysInfo all name "+STR$(dev%), RET$, 40, 0 )
  158.             IF RET$ = "AVIVideo" or RET$ = "avivideo" THEN
  159.                 AVI = 1
  160.             END IF
  161.         NEXT
  162.     END IF
  163.     IF AVI <> 0 THEN
  164. UPDRUNTIME:
  165.         sz$ = UIStartDlg(CUIDLL$, UPDATERUNTIME, "FQuitDlgProc", 0, "")
  166.  
  167.         IF sz$ = "EXIT" THEN
  168.         UIPop 1
  169.             GOTO ENDOFSETUP
  170.         ELSEIF sz$ = "REACTIVATE" THEN
  171.         GOTO UPDRUNTIME
  172.         ELSE
  173.         UIPop 1
  174.         END IF
  175.     END IF
  176.  
  177.  
  178. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  179. '' Video For Windows 1.1 installation
  180.  
  181.     Processor% = GetProcessorType()
  182.  
  183.     'Prevents installation on 286
  184.     IF Processor% < 3 THEN
  185.     i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  186.     GOTO NOVIDEO
  187.     END IF
  188.  
  189. ''Prepare Copy list and check size
  190.  
  191.     ClearCopyList
  192.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  193.     DEST$ = WinDir$
  194.     WinSys32Dir$ = WinDir$ + "system32"
  195.  
  196.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  197.     IF OnWindowsNT() THEN
  198.       OnNT$ = "TRUE"
  199.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  200.       IF WowVersion$ = "" THEN
  201.          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)
  202.          GOTO NOVIDEO
  203.       END IF
  204.     END IF
  205.  
  206. '' Remove DCISVGA file
  207.     AddSectionFilesToCopyList "remove", SrcDir$, WinSysDir$
  208.  
  209. ''  Runtime files (on Windows disk)
  210. ''  Do not install OLE or MPlayer if on next release of NT or Windows
  211.  
  212.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN           'These files not necessary on Windows NT
  213.     AddSectionFilesToCopyList "MPlayer", SrcDir$, WinDir$
  214.     AddSectionFilesToCopyList "OLE2", SrcDir$, WinSysDir$
  215.     END IF
  216.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  217.     AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WinSysDir$
  218.     AddSectionFilesToCopyList "AVICodecs", SrcDir$, WinSysDir$
  219.     IF OnNT$ = "TRUE" THEN
  220.     AddSectionFilesToCopyList "NT MSVideo", SrcDir$, WinSys32Dir$
  221.     ENDIF
  222. ''*************************************************************************************************************************
  223. ''*************************************************************************************************************************
  224. ''To add a DCI provider, please un-comment the AddSectionFilesToCopyList,
  225. ''and add a "DCI Provider" section with to the SETUP.INF file.
  226. ''
  227. ''  AddSectionFilesToCopyList "DCI Provider", SrcDir$, WinSysDir$
  228. ''*************************************************************************************************************************
  229. ''*************************************************************************************************************************
  230.  
  231.  
  232. ''  Check windrive diskspace
  233.     SizeReq& = GetCopyListCost ("","", "")
  234.     IF SizeReq& <> 0 THEN
  235.     GOSUB SMALLWIN
  236.     GOTO NOVIDEO
  237.     END IF
  238.  
  239.  
  240. Install
  241. ConfigUffizi
  242. CloseLogFile
  243.  
  244. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  245. '' else, it gives the user the choice
  246.     RESTRT% = RestartListEmpty ()
  247.     Exe$ = DEST$ + "\_msrstrt.exe"
  248.     Batch$ = DEST$ + "\_mssetup.bat"
  249.     empty$ = ""
  250. RESTART:
  251.     IF RESTRT% = 0 THEN
  252.        sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  253.        IF sz$ = "REACTIVATE" THEN
  254.       GOTO RESTART
  255.        ENDIF
  256.        I% = ExitExecRestart ()
  257.        RemoveFile Exe$, cmoForce
  258.        RemoveFile Batch$, cmoForce
  259.        END
  260.     ELSE
  261.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  262.        IF sz$ = "CONTINUE" THEN
  263.     I% = ExitWindowsExec (Exe$, empty$)
  264.     IF I% = 0 THEN
  265.         GOTO RESTART
  266.     ELSE
  267.         END
  268.     ENDIF
  269.        ELSEIF sz$ = "EXIT" THEN
  270.     UIPopAll
  271.     END
  272.        ELSEIF sz$ = "REACTIVATE" THEN
  273.     GOTO RESTART
  274.        ELSE
  275.     UIPop 1
  276.        END IF
  277.     END IF
  278.  
  279. ENDOFSETUP:
  280.     ConfigUffizi
  281.     CloseLogFile
  282.  
  283. QUIT:
  284.     ON ERROR GOTO ERRQUIT
  285.  
  286.     IF ERR = 0 THEN
  287.     dlg% = EXITSUCCESS
  288.     ELSEIF ERR = STFQUIT THEN
  289.     dlg% = EXITQUIT
  290.     ELSE
  291.     dlg% = EXITFAILURE
  292.     END IF
  293. QUITL1:
  294.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  295.     IF sz$ = "REACTIVATE" THEN
  296.     GOTO QUITL1
  297.     END IF
  298.     UIPop 1
  299.  
  300.     END
  301.  
  302. ERRQUIT:
  303.     i% = DoMsgBox("Unrecoverable error during setup", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  304.     END
  305.  
  306. NOVIDEO:
  307.     sz$ = UIStartDlg(CUIDLL$, BADRUNTIME, "FInfo0DlgProc", 0, "")
  308.     IF sz$ = "REACTIVATE" THEN
  309.     GOTO NOVIDEO
  310.     END IF
  311.     UIPop 1
  312.     GOTO ENDOFSETUP
  313.  
  314. BADPATH:
  315.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  316.     IF sz$ = "REACTIVATE" THEN
  317.     GOTO BADPATH
  318.     END IF
  319.     UIPop 1
  320.     RETURN
  321.  
  322. ASKQUIT:
  323.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  324.  
  325.     IF sz$ = "EXIT" THEN
  326.     UIPopAll
  327.     ERROR STFQUIT
  328.     ELSEIF sz$ = "REACTIVATE" THEN
  329.     GOTO ASKQUIT
  330.     ELSE
  331.     UIPop 1
  332.     END IF
  333.     RETURN
  334.  
  335.  
  336. SMALLWIN:
  337.     ''sz$ = UIStartDlg(CUIVFWDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  338.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  339.     IF sz$ = "REACTIVATE" THEN
  340.     GOTO SMALLWIN
  341.     END IF
  342.     UIPop 1
  343.     RETURN
  344.  
  345.  
  346. '**
  347. '** Purpose:
  348. '**     Builds the copy list and performs all installation operations.
  349. '** Arguments:
  350. '**     none.
  351. '** Returns:
  352. '**     none.
  353. '*************************************************************************
  354. SUB InstallUffizi STATIC
  355.  
  356.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  357.  
  358.     WriteToLogFile ""
  359.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  360.     WriteToLogFile ""
  361.     WriteToLogFile "May have had to create the directory: " + DEST$
  362.     WriteToLogFile ""
  363.  
  364.     AddSectionFilesToCopyList "RuntimeSys", SrcDir$, WinSysDir$
  365.     AddSectionFilesToCopyList "Runtime", SrcDir$, DEST$
  366.     AddSectionFilesToCopyList "UFFIZI", SrcDir$, DEST$
  367.     CopyFilesInCopyList
  368.  
  369.     ini$ = MakePath(WinDir$, "OPERAMM.INI")
  370.     WriteToLogFile ""
  371.     WriteToLogFile "Update INI file"
  372.     WriteToLogFile ""
  373.     CD$ = MID$(SrcDir$,1,2)
  374.     IF CD$ = "\\" THEN
  375.         i% = 3
  376.         Count% = 0
  377.         WHILE i% <= LEN(SrcDir$) AND Count% < 2
  378.             IF MID$(SrcDir$,i%,1) = "\" THEN
  379.                 Count% = Count% + 1
  380.             END IF
  381.             i% = i% +1
  382.         WEND
  383.         IF Count% = 2 THEN
  384.             i% = i%-1
  385.         END IF
  386.         CD$ = MID$(SrcDir$,1,i%-1)
  387.     END IF
  388.     Desktop$ = "Uffizi"
  389.     CreateIniKeyValue MakePath(WinDir$, "WINHELP.INI"), "Files", "UFFIZI.HLP", DEST$, cmoOverwrite
  390.     CreateIniKeyValue ini$, Desktop$, "CDRomDrive", CD$, cmoOverwrite
  391.     CreateIniKeyValue ini$, Desktop$, "InstallationPath", DEST$, cmoOverwrite
  392.     RemoveIniKey ini$, Desktop$, "Sigla", cmoOverwrite
  393.  
  394.     INSTPATH$ = DEST$
  395. END SUB
  396.  
  397. SUB ConfigUffizi STATIC
  398.     CreateProgmanGroup "Opera Multimedia", "", cmoNone
  399.     CreateProgmanItem "Opera Multimedia", "Uffizi", MakePath(INSTPATH$,"operamm")+" uffizi", MakePath(INSTPATH$,"uffizi.dll")+",,,,"+INSTPATH$, cmoOverwrite
  400.     CreateProgmanItem "Opera Multimedia", "Uffizi ReadMe.TXT", MakePath(INSTPATH$,"readme.txt"), "", cmoOverwrite
  401. END SUB
  402.  
  403.  
  404. '**
  405. '** Purpose:
  406. '**     Performs all installation operations.
  407. '** Arguments:
  408. '**     none.
  409. '** Returns:
  410. '**     none.
  411. '*************************************************************************
  412. SUB Install STATIC
  413.  
  414.     SetRestartDir WinDir$
  415.     CopyFilesInCopyList
  416.  
  417. ''Updating WIN.INI and SYSTEM.INI
  418. ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  419.  
  420. IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  421.     IF VflatdPresent() = 0 THEN
  422.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  423.     END IF
  424. END IF
  425.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  426.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "ir32.dll", cmoOverwrite
  427.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite
  428.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "iyvu9.dll", cmoOverwrite
  429.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  430.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  431.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  432.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  433.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  434.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  435.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  436.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  437.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "ir21.dll", "Intel Indeo(TM) Video R2.1", cmoOverwrite
  438.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  439.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  440.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  441.  
  442. ''*************************************************************************************************************************
  443. ''*************************************************************************************************************************
  444. ''To add a DCI provider, please un-comment the UDH line, and un-comment and replace the <provider> with your own file name
  445. ''
  446. ''  CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "DCI", "<provider>", cmoOverwrite
  447. ''  CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "vids.draw", "udh.dll", cmoOverwrite
  448. ''*************************************************************************************************************************
  449. ''*************************************************************************************************************************
  450.  
  451. ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  452. IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  453.     Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  454.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  455.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  456.  
  457. '' Mplayer
  458.     CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  459.  
  460. END IF  ''NT and next version of Windows installation stop here.
  461.  
  462.     Run ("profdisp.exe")   
  463.  
  464. END SUB
  465.  
  466.  
  467. FUNCTION EnoughDiskSpace() STATIC AS INTEGER
  468.  
  469.     EnoughDiskSpace = 0
  470.  
  471.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  472.     SetSymbolValue "Extra", ""
  473.     SetSymbolValue "Cost", ""
  474.     
  475.     DESTDRIVE$ = MID$(DEST$,1,1)
  476.     
  477.     win% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  478.     inst% = ASC(ucase$(DESTDRIVE$)) - ASC("A") + 1
  479.     FOR i% = 1 TO (win%-1)
  480.         rr% = FAddListItem ("Extra", "0")
  481.     NEXT i%
  482.     rr% = FAddListItem ("Extra", "10000")
  483.     ClearCopyList
  484.     AddSectionFilesToCopyList "RuntimeSys", SrcDir$, WinSysDir$
  485.     AddSectionFilesToCopyList "Runtime", SrcDir$, DEST$
  486.     AddSectionFilesToCopyList "UFFIZI", SrcDir$, DEST$
  487.     StillNeed& = GetCopyListCost("Extra", "Cost", "")
  488.  
  489.     IF StillNeed& > 0 THEN
  490.         cost& = VAL(GetListItem("Cost", win%))
  491.         free& = GetFreeSpaceForDrive(WINDRIVE$)
  492.  
  493.         EnoughDiskSpace = 1
  494.         IF cost& > free& THEN
  495.             FullName$ = "Windows disk:"
  496.             FullDrive$ = WINDRIVE$ + ":"
  497.             GOSUB DISKSPACE
  498.         END IF
  499.  
  500.         'Se scelgo Esci, viene resettato questo long, quindi non continuo
  501.         IF StillNeed& > 0 THEN
  502.             cost& = VAL(GetListItem("Cost", inst%))
  503.             free& = GetFreeSpaceForDrive(DESTDRIVE$)
  504.     
  505.             IF cost& > free& THEN
  506.                 FullName$ = "Installation disk:"
  507.                 FullDrive$ = DESTDRIVE$ + ":"
  508.                 GOSUB DISKSPACE
  509.             END IF
  510.         END IF
  511.     END IF
  512.     GOTO FINESUB
  513.  
  514. DISKSPACE:
  515.     SetSymbolValue "ConfirmTextIn", ""
  516.     rr% = FAddListItem ("ConfirmTextIn", FullName$)
  517.     rr% = FAddListItem ("ConfirmTextIn", FullDrive$)
  518.     rr% = FAddListItem ("ConfirmTextIn", "Required disk space:")
  519.     rr% = FAddListItem ("ConfirmTextIn", STR$(cost&/1024)+" KB")
  520.     rr% = FAddListItem ("ConfirmTextIn", "Available disk space:")
  521.     rr% = FAddListItem ("ConfirmTextIn", STR$(free&/1024)+" KB")
  522. DISKSPACE1:
  523.     sz$ = UIStartDlg(CUIDLL$, DISKSPACEDLG, "FConfirmDlgProc", APPHELP, HELPPROC$)
  524.  
  525.     IF sz$ = "CONTINUE" THEN
  526.         UIPop 1
  527.     ELSEIF sz$ = "REACTIVATE" THEN
  528.         GOTO DISKSPACE1
  529.     ELSE
  530.         UIPop 1
  531.         EnoughDiskSpace = 3
  532.         StillNeed& = 0
  533.     END IF
  534.     RETURN
  535.  
  536. FINESUB:
  537.     ClearCopyList
  538. END FUNCTION
  539. '**
  540. '** Purpose:
  541. '**     Appends a file name to the end of a directory path,
  542. '**     inserting a backslash character as needed.
  543. '** Arguments:
  544. '**     szDir$  - full directory path (with optional ending "\")
  545. '**     szFile$ - filename to append to directory
  546. '** Returns:
  547. '**     Resulting fully qualified path name.
  548. '*************************************************************************
  549. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  550.     IF szDir$ = "" THEN
  551.     MakePath = szFile$
  552.     ELSEIF szFile$ = "" THEN
  553.     MakePath = szDir$
  554.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  555.     MakePath = szDir$ + szFile$
  556.     ELSE
  557.     MakePath = szDir$ + "\" + szFile$
  558.     END IF
  559. END FUNCTION
  560.  
  561.