home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / GLEN / MXMNU217.ZIP / INST.MNU < prev    next >
Text File  |  1990-09-05  |  14KB  |  491 lines

  1. Comment
  2. =========================================================
  3.  
  4. MarxMenu installation Menu:
  5.  
  6. Copyright 1989-1990 by Marc Perkel * All rights reserved.
  7.  
  8. This is an example of how MarxMenu can be used as a job control
  9. language. There is quite an education in MarxMenu tricks here. If
  10. you want to write a similar program, this menu is worth studying.
  11.  
  12. =========================================================
  13. EndComment
  14.  
  15. Var
  16.   ForeColor, BackColor, X, ClearChar, Paths, MaxLen, YesNo, %EchoSt,
  17.   %CallSt, PathSt, InstallPath, MarxBat, MarxBat2, WorkBat, ProgName,
  18.   St, CurrentPath, PathBuf, FileLine, Network, NewDos, AdvancedMode
  19.  
  20. Const
  21.   PauseTime = 100
  22.  
  23. DelFile 'MENUS.EXE'
  24.  
  25. if ColorScreen
  26.   ForeColor = Yellow
  27.   BackColor = Mag
  28.   ClearChar = 32
  29. else
  30.   ForeColor = Black
  31.   BackColor = Grey
  32.   ClearChar = 177
  33. endif
  34.  
  35. UseCommand = True
  36. DosWindow = True
  37. ClearScreenFirst = False
  38. Explode On
  39. Shadow Off
  40. BlockBox
  41. CurrentPath = Path
  42. BoxHeaderColor ForeColor BackColor
  43. BoxBorderColor Green Blue
  44. BoxInsideColor Yellow Blue
  45. InverseColor Yellow Red
  46. BlankTime 10
  47.  
  48. TextColor Red Red
  49. ClearScreen ClearChar
  50.  
  51. TextColor ForeColor BackColor
  52. ClearLine
  53. Write '  * The MarxMenu System *'
  54.  
  55. GotoXY(1,25)
  56. ClearLine
  57. WriteCenter 'Copyright 1989 by Marc Perkel * All Rights Reserved'
  58.  
  59. ClockColor ForeColor BackColor
  60. ClockPos 37 1
  61.  
  62. BoxBorderColor Yellow Mag
  63. BoxInsideColor Mag Mag
  64. DrawBox 10 4 61 17
  65. BoxBorderColor LGreen Blue
  66. BoxInsideColor Yellow Blue
  67. Shadow On
  68.  
  69. DrawBox 35 11 11 3
  70. WriteCenter 'The'
  71. Loop 5
  72.    MoveWindow -4 -1
  73.    Wait 3
  74. EndLoop
  75.  
  76. DrawBox 35 11 11 3
  77. WriteCenter 'Marx'
  78. Loop 5
  79.    MoveWindow 4 -1
  80.    Wait 3
  81. EndLoop
  82.  
  83. DrawBox 35 11 11 3
  84. WriteCenter 'Menu'
  85. Loop 5
  86.    MoveWindow -4 1
  87.    Wait 3
  88. EndLoop
  89.  
  90. DrawBox 35 11 11 3
  91. WriteCenter 'System'
  92. Loop 5
  93.    MoveWindow 4 1
  94.    Wait 3
  95. EndLoop
  96.  
  97. Wait 20
  98. DrawBox 25 11 31 3
  99. WriteCenter 'Installation Menu'
  100. Wait 250
  101. RollWindow 4
  102. EraseTopWindow
  103. Wait 20
  104. RollWindow 3
  105. EraseTopWindow
  106. Wait 20
  107. RollWindow 2
  108. EraseTopWindow
  109. Wait 20
  110. RollWindow 1
  111. EraseTopWindow
  112. Wait 20
  113. EraseTopWindow
  114. EraseTopWindow
  115. Shadow Off
  116. BoxBorderColor Green Blue
  117. BoxInsideColor Yellow Blue
  118. DrawBox 53 3 25 3
  119. WriteCenter ' Press ESC to Abort '
  120. BoxHeader '  Install Menu  '
  121. DrawBox 9 7 60 13
  122. TextColor LCyan Blue
  123. ClearLine 205
  124. TextColor Yellow Blue
  125. Writeln
  126. Writeln ' This menu is designed to aid in the installation of'
  127. Writeln ' your MarxMenu software. In order for MarxMenu to work'
  128. Writeln ' properly, I will need information about your computer.'
  129. Writeln ' I will be asking about which directory on the hard disk'
  130. Writeln ' or network to install the menu system. I will be asking'
  131. Writeln ' if you are installing MarxMenu on a network. If you'
  132. Writeln " don't know the answer to any of the questions, you can"
  133. Writeln ' abort the installation and start over.'
  134. Writeln
  135. Write   ' Are you ready to proceed'
  136. AskYesNo
  137. if YesNo = 'No' then ExitMenu
  138. EraseTopWindow
  139. BoxHeader ' Selections '
  140. DrawBox 3 3 35 12
  141. Writeln ' Dos Version: ' DosVersionString
  142. Wait PauseTime
  143. if NetWorkVersion
  144.    DrawBox 3 16 45 7
  145.    Writeln ' If you are on a Network, but you are only'
  146.    Writeln ' running this program for the first time,'
  147.    Writeln ' you can answer NO in order to make the'
  148.    Writeln ' installation easier. You can re-install'
  149.    Write   ' MarxMenu for a network at a later time.'
  150.    DrawBox 13 11 57 3
  151.    Write   ' Are you installing MarxMenu on a Network'
  152.    AskYesNo
  153.    NetWork = YesNo = 'Yes'
  154.    EraseTopWindow
  155.    EraseTopWindow
  156.    Writeln ' Network: ',NetWork
  157.    Wait PauseTime
  158. endif
  159. NewDos = DosVersionString >= '3.30'
  160. SetAdvanced
  161. if NewDos and not AdvancedMode
  162.    BoxHeader ' Advanced BATCH Commands '
  163.    DrawBox 21 3 57 21
  164.    TextColor LCyan Blue
  165.    ClearLine 205
  166.    TextColor Yellow Blue
  167.    Writeln
  168.    Writeln ' The version of DOS you are running is capable of'
  169.    Writeln ' supporting advanced BATCH file commands. These'
  170.    Writeln ' commands include "CALL" and "@ECHO OFF". Earlier'
  171.    Writeln ' versions of DOS require that you reload your'
  172.    Writeln ' command processor when one batch file calls another.'
  173.    Writeln ' This costs you 3.5k of ram.'
  174.    Writeln
  175.    Writeln ' If you are running on a network that allows you to'
  176.    Writeln ' mix DOS versions, and some users are running DOS'
  177.    Writeln ' versions that are less than 3.30, or you have some'
  178.    Writeln ' other reason to not use advanced BATCH commands,'
  179.    Writeln ' then answer NO to the next question.'
  180.    Writeln
  181.    Writeln " If you don't understand any of this then trust this"
  182.    Writeln ' program to make the right choice for you and answer'
  183.    Writeln ' YES to the next question.'
  184.    Writeln
  185.    Write   ' Do you want to use advanced BATCH commands'
  186.    AskYesNo
  187.    NewDos = YesNo = 'Yes'
  188.    EraseTopWindow
  189. endif
  190. if NewDos
  191.    %EchoSt = '@ECHO OFF'
  192.    %CallSt = 'CALL'
  193. else
  194.    %EchoSt = 'ECHO OFF'
  195.    %CallSt = ReadEnv('COMSPEC') + ' /C '
  196. endif
  197.  
  198. ;MXECHO is a debugging environment variable. Use SET MXMENU=OFF for
  199. ;normal use. SET MXECHO=ON to watch the MARX.BAT run.
  200.  
  201. if ReadEnv('MXECHO') > ''
  202.    %EchoSt = '@ECHO %MXECHO%'
  203. endif
  204.  
  205. Writeln ' Advanced Commands: ' NewDos
  206. Wait PauseTime
  207.  
  208. PathSt = ReadEnv('PATH')
  209. if Right(PathSt,1) <> ';' then PathSt = PathSt + ';'
  210. Paths = 1
  211. MaxLen = 0
  212. while PathSt > ''
  213.    X = Pos(';',PathSt)
  214.    if X > 0
  215.       PathBuf[Paths] = CleanFileName(Left(PathSt,X - 1))
  216.       PathSt = Mid(PathSt,X + 1,255)
  217.       if length(PathBuf[Paths]) > Maxlen then MaxLen = length(PathBuf[Paths])
  218.       Paths = Paths + 1
  219.    endif
  220. endwhile
  221.  
  222. BoxHeader ' About Choosing Directories '
  223. DrawBox 40 7 38 10
  224. TextColor LCyan Blue
  225. ClearLine 205
  226. TextColor Yellow Blue
  227. Writeln
  228. Writeln ' MarxMenu must be installed in'
  229. Writeln ' a directory that is accessable'
  230. Writeln ' through your PATH command. If you'
  231. Writeln ' want to create a new directory'
  232. Writeln ' for MarxMenu, be sure to change'
  233. Writeln ' your AUTOEXEC.BAT file to include'
  234. Write   ' this new directory in your PATH.'
  235. BoxHeader ' Choose Installation Path '
  236. DrawBox 25 18 45 6
  237. TextColor LCyan Blue
  238. ClearLine 205
  239. TextColor Yellow Blue
  240. UseArrows
  241. Writeln
  242. Writeln '  1) Install in Current Directory'
  243. Writeln '  2) Choose a PATH Accessable Directory'
  244. Write   '  3) Choose a New or Existing Directory'
  245. InstallPath = ReadKey
  246. EraseTopWindow
  247. if InstallPath = char(27) then ExitMenu
  248. if InstallPath = '1' then InstallPath = Path
  249. if InstallPath = '3'
  250.    DrawBox 3 18 38 5
  251.    Writeln ' Warning: Be sure to change your'
  252.    Writeln ' PATH command in you AUTOEXEC.BAT'
  253.    Write   ' to include this new directory!' Char(7)
  254.    Wait PauseTime * 4
  255.    EraseTopWindow
  256.    BoxHeader ' Directory for MarxMenu '
  257.    DrawBox 20 19 58 4
  258.    TextColor LCyan Blue
  259.    ClearLine 205
  260.    TextColor Yellow Blue
  261.    Writeln
  262.    Write ' Path: '
  263.    InstallPath = UpperCase(Readln)
  264.    if InstallPath = '' then ExitMenu
  265.    EraseTopWindow
  266. endif
  267. if InstallPath = '2'
  268.    BoxHeader ' Directory '
  269.    DrawBox (20,12,(MaxLen + 6),(Min(Paths,9) + 1))
  270.    InstallPath = PickOne PathBuf
  271.    EraseTopWindow
  272. endif
  273. EraseTopWindow
  274. if not ExistDir(InstallPath)
  275.    DrawBox 10 19 60 4
  276.    Writeln ' Path ' InstallPath " doesn't Exist!"
  277.    Write   ' Create new Directory'
  278.    AskYesNo
  279.    EraseTopWindow
  280.    if YesNo = 'No' then ExitMenu
  281.    BoxHeader ' DOS Window '
  282.    DrawBox 45 18 33 5
  283.    Writeln ' Creating Directory '
  284.    Execute 'MD ' + InstallPath
  285.    if not ExistDir(InstallPath)
  286.       ClearScreen
  287.       Writeln ' Unable to Create Directory!'
  288.       Write ' Program Aborting!'
  289.       Wait PauseTime
  290.       ExitMenu
  291.    endif
  292.    EraseTopWindow
  293. endif
  294. Writeln
  295. Writeln ' Install Path:'
  296. Writeln '   ' InstallPath
  297. Wait PauseTime
  298. WorkBat = CleanFileName(InstallPath + '\MARXRUN')
  299. if Network
  300.    BoxHeader ' Network Options '
  301.    DrawBox 14 3 64 14
  302.    TextColor LCyan Blue
  303.    ClearLine 205
  304.    TextColor Yellow Blue
  305.    Writeln
  306.    Writeln ' MarxMenu must create a separate temporary batch file for'
  307.    Writeln ' each user. There are a number of ways to do this. The most'
  308.    Writeln ' common is to use an environment variable that is either'
  309.    Writeln ' set to the users name or to the station number. Another'
  310.    Writeln ' way is to use a mapped drive to point to the users HOME'
  311.    Writeln ' directory. This can be done with NOVELL.'
  312.    Writeln
  313.    Writeln ' Examples:'
  314.    Writeln '   \PUBLIC\%USERNAME%'
  315.    Writeln '   F:\PUBLIC\MENU\%STATION%'
  316.    Write   '   H:MARXRUN'
  317.    DrawBox 14 20 57 4
  318.    Writeln ' Type in your temporary BATCH file command:'
  319.    Write   ' '
  320.    WorkBat = UpperCase(Readln)
  321.    if WorkBat = '' then ExitMenu
  322.    EraseTopWindow
  323.    EraseTopWindow
  324. endif
  325. if pos('.BAT',WorkBat) > 0 then delete(WorkBat,pos('.BAT',WorkBat),255)
  326. Writeln
  327. Writeln ' Workfile:'
  328. Writeln '   '  WorkBat
  329. Wait PauseTime
  330. BoxHeader ' DOS Window '
  331. DrawBox 45 13 33 11
  332. St = CleanFileName(CurrentPath + '\*.*')
  333. if (CurrentPath = 'A:\') or (CurrentPath = 'B:\')
  334.    Writeln ' Copying MarxMenu Files ...
  335.    NoBoxBorder
  336.    Explode Off
  337.    DrawBox 47 15 30 8
  338.    Execute 'COPY ' + St + ' ' + InstallPath
  339.    Explode On
  340.    BlockBox
  341. endif
  342. ChDir InstallPath
  343. MarxBat = CleanFileName(InstallPath + '\MARX.BAT')
  344. MarxBat2 = CleanFileName(InstallPath + '\MARX')
  345. ProgName = CleanFileName(InstallPath + '\MARXMENU.EXE')
  346. DosWindow = False
  347.  
  348. Write ' Creating MARX.BAT ... '
  349.  
  350. if AdvancedMode  ;environment variable MXCTL=/C is set
  351.  
  352. FileLine[1]  = %EchoSt
  353. FileLine[2]  = ProgName + ' %1 ' + WorkBat + '.BAT'
  354. FileLine[3]  = '%MXCMD%'
  355. FileLine[4]  = '%0 %1'
  356. FileLine[6]  = '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  357. FileLine[8]  = 'MarxMenu * CopyRight 1989-90 by Marc Perkel'
  358. FileLine[10] = 'If you are having trouble getting MarxMenu to work,'
  359. FileLine[11] = 'the first line of this file can be changed to ECHO ON.'
  360. FileLine[13] = 'MarxMenu controls this batch file by writing to the environment'
  361. FileLine[14] = 'variable MXCMD. %0 = MARX.BAT and restarts this batch file.'
  362. FileLine[16] = 'MXSTOP.BAT is executed to exit this batch file.'
  363. FileLine[18] = '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  364.  
  365. else
  366.  
  367. FileLine[1]  = %EchoSt
  368. FileLine[2]  = ProgName + ' %1 ' + WorkBat + '.BAT'
  369. FileLine[3]  = 'IF ERRORLEVEL 253 GOTO J'
  370. if NewDos
  371.    FileLine[4]  = %CallSt + ' ' + WorkBat
  372. else
  373.    FileLine[4]  = %CallSt + ' ' + WorkBat + '>NUL'
  374. endif
  375. FileLine[5]  = '%0 %1'
  376. FileLine[6]  = ':J'
  377. FileLine[7]  = 'IF ERRORLEVEL 254 ' + WorkBat
  378. FileLine[8]  = 'MXSTOP'
  379. FileLine[10] = '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  380. FileLine[12] = 'MarxMenu * CopyRight 1989-90 by Marc Perkel'
  381. FileLine[14] = 'This is the default batch file method. MarxMenu supports more'
  382. FileLine[15] = 'advanced forms of batch file control. These involve dynamically'
  383. FileLine[16] = 'modifying the master environment. For mor information on this,'
  384. FileLine[17] = 'read the MARXREAD.ME file.'
  385. FileLine[19] = 'If you are having trouble getting MarxMenu to work,'
  386. FileLine[20] = 'the first line of this file can be changed to ECHO ON.'
  387. FileLine[22] = '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  388.  
  389. Endif
  390.  
  391. WriteTextFile 'MARX.BAT' FileLine
  392. Dispose FileLine
  393.  
  394. Writeln
  395. Write ' Creating DROPTO.BAT ... '
  396.  
  397. FileLine[1]  = 'DEL %1'
  398. FileLine[2]  = 'SET KSV='
  399. FileLine[3]  = 'SET MXCMD='
  400. FileLine[4]  = '%2 %3 %4 %5 %6 %7 %8 %9'
  401. FileLine[6]  = 'REM *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  402. FileLine[8]  = 'REM DropTo is used when you want to eliminate the temporary'
  403. FileLine[9]  = 'REM batch file created by MarxMenu. This is useful if you shell'
  404. FileLine[10] = 'REM to dos and then run MarxMenu from the dos shell. It avoids'
  405. FileLine[11] = 'REM the "Missing Batch File" error.'
  406. FileLine[13] = 'REM *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  407.  
  408. WriteTextFile 'DROPTO.BAT' FileLine
  409. Dispose FileLine
  410.  
  411. Writeln
  412. Write ' Creating MXSTOP.BAT ... '
  413.  
  414. FileLine[1] = 'SET MXCMD='
  415. FileLine[2] = 'SET KSV='
  416. FileLine[3] = 'REM You can control menu exiting with this file!'
  417.  
  418. WriteTextFile 'MXSTOP.BAT' FileLine
  419. Dispose FileLine
  420.  
  421. Writeln
  422. Write ' Creating GOFILE.BAT ... '
  423.  
  424. FileLine[1] = %EchoSt
  425. FileLine[2] = 'MARXMENU GOFILE %1'
  426. FileLine[3] = 'REM This batch file is used only with the GOFILE menu.'
  427.  
  428. WriteTextFile 'GOFILE.BAT' FileLine
  429.  
  430. Writeln
  431. Wait PauseTime
  432. EraseTopWindow
  433. EraseTopWindow
  434. EraseTopWindow
  435. BoxBorderColor Yellow Mag
  436. BoxInsideColor Mag Mag
  437. DrawBox 20 9 44 7
  438. BoxBorderColor LGreen Blue
  439. BoxInsideColor Yellow Blue
  440. DrawBox 25 11 34 3
  441. WriteCenter 'MarxMenu Installed!'
  442. Wait PauseTime
  443. EraseTopWindow
  444. EraseTopWindow
  445. if ExistFile 'MARXMENU.DOC'
  446.    BoxBorderColor Green Blue
  447.    BoxInsideColor Yellow Blue
  448.    BoxHeader ' What Next? '
  449.    DrawBox 25 10 34 5
  450.    UseArrows
  451.    TextColor LCyan Blue
  452.    ClearLine 205
  453.    TextColor Yellow Blue
  454.    Writeln
  455.    Writeln '  1) Print Documentation'
  456.    Write   '  2) Exit Installation'
  457.    St = ReadKey
  458.    EraseTopWindow
  459.    if St = '1'
  460.       DrawBox 15 11 51 3
  461.       Write ' Turn Printer on and Press any Key ... '
  462.       St = ReadKey
  463.       if St = Char(27) then ExitMenu
  464.       ClearScreen
  465.       Write ' Printing ... '
  466.       Execute 'TYPE MARXMENU.DOC>PRN'
  467.       Execute 'TYPE MARXREAD.ME>PRN'
  468.    endif
  469. endif
  470. ExitMenu
  471.  
  472. Procedure AskYesNo
  473.    Write ' (Y/N)? '
  474.    YesNo = ''
  475.    repeat
  476.       YesNo = UpperCase(ReadKey)
  477.       if YesNo = char(27) then ExitMenu
  478.       if YesNo = 'Y' then YesNo = 'Yes'
  479.       if YesNo = 'N' then YesNo = 'No'
  480.    until length(YesNo) > 1
  481.    Write YesNo
  482.    Wait PauseTime
  483. EndProc
  484.  
  485. Procedure SetAdvanced
  486. var St
  487.    St = ReadEnv('MXCTL')
  488.    AdvancedMode = OptionSwitch(St,'C') or OptionSwitch(St,'J')
  489. EndProc
  490.  
  491.