home *** CD-ROM | disk | FTP | other *** search
/ Easy Tutor - Computer Für Einsteiger / IMGERM_Easy_Tutor.iso / setup.mst < prev    next >
Text File  |  1993-11-18  |  16KB  |  514 lines

  1. '**************************************************************************
  2. '*              "EasyTutor Learn Computers" setup proceedure
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'mscpydis.inc'    ''System
  9. '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  10.  
  11. ''Application constants and defaults
  12. CONST APPTITLE          = "EasyTutor Computer fⁿr Einsteiger"           ''Title to display while installing app
  13. CONST APPDRIVE          = "C:"                                  ''Default drive for app
  14. CONST APPPATH           = "\MCWFY\"                             ''Default path for app
  15. CONST APPSIZE           = 1000000                               ''Approx. size of application files (for drive space warning)
  16. CONST INIFILE           = "MCWFY.INI"                           ''INI file for app info
  17. CONST PROGGROUP         = "CRT-Anwendungen"                    ''Name of program group for app
  18. CONST PROGITEM          = "EasyTutor Computer fⁿr Einsteiger"           ''Name of program item for app
  19. CONST PROGEXE           = "MCW.EXE"                             ''Executable file for app
  20. CONST DRVTITLE          = "Video for Windows Runtime Drivers"   ''Title to display whil installing VfW drivers
  21.  
  22. ''Dialog ID's
  23. CONST DLG_WELCOME       = 100
  24. CONST DLG_ASKQUIT       = 200
  25. CONST DLG_DESTPATH      = 300
  26. CONST DLG_EXITFAILURE   = 400
  27. CONST DLG_EXITQUIT      = 600
  28. CONST DLG_EXITSUCCESS   = 700
  29. CONST DLG_APPHELP       = 900
  30. CONST DLG_CDPATH        = 1000
  31. CONST DLG_DESTTOOSMALL  = 1100
  32. CONST DLG_WINTOOSMALL   = 1200
  33. CONST DLG_RECPATH       = 1300
  34. CONST DLG_REGISTER      = 1400
  35. CONST DLG_RESTART       = 2600
  36. CONST DLG_RESTARTOPT    = 2700
  37. CONST DLG_BADPATH       = 6400
  38.  
  39. ''Bitmap ID
  40. CONST LOGO = 1
  41.  
  42. GLOBAL SizeReq&  '' Total Disk Size required for installation
  43.  
  44. GLOBAL DESTPATH$        ''Destination path
  45. GLOBAL DESTDRIVE$       ''Destination drive
  46. GLOBAL CDPATH$          ''CD-ROM path
  47. GLOBAL CDDRIVE$         ''CD-ROM drive
  48. GLOBAL RECPATH$         ''Student record path
  49. GLOBAL RECDRIVE$        ''Student record drive
  50. GLOBAL WINPATH$         ''Windows path
  51. GLOBAL WINSYSPATH$      ''Windows system path
  52. GLOBAL WINDRIVE$        ''Windows drive
  53.  
  54. DECLARE SUB InstallApp
  55. DECLARE SUB BuildVfW
  56. DECLARE SUB InstallVfW
  57. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  58. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  59. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  60. DECLARE SUB Reboot LIB "iniupd.dll"
  61. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  62.  
  63.  
  64.  
  65. INIT:
  66.     ''Set constants
  67.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  68.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  69.  
  70.     ''Windows paths
  71.     WINPATH$=GetWindowsDir()
  72.     WINSYSPATH$=GetWindowsSysDir()
  73.     WINDRIVE$=MID$(WINPATH$, 1, 1)
  74.  
  75.     ''Check windows version
  76.     WIN32ENABLED% = 0
  77.     MajorVer% = GetWindowsMajorVersion()
  78.     MinorVer% = GetWindowsMinorVersion()
  79.  
  80.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  81.         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)
  82.         END
  83.     END IF
  84.  
  85.     IF OnWindowsNT() THEN
  86.           i% = DoMsgBox("This version of Video for Windows does not run on Windows NT.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  87.           END
  88.     END IF
  89.  
  90.  
  91.     SetBitmap CUIDLL$, LOGO
  92.     SetTitle APPTITLE
  93.  
  94.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  95.     IF szInf$ = "" THEN
  96.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  97.     END IF
  98.     ReadInfFile szInf$
  99.  
  100.     ''Default destination path
  101.     DESTPATH$=APPDRIVE+APPPATH      ''default
  102.     GetLocalHardDrivesList "HARDDRIVE"
  103.     if GetListLength("HARDDRIVE")>0 then
  104.         DESTPATH$=GetListItem("HARDDRIVE", 1)+":"+APPPATH
  105.     end if
  106.  
  107.     ''Default CD-ROM path
  108.     ''Note: CD-ROMS look like read-only network drives.
  109.     CDPATH$="D:\"   ''default
  110.     GetNetworkDrivesList "NETWORKDRIVE"
  111.     if GetListLength("NETWORKDRIVE")>0 then
  112.         for i%=1 to GetListLength("NETWORKDRIVE") step 1
  113.             temp$=GetListItem("NETWORKDRIVE",i%)+":\"
  114.             if IsDirWritable(temp$) = 0 then
  115.                 CDPATH$=temp$
  116.             end if
  117.         next i%
  118.     end if
  119.  
  120.     ''Default Student record path
  121.     RECPATH$="A:\"  ''default
  122.     GetRemovableDrivesList "REMOVABLEDRIVE"
  123.     if GetListLength("REMOVABLEDRIVE")>0 then
  124.         RECPATH$=GetListItem("REMOVABLEDRIVE", 1)+":\"
  125.     end if
  126.  
  127.  
  128. '' Welcome dialog
  129. WELCOME:
  130.     sz$ = UIStartDlg(CUIDLL$, DLG_WELCOME, "FInfoDlgProc", DLG_APPHELP, HELPPROC$)
  131.     IF sz$ = "CONTINUE" THEN
  132.         UIPop 1
  133.     ELSE
  134.         GOSUB ASKQUIT
  135.         GOTO WELCOME
  136.     END IF
  137.  
  138. ''Check space on windows drive
  139.     BuildVfW
  140.     SizeReq& = GetCopyListCost ("","", "")
  141.     IF SizeReq& <> 0 THEN
  142.         GOSUB WINTOOSMALL
  143.         ERROR STFQUIT
  144.     END IF
  145.  
  146.  
  147. '' Get destination path
  148. GETDEST:
  149.     SetSymbolValue "EditTextIn", DESTPATH$
  150.     SetSymbolValue "EditFocus", "END"
  151. GETDESTL1:
  152.     sz$ = UIStartDlg(CUIDLL$, DLG_DESTPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$)
  153.     DESTPATH$ = GetSymbolValue("EditTextOut")
  154.     DESTDRIVE$ = MID$(DESTPATH$, 1, 1)
  155.  
  156.     IF sz$ = "CONTINUE" THEN
  157.         IF IsDirWritable(DESTPATH$) = 0 THEN
  158.             GOSUB BADPATH
  159.             GOTO GETDESTL1
  160.         ELSEIF IsDriveValid(DESTDRIVE$)=0 THEN
  161.             GOSUB BADPATH
  162.             GOTO GETDESTL1
  163.         END IF
  164.         UIPop 1
  165.     ELSEIF sz$ = "REACTIVATE" THEN
  166.         GOTO GETDESTL1
  167.     ELSE
  168.         GOSUB ASKQUIT
  169.         GOTO GETDEST
  170.     END IF
  171.  
  172. ''Check space on destination drive
  173.     DiskSize&=GetFreeSpaceForDrive(MID$(DESTPATH$,1,1))
  174.  
  175.     If GetFreeSpaceForDrive(DESTDRIVE$)< APPSIZE then
  176.         GOSUB DESTTOOSMALL
  177.         GOTO GETDEST
  178.     EndIf
  179.  
  180.  
  181. '' Get CD path
  182. GETCD:
  183.     SetSymbolValue "EditTextIn", CDPATH$
  184.     SetSymbolValue "EditFocus", "END"
  185. GETCDL1:
  186.     sz$ = UIStartDlg(CUIDLL$, DLG_CDPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$)
  187.     CDPATH$ = GetSymbolValue("EditTextOut")
  188.     CDDRIVE$ = MID$(CDPATH$, 1, 1)
  189.  
  190.     IF sz$ = "CONTINUE" THEN
  191.         IF IsDirWritable(CDPATH$) THEN
  192.             GOSUB BADPATH
  193.             GOTO GETCDL1
  194.         ELSEIF IsDriveValid(CDDRIVE$)=0 THEN
  195.             GOSUB BADPATH
  196.             GOTO GETCDL1
  197.         END IF
  198.         UIPop 1
  199.     ELSEIF sz$ = "BACK" THEN
  200.         UIPop 1
  201.         GOTO GETDEST
  202.     ELSEIF sz$ = "REACTIVATE" THEN
  203.         GOTO GETCDL1
  204.     ELSE
  205.         GOSUB ASKQUIT
  206.         GOTO GETCD
  207.     END IF
  208.  
  209.  
  210. '' Get Record path - removed 11/5/94
  211. ''GETREC:
  212. ''        SetSymbolValue "EditTextIn", RECPATH$
  213. ''        SetSymbolValue "EditFocus", "END"
  214. ''GETRECL1:
  215. ''        sz$ = UIStartDlg(CUIDLL$, DLG_RECPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$)
  216. ''        RECPATH$ = GetSymbolValue("EditTextOut")
  217. ''        RECDRIVE$ = MID$(RECPATH$, 1, 1)
  218. ''
  219. ''        IF sz$ = "CONTINUE" THEN
  220. ''            IF IsDriveValid(RECDRIVE$)=0 THEN
  221. ''                    GOSUB BADPATH
  222. ''                    GOTO GETRECL1
  223. ''            END IF
  224. ''            UIPop 1
  225. ''        ELSEIF sz$ = "BACK" THEN
  226. ''                UIPop 1
  227. ''                GOTO GETCD
  228. ''        ELSEIF sz$ = "REACTIVATE" THEN
  229. ''                GOTO GETRECL1
  230. ''        ELSE
  231. ''                GOSUB ASKQUIT
  232. ''                GOTO GETREC
  233. ''        END IF
  234.  
  235.  
  236. '' Registration prompt
  237. REGISTER:
  238.     sz$ = UIStartDlg(CUIDLL$, DLG_REGISTER, "FInfoDlgProc", DLG_APPHELP, HELPPROC$)
  239.  
  240.     IF sz$ = "CONTINUE" THEN
  241.         UIPop 1
  242.     ELSEIF sz$ = "BACK" THEN
  243.         UIPop 1
  244.         GOTO GETCD
  245.     ELSEIF sz$ = "REACTIVATE" THEN
  246.         GOTO REGISTER
  247.     ELSE
  248.         GOSUB ASKQUIT
  249.         GOTO GETCD
  250.     END IF
  251.  
  252.  
  253.  
  254. '' Do installation
  255.     CreateDir DESTPATH$, cmoNone
  256.     OpenLogFile MakePath(DESTPATH$, "SETUP.LOG"), 0
  257.  
  258.     InstallApp
  259.     InstallVfW
  260.  
  261.     WriteToLogFile "Final error state: "+STR$(ERR)+" Message: "+ERROR$(ERR)+" File: "+ERF+" Line: "+STR$(ERL)
  262.     CloseLogFile
  263.  
  264.  
  265. '' The following bit of code is copied (more or less) verbatim from the VFW 1.1
  266. '' setup. I can't so how it can work because _msrstst.exe & _mssetup.bat don't
  267. '' appear to exist. MJP 24/3/94
  268. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  269. '' else, it gives the user the choice
  270.     DEST$ = GetWindowsDir()
  271.     RESTRT% = RestartListEmpty ()
  272.     Exe$ = DEST$ + "\_msrstrt.exe"
  273.     Batch$ = DEST$ + "\_mssetup.bat"
  274.     empty$ = ""
  275. RESTART:
  276.     IF RESTRT% = 0 THEN
  277.            sz$ = UIStartDlg(cuidll$, DLG_RESTART, "FInfo0DlgProc", 0, "")
  278.            IF sz$ = "REACTIVATE" THEN
  279.               GOTO RESTART
  280.            ENDIF
  281.            I% = ExitExecRestart ()
  282.            RemoveFile Exe$, cmoForce
  283.            RemoveFile Batch$, cmoForce
  284.            END
  285.     ELSE
  286.         sz$ = UIStartDlg(CUIDLL$, DLG_RESTARTOPT, "FQuitDlgProc", 0, "")
  287.         IF sz$ = "CONTINUE" THEN
  288.             I% = ExitWindowsExec (Exe$, empty$)
  289.             IF I% = 0 THEN
  290.                 GOTO RESTART
  291.             ELSE
  292.                 END
  293.             ENDIF
  294.         ELSEIF sz$ = "EXIT" THEN
  295.             UIPopAll
  296.                END
  297.         ELSEIF sz$ = "REACTIVATE" THEN
  298.             GOTO RESTART
  299.         ELSE
  300.             UIPop 1
  301.         END IF
  302.     END IF
  303.  
  304. QUIT:
  305.     ON ERROR GOTO ERRQUIT
  306.  
  307.     IF ERR = 0 THEN
  308.         dlg% = DLG_EXITSUCCESS
  309.     ELSEIF ERR = STFQUIT THEN
  310.         dlg% = DLG_EXITQUIT
  311.     ELSE
  312.         OpenLogFile MakePath(DESTPATH$, "SETUP.ERR"), 0
  313.         WriteToLogFile "Error on quitting: "+STR$(ERR)+" Message: "+ERROR$(ERR)+" File: "+ERF+" Line: "+STR$(ERL)
  314.         CloseLogFile
  315.         dlg% = 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.  
  324.     END
  325.  
  326. ERRQUIT:
  327.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  328.     END
  329.  
  330.  
  331. BADPATH:
  332.     sz$ = UIStartDlg(CUIDLL$, DLG_BADPATH, "FInfo0DlgProc", 0, "")
  333.     IF sz$ = "REACTIVATE" THEN
  334.         GOTO BADPATH
  335.     END IF
  336.     UIPop 1
  337.     RETURN
  338.  
  339.  
  340.  
  341. ASKQUIT:
  342.     sz$ = UIStartDlg(CUIDLL$, DLG_ASKQUIT, "FQuitDlgProc", 0, "")
  343.  
  344.     IF sz$ = "EXIT" THEN
  345.         UIPopAll
  346.         ERROR STFQUIT
  347.     ELSEIF sz$ = "REACTIVATE" THEN
  348.         GOTO ASKQUIT
  349.     ELSE
  350.         UIPop 1
  351.     END IF
  352.     RETURN
  353.  
  354.  
  355.  
  356. '' Not enough space on windows drive
  357. WINTOOSMALL:
  358.     sz$ = UIStartDlg(CUIDLL$, DLG_WINTOOSMALL, "FInfo0DlgProc", 0, "")
  359.     IF sz$ = "REACTIVATE" THEN
  360.     GOTO WINTOOSMALL
  361.     END IF
  362.     UIPop 1
  363.     RETURN
  364.  
  365. '' Not enough space on destinition drive
  366. DESTTOOSMALL:
  367.     sz$ = UIStartDlg(CUIDLL$, DLG_DESTTOOSMALL, "FInfo0DlgProc", 0, "")
  368.     IF sz$ = "REACTIVATE" THEN
  369.     GOTO DESTTOOSMALL
  370.     END IF
  371.     UIPop 1
  372.     RETURN
  373.  
  374.  
  375. '**
  376. '** Purpose:
  377. '**     Builds the copy list for Video for Windows runtime drivers
  378. '** Arguments:
  379. '**     none.
  380. '** Returns:
  381. '**     none.
  382. '*************************************************************************
  383. SUB BuildVfW STATIC
  384.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  385.  
  386.     ClearCopyList
  387.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WINSYSPATH$
  388.     AddSectionFilesToCopyList "OLE2", SrcDir$, WINSYSPATH$
  389.     AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WINSYSPATH$
  390.     AddSectionFilesToCopyList "MPlayer", SrcDir$, WINPATH$
  391.     AddSectionFilesToCopyList "AVICodecs", SrcDir$, WINSYSPATH$
  392. END SUB
  393.  
  394.  
  395. '**
  396. '** Purpose:
  397. '**     Builds the copy list and installs Video for Windows runtime drivers
  398. '** Arguments:
  399. '**     none.
  400. '** Returns:
  401. '**     none.
  402. '*************************************************************************
  403. SUB InstallVfW STATIC
  404.     WriteToLogFile "InstallVfW"
  405.     SetTitle DRVTITLE
  406.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  407.  
  408.     BuildVfW
  409.  
  410.     SetRestartDir WINPATH$
  411.     CopyFilesInCopyList
  412.     WriteToLogFile "VfW files copied"
  413.  
  414.     IF VflatdPresent() = 0 THEN
  415.        CreateSysIniKeyValue WINPATH$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  416.     END IF
  417.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  418.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  419.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  420.  
  421.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  422.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.IV31", "ir32.dll", cmoOverwrite
  423.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite
  424.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.YVU9", "iyvu9.dll", cmoOverwrite
  425.  
  426.     CreateIniKeyValue WINPATH$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  427.     CreateIniKeyValue WINPATH$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  428.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  429.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  430.     CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  431.     CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  432.     CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  433.     CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  434.  
  435.     WriteToLogFile "Running Regedit"
  436.     Run ("regedit.exe /s " + MakePath(WINPATH$, "mplayer.reg"))
  437.     Run ("regedit.exe /s " + MakePath(WINSYSPATH$, "OLE2.reg"))
  438.     Run ("regedit.exe /s " + MakePath(WINSYSPATH$, "cleanup.reg"))
  439.  
  440.     WriteToLogFile "Putting Media Player in Accessories group"
  441.     CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  442.  
  443.     WriteToLogFile "Running Profdisp"
  444.     Run ("profdisp.exe")
  445.  
  446. END SUB
  447.  
  448.  
  449.  
  450. '**
  451. '** Purpose:
  452. '**     Builds the copy list and installs App software.
  453. '** Arguments:
  454. '**     none.
  455. '** Returns:
  456. '**     none.
  457. '*************************************************************************
  458. SUB InstallApp STATIC
  459.     WriteToLogFile "InstallApp"
  460.     SetTitle APPTITLE
  461.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  462.     CreateDir DESTPATH$, cmoNone
  463.  
  464.     WriteToLogFile ""
  465.     WriteToLogFile "  Source directory: '" + SrcDir$ + "'"
  466.     WriteToLogFile "  User chose destination path: '" + DESTPATH$ + "'"
  467.     WriteToLogFile "  User chose CD-ROM path: '" + CDPATH$ + "'"
  468.     WriteToLogFile "  User record path: '" + RECPATH$ + "'"
  469.     WriteToLogFile "  Windows directory: '" + WINPATH$ + "'"
  470.     WriteToLogFile "  Windows system directory: '" + WINSYSPATH$ + "'"
  471.     WriteToLogFile ""
  472.  
  473.     ClearCopyList
  474.     AddSectionFilesToCopyList "Files", SrcDir$, DESTPATH$
  475.     CopyFilesInCopyList
  476.     WriteToLogFile "App files copied"
  477.  
  478.     ini$ = MakePath(WINPATH$, INIFILE)
  479.     CreateIniKeyValue ini$, "FilePaths", "RunPath", MakePath(DESTPATH$,"") , cmoOverwrite
  480.     CreateIniKeyValue ini$, "FilePaths", "VideoPath", MakePath(CDPATH$,"") , cmoOverwrite
  481.     CreateIniKeyValue ini$, "FilePaths", "AudioPath", MakePath(CDPATH$,"") , cmoOverwrite
  482.     CreateIniKeyValue ini$, "FilePaths", "GraphicPath", MakePath(CDPATH$,"") , cmoOverwrite
  483.     CreateIniKeyValue ini$, "FilePaths", "AltGraphicPath", "", cmoOverwrite
  484.     CreateIniKeyValue ini$, "FilePaths", "StudentFile", MakePath(RECPATH$,"MCWFY.REC") , cmoOverwrite
  485.  
  486.     CreateProgmanGroup PROGGROUP, "", cmoNone
  487.     ShowProgmanGroup  PROGGROUP, 1, cmoNone
  488.     CreateProgmanItem PROGGROUP, PROGITEM, MakePath(DESTPATH$,PROGEXE), "", cmoOverwrite
  489.  
  490. END SUB
  491.  
  492.  
  493.  
  494. '**
  495. '** Purpose:
  496. '**     Appends a file name to the end of a directory path,
  497. '**     inserting a backslash character as needed.
  498. '** Arguments:
  499. '**     szDir$  - full directory path (with optional ending "\")
  500. '**     szFile$ - filename to append to directory
  501. '** Returns:
  502. '**     Resulting fully qualified path name.
  503. '*************************************************************************
  504. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  505.     IF szDir$ = "" THEN
  506.     MakePath = szFile$
  507.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  508.     MakePath = szDir$ + szFile$
  509.     ELSE
  510.     MakePath = szDir$ + "\" + szFile$
  511.     END IF
  512. END FUNCTION
  513.  
  514.