home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / vrac_os2 / fleetb89.zip / INSTALL.CMD < prev    next >
OS/2 REXX Batch file  |  1994-06-21  |  13KB  |  329 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 translate(SrcDir) <> translate(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.    CALL FileCopy SrcDir||'clrsel.DLL'   DestDir||'clrsel.dll'
  149.    CALL FileCopy SrcDir||'fltrun.DLL'   DestDir||'fltrun.dll'
  150.    CALL FileCopy SrcDir||'fleetcom.exe'   DestDir||'fleetcom.exe'
  151.    end
  152.  
  153. IF Lang = 'D' THEN DO
  154.    CALL FileCopy SrcDir||'german.hlp'    DestDir||'FltStrt.hlp'
  155.    CALL FileCopy SrcDir||'german.lng'    DestDir||'FleetLng.dll'
  156.    CALL FileCopy SrcDir||'readme.txt'    DestDir||'"ReadMe"'
  157.    CALL FileCopy SrcDir||'whatsnew.txt'  DestDir||'"WhatsNew"'
  158.    CALL FileCopy SrcDir||'register.txt'  DestDir||'"Register"'
  159.    END
  160. ELSE DO
  161.    CALL FileCopy SrcDir||'english.hlp'   DestDir||'FltStrt.hlp'
  162.    CALL FileCopy SrcDir||'english.lng'   DestDir||'FleetLng.dll'
  163.    CALL FileCopy SrcDir||'readme.eng'    DestDir||'"ReadMe"'
  164.    CALL FileCopy SrcDir||'whatsnew.eng'  DestDir||'"WhatsNew"'
  165.    CALL FileCopy SrcDir||'register.eng'  DestDir||'"Register"'
  166.    END
  167.  
  168.  
  169. /* Program objekt erstellen ? */
  170. CALL SysCls
  171. IF Cr_Obj = 'Y' | Cr_Obj = 'J' THEN
  172.    IF Lang = 'D' THEN DO
  173.       IF \SysCreateObject( "WPFolder",  "FleetStreet^Beta 0.89", "<WP_DESKTOP>" ,,
  174.          "OBJECTID=<FleetFldr>" , "R") THEN DO
  175.          SAY "Fehler beim Erzeugen des Ordners"
  176.          EXIT
  177.          END
  178.       IF \SysCreateObject( "WPProgram", "FleetStreet", "<FleetFldr>",,
  179.          "OBJECTID=<FleetPRG>;EXENAME="||DestDir||"\FltStrt.exe;STARTUPDIR="||DestDir, "R" ) THEN DO
  180.          SAY "Fehler beim Erzeugen des Programmobjekts"
  181.          EXIT
  182.          END
  183.       IF \SysCreateObject( "WPShadow", "ReadMe" , "<FleetFldr>",,
  184.          "SHADOWID="||DestDir||"ReadMe;OBJECTID=<FleetRdm>", "R" ) THEN DO
  185.          SAY "Fehler beim Erzeugen des 1. Readme-Objekts"
  186.          EXIT
  187.          END
  188.       IF \SysCreateObject( "WPShadow", "WhatsNew" , "<FleetFldr>",,
  189.          "SHADOWID="||DestDir||"WhatsNew;OBJECTID=<FleetNewRdm>", "R" ) THEN DO
  190.          SAY "Fehler beim Erzeugen des 2. Readme-Objekts"
  191.          EXIT
  192.          END
  193.       IF \SysCreateObject( "WPShadow", "Register" , "<FleetFldr>",,
  194.          "SHADOWID="||DestDir||"Register;OBJECTID=<FleetRegister>", "R" ) THEN DO
  195.          SAY "Fehler beim Erzeugen des 3. Readme-Objekts"
  196.          EXIT
  197.          END
  198.       END
  199.    ELSE DO                                  /* english version */
  200.       IF \SysCreateObject( "WPFolder",  "FleetStreet^Beta 0.89", "<WP_DESKTOP>" ,,
  201.          "OBJECTID=<FleetFldr>" , "R") THEN DO
  202.          SAY "Error creating Folder"
  203.          EXIT
  204.          END
  205.       IF \SysCreateObject( "WPProgram", "FleetStreet", "<FleetFldr>",,
  206.          "OBJECTID=<FleetPRG>;EXENAME="||DestDir||"\FltStrt.exe;STARTUPDIR="||DestDir, "R" ) THEN DO
  207.          SAY "Error creating program object"
  208.          EXIT
  209.          END
  210.       IF \SysCreateObject( "WPShadow", "ReadMe" , "<FleetFldr>",,
  211.          "SHADOWID="||DestDir||"ReadMe;OBJECTID=<FleetRdm>", "R" ) THEN DO
  212.          SAY "Error creating 1st readme object"
  213.          EXIT
  214.          END
  215.       IF \SysCreateObject( "WPShadow", "WhatsNew" , "<FleetFldr>",,
  216.          "SHADOWID="||DestDir||"WhatsNew;OBJECTID=<FleetNewRdm>", "R" ) THEN DO
  217.          SAY "Error creating 2nd readme object"
  218.          EXIT
  219.          END
  220.       IF \SysCreateObject( "WPShadow", "Register" , "<FleetFldr>",,
  221.          "SHADOWID="||DestDir||"Register;OBJECTID=<FleetRegister>", "R" ) THEN DO
  222.          SAY "Error creating 3rd readme object"
  223.          EXIT
  224.          END
  225.       END
  226.  
  227. '@chkdll'
  228. CALL SysCls
  229. if rc <> 0 then do
  230.    if Lang = 'D' then do
  231.       Say center('Achtung!', 78)
  232.       Say ''
  233.       Say ' Die Datei MSGAPI32.DLL wurde nicht gefunden. Stellen Sie sicher,'
  234.       Say ' daß die DLL beim Start von FleetStreet geladen werden kann. Die'
  235.       Say ' DLL muß dazu im FleetStreet-Verzeichnis stehen oder in einem'
  236.       Say ' anderen Verzeichnis, das im LIBPATH eingetragen ist. FleetStreet'
  237.       Say ' ist ohne diese DLL nicht lauffähig.'
  238.       Say ''
  239.       Say 'Bitte Enter drücken.'
  240.       Pull ConfirmIt
  241.       end
  242.    else do
  243.       Say center('Warning!', 78)
  244.       Say ''
  245.       Say ' The file MSGAPI32.DLL could not be found. Make shure that this'
  246.       Say ' DLL can be loaded when starting FleetStreet. The DLL must be'
  247.       Say ' located in the FleetStreet directory or in one of the directories'
  248.       Say ' listed in LIBPATH. FleetStreet will not run without this DLL.'
  249.       Say ''
  250.       Say 'Press Enter to continue.'
  251.       Pull ConfirmIt
  252.       end
  253.    END
  254.  
  255. CALL SysCls
  256. IF Lang = 'D' THEN DO
  257.    Say '╔═══════════════════════════════════════════════════════════╗'
  258.    Say '║                                                           ║'
  259.    Say '║   Die Installation von FleetStreet ist fertig.            ║'
  260.    Say '║                                                           ║'
  261.    Say '║   Für neueste Infos lesen Sie die Dateien "ReadMe",       ║'
  262.    Say '║   und "WhatsNew".                                         ║'
  263.    Say '║                                                           ║'
  264.    Say '╚═══════════════════════════════════════════════════════════╝'
  265.    END  /* Do */
  266. ELSE DO
  267.    Say '╔══════════════════════════════════════════════════════╗'
  268.    Say '║                                                      ║'
  269.    Say '║   FleetStreet installation is complete               ║'
  270.    Say '║                                                      ║'
  271.    Say '║   For latest information read the files "ReadMe",    ║'
  272.    Say '║   and "WhatsNew".                                    ║'
  273.    Say '║                                                      ║'
  274.    Say '╚══════════════════════════════════════════════════════╝'
  275.    END
  276. Exit
  277.  
  278.  
  279. /* ───────────────────────────────────────────────────────────────────────
  280.    FileCopy
  281.    ─────────────────────────────────────────────────────────────────────── */
  282.    FileCopy:
  283.    PARSE ARG SrcFile DestFile
  284.  
  285.        IF Lang = 'D' THEN
  286.           SAY 'Kopiere 'SrcFile' nach 'DestFile
  287.        ELSE
  288.           SAY 'Copying 'SrcFile' to 'DestFile
  289.        '@Copy' SrcFile DestFile '>NUL'
  290.        if rc \= 0 Then Do
  291.           SAY 'Warning! 'SrcFile' could not be copied properly. PRESS YOUR FAVOURITE <ANY-KEY>'
  292.           Pull ConfirmIt
  293.           End
  294.        Return
  295.  
  296.  
  297. /* ────────────────────────────────────────────────────────────────────────
  298.    Prompt
  299.    ──────────────────────────────────────────────────────────────────────── */
  300.    Prompt:
  301.    PARSE Arg PrText, DefVal,  PossVal
  302.  
  303.        PARSE VALUE SysCurPos() WITH Row .             /* position of cursor   */
  304.        PARSE VALUE SysTextScreenSize() WITH NumRows . /* screen size          */
  305.        IF Row = NumRows - 1 THEN Row = Row - 1        /* end of screen?       */
  306.        Col = Length(PrText) + 2                       /* input                */
  307.        DO UNTIL answer \= ''
  308.           CALL SysCurPos Row, 1
  309.           SAY PrText                                  /* show input           */
  310.           CALL SysCurPos Row, Col
  311.           PARSE PULL answer
  312.           IF answer = '' THEN
  313.              answer = DefVal
  314.           IF PossVal \= '' THEN DO                    /* accept all inputs    */
  315.              answer = TRANSLATE(answer)
  316.              IF POS(answer,PossVal) = 0 THEN          /* if PossVal is empty  */
  317.                 answer = ''
  318.              END
  319.        END /* until */
  320.     RETURN answer
  321.  
  322.  
  323. /* ──────────────────────────────────────────────────────────────────
  324.    SignalHandler
  325.    ────────────────────────────────────────────────────────────────── */
  326. SignalHandler:
  327. Call SysCls
  328. Exit
  329.