home *** CD-ROM | disk | FTP | other *** search
/ Mega Top 1 / os2_top1.zip / os2_top1 / APPS / FILEMAN / FM2_222A / INSTALL.CMD < prev    next >
OS/2 REXX Batch file  |  1994-12-31  |  11KB  |  361 lines

  1. /*
  2.  * FM/2 2.x installation program copyright (c) 1994/95 by M. Kimes
  3.  *
  4.  * This program creates a folder to hold program objects,
  5.  * then creates program objects for each executable.  It only needs to be
  6.  * run once (unless you move the FM/2 directory -- see say notes at end).
  7.  * It also calls MIGINI.CMD if it finds an old FM2.INI file to migrate
  8.  * some information to the new version's FM3.INI file.
  9.  *
  10.  * For unattended installation, remove the lines marked with "NOTE:" below.
  11.  */
  12.  
  13. /* see if we might be in the right directory... */
  14.  
  15. '@Echo off'
  16. 'cls'
  17.  
  18. say'     ┌───────────────────────────────────────────────────────────────────┐'
  19. say'     │                  FM/2 2.x Installation Program                    │'
  20. say'     │             FM/2 is copyright (c) 1993-95 by M. Kimes             │'
  21. say'     │                       All rights reserved                         │'
  22. say'     ├───────────────────────────────────────────────────────────────────┤'
  23. say'     ├───────────────────────────────────────────────────────────────────┤'
  24. say'     │                Have you read the READ.ME file yet?                │'
  25. say'     │        By running this program, you agree to the license          │'
  26. say'     │                     as specified in that file,                    │'
  27. say'     │      and it tells you how to install, so you should read it.      │'
  28. say'     └───────────────────────────────────────────────────────────────────┘'
  29.  
  30. /*
  31.  * allow user to eliminate associations from being placed on AV/2.
  32.  * seemed to upset some fellow on CIS (I guess he doesn't know about
  33.  * Settings notebooks on WPS objects).
  34.  */
  35. assocfilter = ';ASSOCFILTER=*.ZIP,*.ARC,*.LZH,*.ARJ,*.ZOO,*.MO0,READ.ME,README,README.1ST,README.OS2,REGISTER.TXT'
  36. existed = ''
  37. parse upper arg dummy
  38. if dummy = 'NOASSOC' then assocfilter = ''
  39.  
  40. rc = stream('fm3.exe','c','query exists')
  41. if rc = '' then
  42. do
  43.   say 'Sorry, FM3.EXE not found.  Must not be right directory.  Terminating.'
  44.   exit
  45. end
  46.  
  47. /* tell user what we're doing, give him a chance to hit CTRL-C */
  48.  
  49. say ''
  50. say 'This program creates objects for FM/2.'
  51. say ''
  52.  
  53.  
  54.  
  55. /* NOTE:  remove following 3 lines for unattended use... */
  56. say 'Press [Enter].'
  57. pull dummy .
  58. say ''
  59.  
  60.  
  61. /* save current directory */
  62.  
  63. curdir = directory()
  64.  
  65. /* load rexx utility functions */
  66.  
  67. call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  68. call SysLoadFuncs
  69.  
  70. /* say it, then do it */
  71.  
  72. say "Creating File Manager/2 folder and program objects..."
  73.  
  74. /* first, create FM/2 folder */
  75.  
  76. title = "File Manager/2"
  77. classname = 'WPFolder'
  78. location = '<WP_DESKTOP>'
  79. setup = 'OBJECTID=<FM3_Folder>;OPEN=DEFAULT'
  80. result=SysCreateObject(classname,title,location,setup,f)
  81.  
  82. /* NOTE:  remove following 9 lines for unattended use... */
  83. if result = 0 then
  84. do
  85.   assocfilter = ''
  86.   existed = 'TRUE'
  87.   say ''
  88.   say 'The File Manager/2 folder already exists.'
  89.   say 'Should I update the objects? (Y/N)'
  90.   parse upper pull dummy
  91.   if left(dummy,1) = 'N' then exit
  92.   say ''
  93. end
  94.  
  95. /* now, create program objects in FM/2 folder */
  96.  
  97. title = "FM/2"
  98. classname = 'WPProgram'
  99. location = '<FM3_Folder>'
  100. setup = 'EXENAME='curdir'\FM3.EXE;STARTUPDIR='curdir
  101. if existed = '' then setup = setup';PARAMETERS=%*'
  102. call SysCreateObject classname,title,location,setup,u
  103.  
  104. rc = stream('av2.exe','c','query exists')
  105. if rc \= '' then
  106. do
  107.   title = "Archive Viewer/2"
  108.   classname = 'WPProgram'
  109.   location = '<FM3_Folder>'
  110.   setup = 'EXENAME='curdir'\AV2.EXE;STARTUPDIR='curdir''assocfilter
  111.   if existed = '' then setup = setup';PARAMETERS=%*'
  112.   call SysCreateObject classname,title,location,setup,u
  113. end
  114.  
  115. rc = stream('doicon.exe','c','query exists')
  116. if rc \= '' then
  117. do
  118.   title = "SysIcon"
  119.   classname = 'WPProgram'
  120.   location = '<FM3_Folder>'
  121.   setup = 'EXENAME='curdir'\DOICON.EXE;STARTUPDIR='curdir
  122.   if existed = '' then setup = setup';PARAMETERS=%*'
  123.   call SysCreateObject classname,title,location,setup,u
  124. end
  125.  
  126. rc = stream('eas.exe','c','query exists')
  127. if rc \= '' then
  128. do
  129.   title = "EA Viewer"
  130.   classname = 'WPProgram'
  131.   location = '<FM3_Folder>'
  132.   setup = 'EXENAME='curdir'\EAS.EXE;STARTUPDIR='curdir
  133.   if existed = '' then setup = setup';PARAMETERS=%*'
  134.   call SysCreateObject classname,title,location,setup,u
  135. end
  136.  
  137. rc = stream('ini.exe','c','query exists')
  138. if rc \= '' then
  139. do
  140.   title = "INI Viewer"
  141.   classname = 'WPProgram'
  142.   location = '<FM3_Folder>'
  143.   setup = 'EXENAME='curdir'\INI.EXE;STARTUPDIR='curdir';ASSOCFILTER=*.INI'
  144.   if existed = '' then setup = setup';PARAMETERS=%*'
  145.   call SysCreateObject classname,title,location,setup,u
  146. end
  147.  
  148. rc = stream('viewinfs.exe','c','query exists')
  149. if rc \= '' then
  150. do
  151.   title = "Bookshelf Viewer"
  152.   classname = 'WPProgram'
  153.   location = '<FM3_Folder>'
  154.   setup = 'EXENAME='curdir'\VIEWINFS.EXE;STARTUPDIR='curdir
  155.   call SysCreateObject classname,title,location,setup,u
  156.   title = "Helpfile Viewer"
  157.   classname = 'WPProgram'
  158.   location = '<FM3_Folder>'
  159.   setup = 'EXENAME='curdir'\VIEWINFS.EXE;PARAMETERS=DUMMY;STARTUPDIR='curdir
  160.   call SysCreateObject classname,title,location,setup,u
  161. end
  162.  
  163. rc = stream('killproc.exe','c','query exists')
  164. if rc \= '' then
  165. do
  166.   title = "Process Killer"
  167.   classname = 'WPProgram'
  168.   location = '<FM3_Folder>'
  169.   setup = 'EXENAME='curdir'\KILLPROC.EXE;PARAMETERS=%;STARTUPDIR='curdir
  170.   call SysCreateObject classname,title,location,setup,u
  171. end
  172.  
  173. rc = stream('undel.exe','c','query exists')
  174. if rc \= '' then
  175. do
  176.   title = "Undeleter"
  177.   classname = 'WPProgram'
  178.   location = '<FM3_Folder>'
  179.   setup = 'EXENAME='curdir'\UNDEL.EXE;STARTUPDIR='curdir
  180.   if existed = '' then setup = setup';PARAMETERS=%*'
  181.   call SysCreateObject classname,title,location,setup,u
  182. end
  183.  
  184. rc = stream('vtree.exe','c','query exists')
  185. if rc \= '' then
  186. do
  187.   title = "Visual Tree"
  188.   classname = 'WPProgram'
  189.   location = '<FM3_Folder>'
  190.   setup = 'EXENAME='curdir'\VTREE.EXE;STARTUPDIR='curdir
  191.   call SysCreateObject classname,title,location,setup,u
  192. end
  193.  
  194. rc = stream('vdir.exe','c','query exists')
  195. if rc \= '' then
  196. do
  197.   title = "Visual Directory"
  198.   classname = 'WPProgram'
  199.   location = '<FM3_Folder>'
  200.   setup = 'EXENAME='curdir'\VDIR.EXE;STARTUPDIR='curdir
  201.   if existed = '' then setup = setup';PARAMETERS=%*'
  202.   call SysCreateObject classname,title,location,setup,u
  203. end
  204.  
  205. rc = stream('vcollect.exe','c','query exists')
  206. if rc \= '' then
  207. do
  208.   title = "Collector"
  209.   classname = 'WPProgram'
  210.   location = '<FM3_Folder>'
  211.   setup = 'EXENAME='curdir'\VCOLLECT.EXE;STARTUPDIR='curdir
  212.   call SysCreateObject classname,title,location,setup,u
  213. end
  214.  
  215. rc = stream('READ.ME','c','query exists')
  216. if rc \= '' then
  217. do
  218.   title = "Read.Me"
  219.   classname = 'WPShadow'
  220.   location = '<FM3_Folder>'
  221.   setup = 'SHADOWID='rc
  222.   call SysCreateObject classname,title,location,setup,u
  223. end
  224.  
  225. rc = stream('HISTORY.TXT','c','query exists')
  226. if rc \= '' then
  227. do
  228.   title = "History.Txt"
  229.   classname = 'WPShadow'
  230.   location = '<FM3_Folder>'
  231.   setup = 'SHADOWID='rc
  232.   call SysCreateObject classname,title,location,setup,u
  233. end
  234.  
  235. rc = stream('REGISTER.TXT','c','query exists')
  236. if rc \= '' then
  237. do
  238.   title = "Register.Txt"
  239.   classname = 'WPShadow'
  240.   location = '<FM3_Folder>'
  241.   setup = 'SHADOWID='rc
  242.   call SysCreateObject classname,title,location,setup,u
  243. end
  244.  
  245. rc = stream('ASSOCIAT.TXT','c','query exists')
  246. if rc \= '' then
  247. do
  248.   title = "Associat.Txt"
  249.   classname = 'WPShadow'
  250.   location = '<FM3_Folder>'
  251.   setup = 'SHADOWID='rc
  252.   call SysCreateObject classname,title,location,setup,u
  253. end
  254.  
  255. rc = stream('FM3.HLP','c','query exists')
  256. if rc \= '' then
  257. do
  258.   rc = stream('SEEHELP.EXE','c','query exists')
  259.   if rc \= '' then
  260.   do
  261.     title = "FM/2 Online Help"
  262.     classname = 'WPProgram'
  263.     location = '<FM3_Folder>'
  264.     setup = 'EXENAME='curdir'\SEEHELP.EXE;STARTUPDIR='curdir';PARAMETERS='curdir'\FM3.HLP'
  265.     call SysCreateObject classname,title,location,setup,u
  266.   end
  267. end
  268.  
  269. /*
  270.  * create an FM2.CMD file that the user can copy into a directory
  271.  * in their PATH if they'd like to be able to start FM/2 from any
  272.  * directory via command line.
  273.  */
  274.  
  275. 'del FM2.CMD 1>NUL 2>NUL'
  276. dummy = stream('FM2.CMD','C','open')
  277. if dummy = 'READY:' then
  278. do
  279.   say 'Creating an FM2.CMD file.'
  280.   call lineout 'FM2.CMD', "/* FM/2 command file.  Locate in a directory"
  281.   call lineout 'FM2.CMD', " * on your PATH. */"
  282.   call lineout 'FM2.CMD', "'@echo off'"
  283.   call lineout 'FM2.CMD', "arg dummy"
  284.   call lineout 'FM2.CMD', "if dummy = '' then"
  285.   call lineout 'FM2.CMD', "  curdir = directory()"
  286.   call lineout 'FM2.CMD', "else"
  287.   call lineout 'FM2.CMD', "  curdir = ''"
  288.   call lineout 'FM2.CMD', "n = setlocal()"
  289.   call lineout 'FM2.CMD', "n = directory('"curdir"')"
  290.   call lineout 'FM2.CMD', "'start fm3.exe 'curdir' %1 %2 %3 %4 %5 %6 %7 %8 %9'"
  291.   call lineout 'FM2.CMD', "n = endlocal()"
  292.   call stream 'FM2.CMD','C','close'
  293.   'del AV2.CMD 1>NUL 2>NUL'
  294.   dummy = stream('AV2.CMD','C','open')
  295.   if dummy = 'READY:' then
  296.   do
  297.     say 'Creating an AV2.CMD file.'
  298.     call lineout 'AV2.CMD', "/* AV/2 command file.  Locate in a directory"
  299.     call lineout 'AV2.CMD', " * on your PATH. */"
  300.     call lineout 'AV2.CMD', "'@echo off'"
  301.     call lineout 'AV2.CMD', "n = directory('"curdir"')"
  302.     call lineout 'AV2.CMD', "'start av2.exe %1 %2 %3 %4 %5 %6 %7 %8 %9'"
  303.     call stream 'AV2.CMD','C','close'
  304.   end
  305.   else say "Couldn't create AV2.CMD file."
  306.   say ''
  307. end
  308. else say "Couldn't create FM2.CMD file."
  309. say ''
  310.  
  311. rc = stream('fm3.ini','c','query exists')
  312. if rc \= '' then
  313.   say 'An FM3.INI exists -- not attempting to migrate 1.x information.'
  314. else
  315. do
  316.   /* if we can find FM2.INI, run MIGINI.CMD */
  317.   fm2ini = value('fm2ini',,'OS2ENVIRONMENT')
  318.   if fm2ini \= '' then fm2ini = stream(fm2ini,'c','query exists')
  319.   if fm2ini = '' then
  320.   do
  321.     fm2ini = value('fm2ini',,'OS2ENVIRONMENT')
  322.     if fm2ini \= '' then
  323.     do
  324.       fm2ini = insert('\FM2.INI',fm2ini,length(fm2ini))
  325.       fm2ini = stream(fm2ini,'c','query exists')
  326.     end
  327.   end
  328.   fm2ini = SysSearchPath('PATH', 'FM2.INI')
  329.   if fm2ini = '' then fm2ini = SysSearchPath('DPATH', 'FM2.INI')
  330.   if fm2ini = '' then fm2ini = SysSearchPath('XPATH', 'FM2.INI')
  331.   if fm2ini \= '' then
  332.   do
  333.     'call migini.cmd dummy'
  334.     say ''
  335.     say '  (You can remove the old FM/2 1.x files when installation completes.)'
  336.     call SysSleep 2
  337.     say ''
  338.   end
  339. end
  340.  
  341. rc = stream('install.dat','c','query exists')
  342. if rc \= '' then
  343. do
  344.   /* type the install.dat file to show any critical info/notices */
  345.  
  346.   /* NOTE:  remove following 4 lines for unattended use... */
  347.   rc = stream('install.dat','c','query exists')
  348.   if rc \= '' then 'type install.dat'
  349.   say 'Press [Enter].'
  350.   pull dummy .
  351. end
  352.  
  353. say 'To move FM/2 to another directory, move the files, delete the FM/2 folder,'
  354. say 'then rerun INSTALL.  To remove FM/2, run UNINSTAL and follow its directions.'
  355. say "If you'd like to be able to run FM/2 from any OS/2 command line, copy the"
  356. say 'FM2.CMD file in this directory to a directory on your PATH.  I also built'
  357. say 'an AV2.CMD file you may also want on your PATH.'
  358. say ''
  359. say "I'm done now."
  360.  
  361.