home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / OS2 / FLEETB85.ZIP / INSTALL.CMD < prev    next >
OS/2 REXX Batch file  |  1994-03-20  |  11KB  |  286 lines

  1. /* ─────────────────────────────────────────────────────────────────────────
  2.    FLEETSTREET Install - script
  3.  
  4.    JUST RUN IT
  5.   ────────────────────────────────────────────────────────────────────────── */
  6.  
  7. Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  8. Call SysLoadFuncs
  9. Call SysCls
  10.  
  11. Signal On Halt Name SignalHandler
  12.  
  13. CALL SysCls
  14. SAY '╔═══════════════════════════════════════════════════════════╗'
  15. SAY '║                                                           ║'
  16. SAY '║                FleetStreet Installation                   ║'
  17. SAY '║                                                           ║'
  18. SAY '╚═══════════════════════════════════════════════════════════╝'
  19. SAY '                                                             '
  20.  
  21. /* get defaults
  22.    ──────────────────────────────────── */
  23. Lang    =       Prompt( 'Sprache/Language (D/E)          [E]:', 'E',        'DE' )
  24. SrcDir  = Directory()
  25. IF Lang='D' THEN
  26.       DestDir = Prompt( 'Zielverzeichnis          [C:\Fleet]:', 'C:\Fleet', ''   )
  27.    ELSE
  28.       DestDir = Prompt( 'Target directory         [C:\Fleet]:', 'C:\Fleet', ''   )
  29. IF Lang='D' THEN
  30.       Cr_Obj  = Prompt( 'WPS-Objekt erzeugen? (J/N)      [J]:', 'J',        'JN' )
  31.    ELSE
  32.       Cr_Obj  = Prompt( 'Create WPS object (Y/N)         [Y]:', 'Y',        'YN' )
  33.  
  34.  
  35. /* correct pathnames
  36.    ──────────────────────────────────── */
  37. IF RIGHT( SrcDir,  1) = '\' THEN
  38.     SrcDir  = LEFT(SrcDir,  LENGTH(SrcDir) -1)
  39. IF RIGHT( DestDir, 1) = '\' THEN
  40.     DestDir = LEFT(DestDir, LENGTH(DestDir)-1)
  41.  
  42.  
  43. /* All OK ?
  44.    ──────────────────────────────────── */
  45. CALL SysCls
  46. SAY '╔═══════════════════════════════════════════════════════════╗'
  47. SAY '║                                                           ║'
  48. SAY '║                FleetStreet Installation                   ║'
  49. SAY '║                                                           ║'
  50. SAY '╚═══════════════════════════════════════════════════════════╝'
  51. SAY '                                                             '
  52. SAY '                                                             '
  53. IF Lang='D' THEN
  54.       SAY ' Sprache                : Deutsch'
  55.    ELSE
  56.       SAY ' Language               : English'
  57. IF Lang='D' THEN
  58.       SAY ' Quellverzeichnis       : 'SrcDir
  59.    ELSE
  60.       SAY ' Source Directory       : 'SrcDir
  61. IF Lang='D' THEN
  62.       SAY ' Zielverzeichnis        : 'DestDir
  63.    ELSE
  64.       SAY ' Installation Directory : 'DestDir
  65. IF Lang='D' THEN
  66.       SAY ' WPS-Objekt erzeugen    : 'Cr_Obj
  67.    ELSE
  68.       SAY ' create WPS object      : 'Cr_Obj
  69. SAY
  70. SAY
  71. IF Lang='D' THEN
  72.    reply = Prompt( 'In Ordnung? (J/N)   [J]:', 'J', 'JN', )
  73. ELSE
  74.    reply = Prompt( 'Correct? (Y/N)  [Y]:', 'Y', 'YN', )
  75.  
  76. IF reply = 'N' THEN
  77.    EXIT
  78.  
  79.  
  80. CALL SysCls
  81. SAY '╔═══════════════════════════════════════════════════════════╗'
  82. SAY '║                                                           ║'
  83. SAY '║                FleetStreet Installation                   ║'
  84. SAY '║                                                           ║'
  85. SAY '╚═══════════════════════════════════════════════════════════╝'
  86. SAY '                                                             '
  87. SAY '                                                             '
  88.  
  89. /* check destination directory
  90.    ──────────────────────────────────── */
  91. Call SysFileTree DestDir, Dirs, 'D'
  92.  
  93. /* Directory nicht da  */
  94. If Dirs.0 = '0' & Lang = 'D' THEN DO
  95.    SAY 'Das Verzeichnis "'DestDir'" existiert nicht.'
  96.    SAY
  97.    answer = Prompt( 'Verzeichnis erstellen? (J/N)       [J]:', 'J', 'JN', )
  98.    SAY
  99.    IF answer = 'J' THEN DO
  100.       SAY 'Erzeuge Verzeichnis 'DestDir' ....'
  101.       rc = SysMkDir( DestDir )
  102.       IF rc = 0 THEN
  103.          SAY 'Das Verzeichnis "'DestDir'" wurde erzeugt.'
  104.       ELSE DO
  105.          SAY 'Fehler beim Erzeugen von "'DestDir'". Abbruch der Installation'
  106.          EXIT
  107.          END
  108.       END /* do if answer */
  109.     ELSE
  110.       EXIT
  111. END /* if dirs.0 */
  112.  
  113. If Dirs.0 = '0' & Lang = 'E' THEN DO
  114.    SAY 'The "'DestDir'" directory does not exist on your hard drive.'
  115.    SAY
  116.    answer = Prompt( 'create directory? (Y/N)       [Y]:', 'Y', 'YN', )
  117.    SAY
  118.    IF answer = 'Y' THEN DO
  119.       SAY 'Creating 'DestDir' ...'
  120.       rc = SysMkDir( DestDir )
  121.       IF rc = 0 THEN
  122.          SAY 'The directory "'DestDir'" was created successfully.'
  123.       ELSE DO
  124.          SAY 'The directory "'DestDir'" could not be created. Exiting installation'
  125.          EXIT
  126.          END
  127.       END /* do */
  128.    ELSE
  129.       EXIT
  130. End /* if dirs.0 */
  131.  
  132.  
  133.  
  134. /* correct pathnames for copy
  135.    ──────────────────────────────────── */
  136. SrcDir  = SrcDir||'\'
  137. DestDir = DestDir||'\'
  138.  
  139. if SrcDir <> DestDir then
  140.    do
  141.    CALL FileCopy SrcDir||'FltStrt.exe'  DestDir||'FltStrt.exe'
  142.    CALL FileCopy SrcDir||'EDITWIN.DLL'  DestDir||'EditWin.dll'
  143.    CALL FileCopy SrcDir||'FLTV7.DLL'    DestDir||'FltV7.dll'
  144.    CALL FileCopy SrcDir||'LAYOUTS.DLL'  DestDir||'Layouts.dll'
  145.    CALL FileCopy SrcDir||'msgview.DLL'  DestDir||'MsgView.dll'
  146.    CALL FileCopy SrcDir||'hmsg.DLL'     DestDir||'hmsg.dll'
  147.    CALL FileCopy SrcDir||'statline.DLL' DestDir||'statline.dll'
  148.    end
  149.  
  150. IF Lang = 'D' THEN DO
  151.    CALL FileCopy SrcDir||'german.hlp'    DestDir||'FltStrt.hlp'
  152.    CALL FileCopy SrcDir||'german.lng'    DestDir||'FleetLng.dll'
  153.    CALL FileCopy SrcDir||'readme.txt'    DestDir||'"ReadMe"'
  154.    CALL FileCopy SrcDir||'whatsnew.txt'  DestDir||'"WhatsNew"'
  155.    END
  156. ELSE DO
  157.    CALL FileCopy SrcDir||'english.hlp'   DestDir||'FltStrt.hlp'
  158.    CALL FileCopy SrcDir||'english.lng'   DestDir||'FleetLng.dll'
  159.    CALL FileCopy SrcDir||'readme.eng'    DestDir||'"ReadMe"'
  160.    CALL FileCopy SrcDir||'whatsnew.eng'  DestDir||'"WhatsNew"'
  161.    END
  162.  
  163.  
  164. /* Program objekt erstellen ? */
  165. CALL SysCls
  166. IF Cr_Obj = 'Y' | Cr_Obj = 'J' THEN
  167.    IF Lang = 'D' THEN DO
  168.       IF \SysCreateObject( "WPFolder",  "FleetStreet^Beta 0.85", "<WP_DESKTOP>" ,,
  169.          "OBJECTID=<FleetFldr>" , "R") THEN DO
  170.          SAY "Fehler beim Erzeugen des Ordners"
  171.          EXIT
  172.          END
  173.       IF \SysCreateObject( "WPProgram", "FleetStreet", "<FleetFldr>",,
  174.          "OBJECTID=<FleetPRG>;EXENAME="||DestDir||"\FltStrt.exe;STARTUPDIR="||DestDir, "R" ) THEN DO
  175.          SAY "Fehler beim Erzeugen des Programmobjekts"
  176.          EXIT
  177.          END
  178.       IF \SysCreateObject( "WPShadow", "ReadMe" , "<FleetFldr>",,
  179.          "SHADOWID="||DestDir||"ReadMe;OBJECTID=<FleetRdm>", "R" ) THEN DO
  180.          SAY "Fehler beim Erzeugen des 1. Readme-Objekts"
  181.          EXIT
  182.          END
  183.       IF \SysCreateObject( "WPShadow", "WhatsNew" , "<FleetFldr>",,
  184.          "SHADOWID="||DestDir||"WhatsNew;OBJECTID=<FleetNewRdm>", "R" ) THEN DO
  185.          SAY "Fehler beim Erzeugen des 3. Readme-Objekts"
  186.          EXIT
  187.          END
  188.       END
  189.    ELSE DO                                  /* english version */
  190.       IF \SysCreateObject( "WPFolder",  "FleetStreet^Beta 0.85", "<WP_DESKTOP>" ,,
  191.          "OBJECTID=<FleetFldr>" , "R") THEN DO
  192.          SAY "Error creating Folder"
  193.          EXIT
  194.          END
  195.       IF \SysCreateObject( "WPProgram", "FleetStreet", "<FleetFldr>",,
  196.          "OBJECTID=<FleetPRG>;EXENAME="||DestDir||"\FltStrt.exe;STARTUPDIR="||DestDir, "R" ) THEN DO
  197.          SAY "Error creating program object"
  198.          EXIT
  199.          END
  200.       IF \SysCreateObject( "WPShadow", "ReadMe" , "<FleetFldr>",,
  201.          "SHADOWID="||DestDir||"ReadMe;OBJECTID=<FleetRdm>", "R" ) THEN DO
  202.          SAY "Error creating 1st readme object"
  203.          EXIT
  204.          END
  205.       IF \SysCreateObject( "WPShadow", "WhatsNew" , "<FleetFldr>",,
  206.          "SHADOWID="||DestDir||"WhatsNew;OBJECTID=<FleetNewRdm>", "R" ) THEN DO
  207.          SAY "Error creating 3rd readme object"
  208.          EXIT
  209.          END
  210.       END
  211.  
  212. CALL SysCls
  213. IF Lang = 'D' THEN DO
  214.    Say '╔═══════════════════════════════════════════════════════════╗'
  215.    Say '║                                                           ║'
  216.    Say '║   Die Installation von FleetStreet ist fertig.            ║'
  217.    Say '║                                                           ║'
  218.    Say '║   Für neueste Infos lesen Sie die Dateien "ReadMe",       ║'
  219.    Say '║   und "WhatsNew".                                         ║'
  220.    Say '║                                                           ║'
  221.    Say '╚═══════════════════════════════════════════════════════════╝'
  222.    END  /* Do */
  223. ELSE DO
  224.    Say '╔══════════════════════════════════════════════════════╗'
  225.    Say '║                                                      ║'
  226.    Say '║   FleetStreet installation is complete               ║'
  227.    Say '║                                                      ║'
  228.    Say '║   For latest information read the files "ReadMe",    ║'
  229.    Say '║   and "WhatsNew".                                    ║'
  230.    Say '║                                                      ║'
  231.    Say '╚══════════════════════════════════════════════════════╝'
  232.    END
  233. Exit
  234.  
  235.  
  236. /* ───────────────────────────────────────────────────────────────────────
  237.    FileCopy
  238.    ─────────────────────────────────────────────────────────────────────── */
  239.    FileCopy:
  240.    PARSE ARG SrcFile DestFile
  241.  
  242.        IF Lang = 'D' THEN
  243.           SAY 'Kopiere 'SrcFile' nach 'DestFile
  244.        ELSE
  245.           SAY 'Copying 'SrcFile' to 'DestFile
  246.        '@Copy' SrcFile DestFile '>NUL'
  247.        if rc \= 0 Then Do
  248.           SAY 'Warning! 'SrcFile' could not be copied properly. PRESS YOUR FAVOURITE <ANY-KEY>'
  249.           Pull ConfirmIt
  250.           End
  251.        Return
  252.  
  253.  
  254. /* ────────────────────────────────────────────────────────────────────────
  255.    Prompt
  256.    ──────────────────────────────────────────────────────────────────────── */
  257.    Prompt:
  258.    PARSE Arg PrText, DefVal,  PossVal
  259.  
  260.        PARSE VALUE SysCurPos() WITH Row .             /* position of cursor   */
  261.        PARSE VALUE SysTextScreenSize() WITH NumRows . /* screen size          */
  262.        IF Row = NumRows - 1 THEN Row = Row - 1        /* end of screen?       */
  263.        Col = Length(PrText) + 2                       /* input                */
  264.        DO UNTIL answer \= ''
  265.           CALL SysCurPos Row, 1
  266.           SAY PrText                                  /* show input           */
  267.           CALL SysCurPos Row, Col
  268.           PARSE PULL answer
  269.           IF answer = '' THEN
  270.              answer = DefVal
  271.           IF PossVal \= '' THEN DO                    /* accept all inputs    */
  272.              answer = TRANSLATE(answer)
  273.              IF POS(answer,PossVal) = 0 THEN          /* if PossVal is empty  */
  274.                 answer = ''
  275.              END
  276.        END /* until */
  277.     RETURN answer
  278.  
  279.  
  280. /* ──────────────────────────────────────────────────────────────────
  281.    SignalHandler
  282.    ────────────────────────────────────────────────────────────────── */
  283. SignalHandler:
  284. Call SysCls
  285. Exit
  286.