Comment ============================================================= Copyright 1990-1994 by Marc Perkel This program is used to generate a new MarxMenu and distribute the compiled files. It is an example of how to use MarxMenu as a Job Control language. Since I'm on a network, the way I test to update a file is to delete it and then update it. If someone on the net has the file open, the delete will fail. I'm doing extensive error checking here. Errors are recorded in ErrorArray. Any errors are displayed at the end. Note that in order to read error return codes from subprograms you have to use the .EXE or .COM extentions. Otherwise MarxMenu will load COMMAND.COM and the codes will be absorbed. Don't try to run this menu! It is for reading and ideas only. ============================================================= EndComment Var ThisPath ErrorArray ExecError AccessCode StandardIO ClearScreenFirst Off XmsOverlays EmsOverlays Swapping ThisPath = Path if not ExistFile('MARXMENU.PAS') Writeln "This program can only be run on Marc Perkel's Computer!" Writeln "It is provided as an example only." ExitMenu endif SetMcAfee('INITYME',True) SetShareware('INITYME',True) ExecLine ('MARXLINK.EXE INITYME') ExecLine ('MOVE.EXE INITYME.EXE P:\SMCAFEE\INITOOL.EXE') SetShareware('INITYME',False) ExecLine ('MARXLINK.EXE INITYME') ExecLine ('MOVE.EXE INITYME.EXE P:\RMCAFEE\INITOOL.EXE') SetMcAfee('INITYME',False) ;----- inidif SetMcAfee('INIDIF',True) SetShareware('INIDIF',True) ExecLine ('MARXLINK.EXE INIDIF') ExecLine ('MOVE.EXE INIDIF.EXE P:\SMCAFEE') SetShareware('INIDIF',False) ExecLine ('MARXLINK.EXE INIDIF') ExecLine ('MOVE.EXE INIDIF.EXE P:\RMCAFEE') SetMcAfee('INIDIF',False) ChDir 'G:\DOWNLOAD\REAL' DelFile 'INITOOL.ZIP' ExecLine ('ZIP.EXE INITOOL N:INITYME.HLP N:INITYME.MNU N:INITYME.INC') ExecLine ('ZIP.EXE INITOOL N:ADDRESS.INC N:INIDIF.MNU') ExecLine ('ZIP.EXE INITOOL P:\RMCAFEE\*.*') ChDir ThisPath ;------ Clean up ;ExecLine('ZDEL.EXE *.MAP *.OLD *.BAK') ;------ Show Errors if any if NumberOfElements (ErrorArray) > 0 Writeln 'Errors:' Loop NumberOfElements(ErrorArray) Writeln '==> ' ErrorArray[LoopIndex] EndLoop else Writeln 'No Errors!' endif ExitMenu ;========================================================= ;------ Subroutines Procedure CopyMarxFile (Source,Dest) var TargetFileName if Right(Dest,1) <> ':' TargetFileName = CleanFileName(Dest + '\' + Source) else TargetFileName = CleanFileName(Dest + Source) endif DelFile(TargetFileName) if ExistFile(TargetFileName) WriteErrorMsg('File ' + Source + ' Failed to copy to ' + TargetFileName + '!') else ExecLine('YCOPY.EXE ' + Source + ' ' + TargetFileName) endif EndProc Procedure SetShareware (Name,Shareware) var Lines St Name = Name + '.MNU' ReadTextFile(Name,Lines) Loop Lines St = UpperCase(LoopVal) Trim(St) if (St = '#DEFINE SHAREWARE') or (St = ';#DEFINE SHAREWARE') if Shareware LoopVal = '#Define Shareware' else LoopVal = ';#Define Shareware' endif endif EndLoop WriteTextFile(Name,Lines) EndProc Procedure SetMcAfee (Name,McAfee) var Lines St Name = Name + '.MNU' ReadTextFile(Name,Lines) Loop Lines St = UpperCase(LoopVal) Trim(St) if (St = '#DEFINE MCAFEE') or (St = ';#DEFINE MCAFEE') if McAfee LoopVal = '#Define McAfee' else LoopVal = ';#Define McAfee' endif endif EndLoop WriteTextFile(Name,Lines) EndProc Procedure LinkMenu (Name) SetShareware(Name,True) ExecLine ('MARXLINK.EXE ' + Name) ExecLine ('MOVE.EXE ' + Name + '.EXE N:') SetShareware(Name,False) ExecLine ('MARXLINK.EXE ' + Name) ExecLine ('MOVE.EXE ' + Name + '.EXE U:') EndProc Procedure ExecLine (St) AbortGen Writeln '==> ' St Execute (St) ExecError = ReturnCode <> 0 if ExecError WriteErrorMsg ('Error ' + Str(ReturnCode) + ' while Executing: ' + St) endif Writeln EndProc Procedure WriteErrorMsg (St) Writeln (Char(7) + '==> Error: ' + St) ErrorArray[NumberOfElements(ErrorArray) + 1] = St Wait 300 EndProc Procedure AbortGen var Ch if not KbdReady then return Ch = ReadKey if Ch = Esc then ExitMenu EndProc