home *** CD-ROM | disk | FTP | other *** search
/ TopWare Tools / TOOLS.iso / tools / top1628 / install.bat < prev    next >
Encoding:
DOS Batch File  |  1993-07-07  |  26.3 KB  |  947 lines

  1. @ECHO OFF
  2. REM ------------------------------------
  3. REM Install - BAT/BTM-file to install 4D
  4. REM Copyright (c) 1993 Bernd Schemmer
  5. REM
  6. REM last update: 07.07.93 /bs
  7. REM ------------------------------------
  8.  
  9. REM ------------------------------------
  10. REM show the logo
  11. CLS bla on whi
  12. ECHO. ╔════════════════════════════════════════════════════════════════════════════╗
  13. ECHO. ║--------------- INSTALL - Installations-Routine für 4D ---------------------║
  14. ECHO. ╚════════════════════════════════════════════════════════════════════════════╝
  15. ECHO.
  16.  
  17. REM ------------------------------------
  18. REM check if 4DOS is loaded
  19. REM
  20. IF "%@eval[2+2]" == "4" GOTO 4DOSLoaded
  21.    ECHO. Was'n das???
  22.    ECHO.
  23.    ECHO. Ein Menuesystem für _4DOS_ installieren wollen -- aber kein 4DOS installiert??
  24.    ECHO.
  25.    ECHO. Sorry, aber _das_ geht nun wirklich nicht.
  26.    ECHO.
  27.    GOTO DOSEnde
  28.  
  29. REM ------------------------------------
  30. REM speed up the execution
  31. REM
  32. :4DOSLoaded
  33. LOADBTM ON
  34. SETLOCAL
  35.  
  36. REM Unset environment variables used by INSTALL
  37. UNSET /Q installed tdir checking upath
  38.  
  39. REM Unset environment variables overwriting the internal 4DOS variables
  40. UNSET /Q _date _time _cpu _monitor _video _columns _rows
  41. UNSET /Q _dos _dosver _4ver _env _alias
  42.  
  43. *SET iErr=1 >&NUL
  44.  
  45. REM ------------------------------------
  46. REM check 4DOS version
  47. REM
  48. IFF %@int[%_4ver]0 LT 40 THEN
  49.     ECHO.
  50.     ECHO. INSTALL-Fehler: Sorry, aber 4D benötigt mindestens 4DOS Version 4.0!
  51.     GOTO DOSEnde
  52. ENDIFF
  53.  
  54. REM ------------------------------------
  55. REM check if the output of install goes on the screen
  56. REM GOTO XXX
  57.  
  58. *SET x=%_column
  59. *SET y=%_row
  60. ECHO.X
  61. IFF "%@readscr[%y%,%x%,1]" != "X" THEN
  62.     ECHO.                                                                  >CON
  63.     ECHO. INSTALL-Fehler: Sie können INSTALL NICHT mit einer Umleitung der >CON
  64.     ECHO.                 Ausgabe aufrufen!                               >CON
  65.     ECHO.                 (Tja, so ist das Leben, was?)                    >CON
  66.     GOTO DOSEnde
  67. ENDIFF
  68. SCREEN %y% %x% ` `
  69. SCREEN %y% %x%
  70. :XXX
  71.  
  72. REM ------------------------------------
  73. REM check free env space
  74. REM
  75. IFF 0%_env LT 0400 THEN
  76.     ECHO.
  77.     ECHO. INSTALL-Fehler: Sorry, aber das Installations-Programm für 4D benötigt
  78.     ECHO.                 min. 400 Byte freies Environment!
  79.     GOTO DOSEnde
  80. ENDIFF
  81.  
  82. REM ------------------------------------
  83. REM setup some vars for INSTALL.BAT
  84. REM
  85. *SET clrF=%_fg
  86. *SET clrB=%_bg
  87. IFF "%clrF%" EQ "%clrB%" THEN
  88.    *SET clrF=bla
  89.    *SET clrB=whi
  90. ENDIFF
  91.  
  92. IFF "%_monitor" == "COLOR" THEN
  93.     *SET clrM=red
  94. ELSE
  95.     *SET clrM=bla
  96. ENDIFF
  97.  
  98. *SET  _r1=%@eval[%_rows-5]
  99. *SET _r20=%@eval[%_rows-4]
  100. *SET _r21=%@eval[%_rows-3]
  101. *SET  _r3=%@eval[%_rows-2]
  102. *SET  _c1=%@eval[%_columns-2]
  103. *SET    x=%_column
  104. *SET    y=%_row
  105.  
  106. REM ------------------------------------
  107. REM get path of INSTALL.BAT
  108. REM
  109. *SET uPath=%@path[%@search[%0%]]
  110. if "%uPath%" == "" *SET uPath=%@path[%0%]
  111. if "%uPath%" == "" *SET uPath=%@path[%@search[%@name[%0%].%@ext[%0%]]]
  112. if "%uPath%" == "" *SET uPath=%_cwds
  113.  
  114. REM ------------------------------------
  115. REM check parameter(s)
  116. REM
  117. IF "%2%" != "" GOTO ShowUsage
  118.  
  119. IFF "%1%" != "" THEN
  120.    IF %@index["%1%",?] NE -1 GOTO ShowUsage
  121.    IF "%1%" == "-check" GOTO DoSystemCheck
  122.  
  123.    IF NOT isDir %1% GOTO ParmError
  124.    *SET tdir=%@full[%1%]
  125.    IF "%@substr[%tdir%,0,-1]" EQ "\" *SET %tdir%=%@substr[%tdir%,0,%@eval[%@len[%tdir%]-1]]
  126.    SCREEN %y% %x%
  127.    ECHO. Parameter (= Ziel-Verzeichnis für 4D) ist %tdir%
  128.    *SET x=%_column
  129.    *SET y=%_row
  130.    GOTO CheckTargetDir
  131. ENDIFF
  132.  
  133. REM ------------------------------------
  134. REM get the target directory for 4D
  135. REM
  136.  
  137. *SET «=C:\4DMAIN
  138.  
  139. :GetTargetDir
  140.  
  141. GOSUB BigBox
  142. SCREEN %_r20% 2
  143. ECHO. In welches Verzeichnis soll 4D installiert werden?
  144. SCREEN %_r21% 2
  145. ECHOS.` `
  146. ESET «
  147. *SET tdir=%[«]
  148. IF "%tdir%" == "" GOTO UserAbort
  149. GOSUB ClrBox
  150.  
  151. :CheckTargetDir
  152. GOSUB CheckDrive
  153. *SET tdir=%@full[%tdir%]
  154. IF "%@substr[%tdir%,0,-1]" EQ "\" *SET tdir=%@substr[%tdir%,0,%@eval[%@len[%tdir%]-1]]
  155.  
  156. IFF NOT IsDir %tdir% THEN
  157.     *SET msg=Verzeichnis %tdir% existiert nicht!
  158.     *SET msg1=Soll es erstellt werden (j/N, F1=Hilfe)?
  159.     GOSUB ShowMsg
  160.  
  161.     *SET hTopic=keys1
  162.     *SET keys=/K"NJnj[enter][esc][F1]"
  163.     GOSUB MyInkey
  164.  
  165.     IF "%c%" != "J" GOTO GetTargetDir
  166.     GOSUB ClrBox
  167.  
  168.     SCREEN %y% %x%
  169.     GOSUB MakeDir
  170.     *SET x=%_column
  171.     *SET y=%_row
  172.  
  173.     IFF "%iErr%" NE "" THEN
  174.         ECHO.
  175.         ECHO. INSTALL-Fehler: Fehler beim Erstellen des Verzeichnisses %tdir%!
  176.         GOTO InstallEnde
  177.     ENDIFF
  178.  
  179. ELSEIFF EXIST %tdir%\*.* THEN
  180.     *SET msg=Verzeichnis %tdir% ist NICHT leer!
  181.     *SET msg1=Sollen die Dateien und Verzeichnisse (!) gelöscht werden (j/N, F1=Hilfe)?
  182.     GOSUB ShowMsg
  183. :GetKeyAgain
  184.     *SET hTopic=keys2
  185.     *SET keys=/K"NJnjDd[enter][esc][F1]"
  186.     GOSUB MyInkey
  187.  
  188.     IFF "%c%" == "D" THEN
  189.         dir /s /A /Oge %tdir% | *SET f="%@select[con,3,2,%@eval[%_rows-6],%_columns, Inhalt des Directorys %tdir% ]"
  190.     ENDIFF
  191.     IF "%c%" == "D" GOTO /I GetKeyAgain
  192.  
  193.     IF "%c%" != "J" GOTO GetTargetDir
  194.     GOSUB ClrBox
  195.  
  196.     IFF %@len[%tdir%] LE 3 THEN
  197.         SCREEN %y% %x%
  198.         ECHO.
  199.         ECHO. INSTALL-Fehler: Ich glaube nicht, daß Sie wirklich Ihr Root-Verzeichnis
  200.         ECHO.                 von %tdir% löschen wollen!
  201.         ECHO.                 Naja, auf jeden Fall mache _ich_ sowas auf keinen Fall!
  202.         GOTO InstallEnde
  203.     ENDIFF
  204.  
  205.     *SET cc=%@char[%@eval[ (%@substr[%_time,6,2] %% 26 )+65]]
  206.  
  207.     *SET msg=Verzeichnis %tdir% soll gelöscht werden.
  208.     *SET msg1=Bitte bestätigen Sie dies mit der Taste '%cc%'!
  209.     GOSUB ShowMsg
  210.  
  211.     *SET hTopic=keys6
  212.     *SET keys=/K"%cc%[enter][esc][F1]"
  213.     GOSUB MyInkey
  214.  
  215.     IF "%c%" != "%cc%" GOTO GetTargetDir
  216.     GOSUB ClrBox
  217.  
  218.     SCREEN %y% %x%
  219.     ECHO. Lösche alle Dateien aus dem Verzeichnis %tdir% ...
  220.  
  221.     DEL /Q /S /Y /X /Z %tdir%\*.* >>&!c:\4dlog
  222.     *SET ErrCode=%_?
  223.     *SET x=%_column
  224.     *SET y=%_row
  225.  
  226.     IFF %ErrCode% != 0 .AND. %ErrCode% != 2 THEN
  227.         ECHO.
  228.         ECHO. INSTALL-Fehler: Fehler beim Löschen der Dateien
  229.         ECHO.                 im Verzeichnis %tdir% (4DOS-Fehler: %ErrCode%)!
  230.         GOTO InstallEnde
  231.     ENDIFF
  232.  
  233.     IFF NOT IsDir %tDir% THEN
  234.         MD %tdir% >>&!c:\4dlog
  235.         *SET ErrCode=%_?
  236.         IFF %ErrCode% != 0 THEN
  237.             ECHO.
  238.             ECHO. INSTALL-Fehler: Fehler beim Neu-Erstellen des Verzeichnisses
  239.             ECHO.                 %tdir% (4DOS-Fehler: %ErrCode%)!
  240.             GOTO InstallEnde
  241.         ENDIFF
  242.     ENDIFF
  243.     move c:\4dlog %tdir >>&!NUL
  244.  
  245.     UNSET /Q i
  246. ENDIFF
  247.  
  248. REM ------------------------------------
  249. REM install 4D ...
  250. REM
  251. :TargetDirOkay
  252.  
  253. SCREEN %y% %x%
  254. ECHO. Installiere 4D ins Verzeichnis %tdir% ...
  255. *SET x=%_column
  256. *SET y=%_row
  257.  
  258. *SET installed=N
  259.  
  260. IFF %@diskfree[%tdir%,k] LT 500 THEN
  261.     ECHO.
  262.     ECHO. INSTALL-Fehler: Zuwenig freier Speicher im Laufwerk %@subst[%@full[%tdir%],0,2]!
  263.     ECHO.                 4D belegt ca. 500 kb Speicher.
  264.     GOTO InstallEnde
  265. ENDIFF
  266.  
  267. *SET msg=4D wird nach %tdir% installiert. Bitte warten (F1 für Hilfe) ...
  268. *SET msg1=(Hinweis: Die Reaktion auf die Taste F1 kann etwas dauern)
  269. GOSUB ShowMsg
  270.  
  271.   *SET hTopic=keys7
  272.   *SET keys=/W0 /K"[esc][F1]"
  273.   UNSET /Q c
  274.   INKEY %keys% %%c >&NUL
  275.   IF "%c%" != "" GOSUB MyInkey0
  276.  
  277. cdd %tdir%
  278. *SET arcName=4DMAIN.EXE
  279. %upath%4DMAIN >>&!%tdir%\4dlog
  280. IF "%_?" NE "0" .OR. "%?" NE "0" GOTO ArcError
  281.  
  282.   *SET hTopic=keys7
  283.   *SET keys=/W0 /K"[esc][F1]"
  284.   UNSET /Q c
  285.   INKEY %keys% %%c >&NUL
  286.   IF "%c%" != "" GOSUB MyInkey0
  287.  
  288. copy %upath%show.com;4d.doc;4d.txt;dsinfo.txt . >>&!%tdir%\4dlog
  289.  
  290.   *SET hTopic=keys7
  291.   *SET keys=/W0 /K"[esc][F1]"
  292.   UNSET /Q c
  293.   INKEY %keys% %%c >&NUL
  294.   IF "%c%" != "" GOSUB MyInkey0
  295.  
  296. *SET newDir=CHECK
  297. GOSUB MakeOneDir
  298. CD CHECK
  299. copy /Q %uPath%INSTALL.BAT;*.HLP . >>&!%tdir%\4dlog
  300. CD ..
  301.  
  302.   *SET hTopic=keys7
  303.   *SET keys=/W0 /K"[esc][F1]"
  304.   UNSET /Q c
  305.   INKEY %keys% %%c >&NUL
  306.   IF "%c%" != "" GOSUB MyInkey0
  307.  
  308. *SET newDir=KEYS
  309. GOSUB MakeOneDir
  310. *SET arcName=4DKEYS.EXE
  311. CD KEYS
  312. %upath%4DKEYS >>&!%tdir%\4dlog
  313. IF "%_?" NE "0" .OR. "%?" NE "0" GOTO ArcError
  314. CD ..
  315.  
  316.   *SET hTopic=keys7
  317.   *SET keys=/W0 /K"[esc][F1]"
  318.   UNSET /Q c
  319.   INKEY %keys% %%c >&NUL
  320.   IF "%c%" != "" GOSUB MyInkey0
  321.  
  322. *SET newDir=HLP
  323. GOSUB MakeOneDir
  324. *SET arcName=4DHLP.EXE
  325. CD HLP
  326. %upath%4DHLP >>&!%tdir%\4dlog
  327. IF "%_?" NE "0" .OR. "%?" NE "0" GOTO ArcError
  328. CD ..
  329.  
  330.   *SET hTopic=keys7
  331.   *SET keys=/W0 /K"[esc][F1]"
  332.   UNSET /Q c
  333.   INKEY %keys% %%c >&NUL
  334.   IF "%c%" != "" GOSUB MyInkey0
  335.  
  336. *SET newDir=4DUSER
  337. GOSUB MakeOneDir
  338. *SET arcName=4DUSER.EXE
  339. CD 4DUSER
  340. %upath%4DUSER >>&!%tdir%\4dlog
  341. IF "%_?" NE "0" .OR. "%?" NE "0" GOTO ArcError
  342. CD ..
  343.  
  344. UNSET /Q installed
  345. *SET iErr=0
  346.  
  347. REM ------------------------------------
  348. REM check the system ...
  349. REM
  350. :DoSystemCheck
  351.  
  352. *SET sysout=%@unique[%tmp%]
  353. *SET systxt=%@full[%_disk%:SYSTEM.TXT]
  354.  
  355. *SET msg=INSTALL überprüft Ihr System. Bitte warten (F1 für Hilfe) ...
  356. *SET msg1=(Hinweis: Die Reaktion auf die Taste F1 kann etwas dauern)
  357. GOSUB ShowMsg
  358.  
  359. GOSUB CheckSystem
  360. GOSUB ClrBox
  361. copy %sysout% %systxt% >>&!%tdir%\4dlog
  362.  
  363. :clrKeys
  364. UNSET /Q c
  365. inkey /W0 %%c >&NUL
  366. IF "%c%     "!= "     " GOTO clrKeys
  367.  
  368. CLS %clrF% on %clrB%
  369. *SET f="%@select[%sysout%,0,0, %_r3, %_c1, 4D System-Überprüfungen ]"
  370.  
  371. IF EXIST 4DLOG DEL /Q 4dlog
  372.  
  373. IFF EXIST 4D.DOC .AND. "%1%" != "-check" THEN
  374.     *SET msg=Möchten Sie nun die allgemeine Dokumentation zu 4D durchlesen (J/n)?
  375.     GOSUB ShowMsg
  376.     *SET abort=N
  377.     *SET htopic=keys3
  378.     *SET keys= /K"NJnj[enter][esc][F1]"
  379.     GOSUB MyInkey
  380.  
  381.     GOSUB ClrBox
  382.     IFF "%c%" != "" .AND. "%c%" != "N" THEN
  383.         show 4D.DOC dsinfo.txt
  384.     ENDIFF
  385. ENDIFF
  386.  
  387. IFF "%1%" != "-check" THEN
  388.     SCREEN %y% %x%
  389.     ECHO. 4D ist nun im Verzeichnis %tdir% installiert.
  390.     ECHO.
  391.     ECHO. Damit Sie 4D jederzeit aufrufen können, müssen Sie entweder Ihren Pfad
  392.     ECHO. erweitern - z.B. mit
  393.     ECHO.
  394.     ECHO.     SET PATH=%%PATH%%;%tdir%
  395.     ECHO.
  396.     ECHO. oder aber einen Alias für den Aufruf von 4D erstellen - z.B.
  397.     ECHO.
  398.     ECHO.     ALIAS 4D=%tdir%\4D
  399.     ECHO.
  400.     ECHO. Vergessen Sie nicht, die Benutzer-Einstellungen in 4D einzurichten!
  401.     *SET x=%_column
  402.     *SET y=%_row
  403. ENDIFF
  404.  
  405. REM ------------------------------------
  406.  
  407. :InstallEnde
  408.     GOSUB clrBox
  409.  
  410. IF EXIST 4DLOG      describe 4dlog      "Log-Datei von INSTALL. Kann gelöscht werden!"
  411. IF EXIST SYSTEM.TXT describe SYSTEM.TXT "Protokoll der System-Überprüfungen von INSTALL"
  412. IF EXIST check\*.*  describe CHECK      "Installations-Programm für 4D"
  413.  
  414. IF EXIST %sysout% DEL /Q %sysout >&NUL
  415.  
  416. IFF "%installed%" == "N" THEN
  417.     ECHO. Achtung: Die Installation von 4D im Verzeichnis %tdir% ist NICHT
  418.     ECHO.          vollständig und sollte komplett gelöscht werden!
  419. ENDIFF
  420.  
  421. QUIT %iErr%
  422.  
  423. REM ------------------------------------
  424. REM ArcError - show an error message
  425. REM
  426. REM input: arcName = name of an archiv
  427. REM
  428. :ArcError
  429. ECHO.
  430. ECHO. INSTALL-Fehler: Fehler beim Entpacken des Archivs %arcName%!
  431. ECHO.
  432. GOTO InstallEnde
  433.  
  434. REM ------------------------------------
  435. :ParmError
  436. ECHO.
  437. ECHO. INSTALL-Fehler: Falscher Parameter (%1%) angegeben!
  438.  
  439. REM ------------------------------------
  440. :ShowUsage
  441. ECHO.
  442. ECHO. Aufruf: INSTALL {[targetDir│-check]}
  443. ECHO.
  444. ECHO. Parameter: targetDir - Zielverzeichnis für 4D
  445. ECHO.            -check    - Überprüfe nur, ob 4D auf der akt. Konfiguration läuft.
  446. ECHO.
  447. *SET iErr=255
  448. GOTO InstallEnde
  449.  
  450. REM ------------------------------------
  451. :UserAbort
  452. SCREEN %y% %x%
  453. ECHO. Install durch den Benutzer abgebrochen.
  454. ECHO.
  455. IFF "%checking%" != "" THEN
  456.     IFF EXIST %sysout% THEN
  457.         ECHO. Lösche die nur teilweise erstellte Datei %sysout% ...
  458.         DEL /Q %sysout%
  459.     ENDIFF
  460. ENDIFF
  461.  
  462. *SET x=%_column
  463. *SET y=%_row
  464.  
  465. *SET iErr=2
  466. GOTO InstallEnde
  467.  
  468. REM ------------------------------------
  469. REM some sub routines for install
  470. REM
  471.  
  472. REM ------------------------------------
  473. REM MakeOneDir - make a directory
  474. REM
  475. REM input: newdir = directory to make
  476. REM
  477. :MakeOneDir
  478.   SCREEN %y% %x%
  479.   ECHO. Erstelle das Verzeichnis %tdir%\%newDir% ...
  480.   *SET x=%_column
  481.   *SET y=%_row
  482.  
  483.   MD %tdir%\%newDir%
  484.  
  485.   IFF %_? != 0 THEN
  486.       ECHO.
  487.       ECHO. INSTALL-Fehler: Kann das Verzeichnis
  488.       ECHO.                 %tdir%\%newDir%
  489.       ECHO.                 nicht erstellen!
  490.       GOTO InstallEnde
  491.   ENDIFF
  492.  
  493.   *SET hTopic=keys7
  494.   *SET keys=/W0 /K"[esc][F1]"
  495.   UNSET /Q c
  496.   INKEY %keys% %%c >&NUL
  497.   IF "%c%" != "" GOSUB MyInkey0
  498.  
  499. RETURN
  500.  
  501. REM ------------------------------------
  502. REM MyInkey read a key and test for F1 and esc
  503. REM
  504. REM input: %keys% = parameter for inkey
  505. REM        %hTopic% = help topic
  506. REM        %upath% = path of INSTALL.BAT
  507. REM        %abort% = if N myinkey don't handles ESC
  508. REM
  509. REM output: %c% = pressed key
  510. REM
  511. :MyInkey
  512.   UNSET /q c
  513.   inkey %keys% %%c >&NUL
  514.  
  515. :MyInkey0
  516.   IFF "%c%" == "@59" THEN
  517.  
  518. :DelKeys
  519.       UNSET /Q c
  520.       inkey /w0 %%c >&NUL
  521.       IF "%c%   " != "   " GOTO /I DelKeys
  522.  
  523.       IFF EXIST %upath%%HTopic%.HLP THEN
  524.           *SET f="%@select[%upath%%hTopic%.HLP,1,17,%@eval[%_rows-6],60, INSTALL Online-Hilfe ]                        "
  525.           GOTO MyInkey
  526.       ELSE
  527.           *SET msg=Hilfstext-Datei %upath%%hTopic%.HLP nicht gefunden!
  528.           GOSUB ShowErr
  529.           GOTO MyInkey
  530.       ENDIFF
  531.   ELSEIFF "%c%" == "" .AND. "%abort%" != "N" THEN
  532.       UNSET /Q ask
  533.       ECHO. INSTALL abbrechen? Return=JA / ESC=NEIN | *SET ask=%@select[con, %_r1,2, %_r3, %_c1, Install-Sicherheits-Abfrage ]
  534.       IFF "%ask%" != "" THEN
  535.          GOSUB clrBox
  536.          GOTO UserAbort
  537.       ENDIFF
  538.       UNSET /Q ask c
  539.       GOTO MyInkey
  540.   ENDIFF
  541.   UNSET /Q keys
  542.   *SET c=%@upper[%c%]
  543. RETURN
  544.  
  545. REM ------------------------------------
  546. REM BigBox - draw a big box
  547. REM
  548. REM input: _r3, _r20 _r1
  549. REM
  550. :BigBox
  551.   drawbox %_r1 1 %_r3 %_c1 2 bla on whi FILL whi
  552.   screen  %_r20 1
  553. RETURN
  554.  
  555. REM ------------------------------------
  556. REM Clrbox - clear a big box
  557. REM
  558. REM input: _r3 _r1
  559. REM
  560. :ClrBox
  561.   drawbox %_r1 1 %_r3 %_c1 0 %clrB% on %clrB% FILL %clrB%
  562. RETURN
  563.  
  564. REM ------------------------------------
  565. REM ShowMsg - show a message in a big box
  566. REM
  567. REM input: _r20 _r21 msg
  568. REM
  569. :ShowMsg
  570.   GOSUB bigBox
  571.   scrput %_r20 %@int[%@eval[ (%_columns%/2) - (%@len[%msg%]/2) ]] %clrM% on whi %msg%` `
  572.   IFF "%msg1%" != "" THEN
  573.       scrput %_r21 %@int[%@eval[ (%_columns%/2) - (%@len[%msg1%]/2) ]] %clrM% on whi %msg1%` `
  574.   ENDIFF
  575.   *SET msg=
  576.   *SET msg1=
  577. RETURN
  578.  
  579. REM ------------------------------------
  580. REM showErr - show an error message in a popup window
  581. REM
  582. REM input: _r1 _r3 _c1 msg
  583. REM
  584. :showErr
  585.   ECHO. %msg% | *SET err="%@select[con, %_r20,1, %_r3, %_c1, Install-Fehlermeldung ]"
  586. RETURN
  587.  
  588. REM ------------------------------------
  589. REM CheckSystem - check the system
  590. REM
  591. REM input: sysout = file for the output
  592. REM
  593. :checkSystem
  594.   *SET checking=Y
  595.   *SET hTopic=keys4
  596.  
  597.   *SET keys=/W0 /K"[esc][F1]"
  598.   UNSET /Q c
  599.   INKEY %keys% %%c >&NUL
  600.   IF "%c%" != "" GOSUB MyInkey0
  601.  
  602.   IF EXIST %sysout% DEL /Q /Z %sysout%
  603.   ECHO.>!%sysout%
  604.   ECHO.---------------------------------------------------------------------->>%sysout%
  605.   ECHO.      Ergebnis der System-Überprüfungen vom %_date um %_time          >>%sysout%
  606.   ECHO.---------------------------------------------------------------------->>%sysout%
  607.   ECHO.                                                                      >>%sysout%
  608.   ECHO. Die System-Überprüfungen dienen dazu, festzustellen ob 4D auf        >>%sysout%
  609.   ECHO. Ihrer Rechner-Konfiguration läuft. Für alle überprüften Punkte       >>%sysout%
  610.   ECHO. finden Sie hier eine Beschreibung mit folgender Bewertung:           >>%sysout%
  611.   ECHO.                                                                      >>%sysout%
  612.   ECHO. Punkte die okay sind, sind mit dem Zeichen √ gekennzeichnet.         >>%sysout%
  613.   ECHO. Punkte, die geändert werden sollten, sind mit dem Zeichen ?          >>%sysout%
  614.   ECHO. gekennzeichnet. Und Punkte, die geändert werden müssen, sind         >>%sysout%
  615.   ECHO. mit dem Zeichen * gekennzeichnet.                                    >>%sysout%
  616.   ECHO.                                                                      >>%sysout%
  617.   ECHO. Hardware:                                                            >>%sysout%
  618.   ECHO. ---------                                                            >>%sysout%
  619.  
  620.   *SET keys=/W0 /K"[esc][F1]"
  621.   UNSET /Q c
  622.   INKEY %keys% %%c >&NUL
  623.   IF "%c%" != "" GOSUB MyInkey0
  624.  
  625.   IFF "%_cpu" == "86" THEN
  626.       *SET msg=* Diese CPU ist zu langsam für 4D!
  627.   ELSEIFF "%_cpu%" == "186" THEN
  628.       *SET msg=* Diese CPU ist zu langsam für 4D!
  629.   ELSEIFF "%_cpu%" == "200" THEN
  630.       *SET msg=* Diese CPU ist zu langsam für 4D!
  631.   ELSEIFF "%_cpu%" == "286" THEN
  632.       *SET msg=? Diese CPU ist wahrscheinlich zu langsam für 4D!
  633.   ELSEIFF "%_cpu%" == "386" THEN
  634.       *SET msg=? Diese CPU ist evtl. zu langsam für 4D (Testen)!
  635.   ELSEIFF "%_cpu%" == "486" THEN
  636.       *SET msg=√ Diese CPU ist okay.
  637.   ENDIFF
  638.   ECHO.    CPU ist %_cpu >>%sysout%
  639.   ECHO.        %msg%   >>%sysout%
  640.  
  641.   *SET keys=/W0 /K"[esc][F1]"
  642.   UNSET /Q c
  643.   INKEY %keys% %%c >&NUL
  644.   IF "%c%" != "" GOSUB MyInkey0
  645.  
  646.   IFF "%_MONITOR" == "COLOR" THEN
  647.       *SET msg=√ Monitor-Typ ist okay.
  648.   ELSE
  649.       *SET msg=? Monitor-Typ ist okay. 4D sieht in Farbe aber bedeutend besser aus!
  650.   ENDIFF
  651.   ECHO.    Bildschirm-Typ ist %_monitor (%_video) >>%sysout%
  652.   ECHO.        %msg% >>%sysout%
  653.  
  654.   IFF %_columns LT 80 .OR. %_rows LT 25 THEN
  655.       *SET msg=* Sie müssen Ihren Bildschirm in einem Modus mit min. 80x25 Zeichen schalten!
  656.   ELSE
  657.       *SET msg=√ Bildschirm-Modus ist okay.
  658.   ENDIFF
  659.   ECHO.    Bildschirmmodus ist %_columns%x%_rows%. >>%sysout%
  660.   ECHO.        %msg%  >>%sysout%
  661.  
  662.   *SET keys=/W0 /K"[esc][F1]"
  663.   UNSET /Q c
  664.   INKEY %keys% %%c >&NUL
  665.   IF "%c%" != "" GOSUB MyInkey0
  666.  
  667.   IFF "%@readscr[%_r1%,1,1]" != "╔" .OR. "%@readscr[%_r3%,1,1]" != "╚" THEN
  668.       ECHO.>>%sysout%
  669.       ECHO.    Achtung: Der Befehl drawBox von 4DOS funktioniert in Ihrer >>%sysout%
  670.       ECHO.             Konfiguration nicht ganz korrekt, so daß Meldungs->>%sysout%
  671.       ECHO.             boxen evtl. nicht sauber gezeichnet werden.       >>%sysout%
  672.       ECHO.             Die Benutzung von 4D wird dadurch aber NICHT beeinflußt!>>%sysout%
  673.       ECHO.>>%sysout%
  674.   ENDIFF
  675.  
  676.   *SET keys=/W0 /K"[esc][F1]"
  677.   UNSET /Q c
  678.   INKEY %keys% %%c >&NUL
  679.   IF "%c%" != "" GOSUB MyInkey0
  680.  
  681.   ECHO.                               >>%sysout%
  682.   ECHO. Betriebssystem-Einstellungen: >>%sysout%
  683.   ECHO. ----------------------------- >>%sysout%
  684.  
  685.   IFF %@int[%_dosver] GT 10 THEN
  686.       *SET msg=√ DOS und OS/2-Version sind okay.
  687.       *SET _dos=OS/2-DOS-Box
  688.       *SET _dosVer=%@substr[%_dosver,0,1].%@substr[%_dosver,3,2]
  689.   ELSEIFF "%_dos" == "DOS" THEN
  690.       IFF %@int[%_dosver] LT 3 THEN
  691.           *SET msg=* Sie müssen Ihre DOS-Version updaten! 4D braucht min. DOS 3.0.
  692.       ELSEIFF %@int[%_dosver] LT 5 THEN
  693.           *SET msg=? Sie sollten Ihr DOS auf Version 5+ updaten!
  694.       ELSE
  695.           *SET msg=√ DOS-Version ist okay.
  696.       ENDIFF
  697.   ELSEIFF %@int[%_dosver] LT 2 .AND. "%_dos" == "OS2" THEN
  698.       *SET msg=? Sie sollten Ihr OS/2 auf Version 2.0+ updaten!
  699.   ENDIFF
  700.   ECHO.    Betriebssystem ist %_dos %_dosver >>%sysout%
  701.   ECHO.        %msg% >>%sysout%
  702.   UNSET /Q _dos _dosVer
  703.  
  704.   IFF "%@int[%_4ver]" LT "4" THEN
  705.       *SET msg=* Sie müssen Ihr 4DOS auf Version 4+ updaten!!!
  706.   ELSE
  707.       *SET msg=√ 4DOS-Version ist okay.
  708.   ENDIFF
  709.  
  710.   ECHO.    4DOS-Version ist %_4VER                                           >>%sysout%
  711.   ECHO.        %msg% >>%sysout%
  712.  
  713.   *SET keys=/W0 /K"[esc][F1]"
  714.   UNSET /Q c
  715.   INKEY %keys% %%c >&NUL
  716.   IF "%c%" != "" GOSUB MyInkey0
  717.  
  718.   ECHO.                                                                      >>%sysout%
  719.   ECHO. 4DOS-Einstellungen:                                                  >>%sysout%
  720.   ECHO. -------------------                                                  >>%sysout%
  721.  
  722.   UNSET /Q t1 t2
  723.   *SET t1=1 ^ *SET t2=2
  724.   IFF "%t2%" != "2" THEN
  725.       *SET msg=* Sie müssen das Compound Char für 4DOS in `^` ändern!
  726.   ELSE
  727.       *SET msg=√ Compound Char ist okay.
  728.   ENDIFF
  729.   UNSET /Q t1 t2
  730.   ECHO.    Teste 4DOS Compound Char ... >>%sysout%
  731.   ECHO.        %msg%  >>%sysout%
  732.  
  733.   UNSET /Q t1
  734.   *SET t1=e
  735.   IFF "%t1%" != "" THEN
  736.       *SET msg=* Sie müssen das Esc Char für 4DOS in CTRL-X ändern!
  737.   ELSE
  738.       *SET msg=√ Esc Char ist okay.
  739.   ENDIFF
  740.   UNSET /Q t1
  741.   ECHO.    Teste 4DOS Esc Char ... >>%sysout%
  742.   ECHO.        %msg%  >>%sysout%
  743.  
  744.   IFF %_env GE 1000 THEN
  745.       *SET msg=√ Größe des Environments ist okay.
  746.   ELSEIFF %_env GE 600 THEN
  747.       *SET msg=? Sie sollten das Environment vergrößern.
  748.   ELSE
  749.       *SET msg=* Sie müssen das Environment vergrößern.
  750.   ENDIFF
  751.   ECHO.    freier Environment-Speicher ist %_env >>%sysout%
  752.   ECHO.        %msg% >>%sysout%
  753.  
  754.   IFF %_alias GE 1000 THEN
  755.       *SET msg=√ Größe des Speichers für Aliasse ist okay.
  756.   ELSEIFF %_alias GE 600 THEN
  757.       *SET msg=? Sie sollten den Speicher für die Aliasse vergrößern.
  758.   ELSE
  759.       *SET msg=* Sie müssen den Speicher für die Aliasse vergrößern.
  760.   ENDIFF
  761.   ECHO.    freier Speicher für Aliasse ist %_alias >>%sysout%
  762.   ECHO.        %msg% >>%sysout%
  763.  
  764.   keystack #00 >&NUL
  765.   IFF %_? == 0 THEN
  766.       *SET msg=√ KSTACK geladen.
  767.       *SET msg1=
  768.   ELSE
  769.       *SET msg=? KSTACK NICHT geladen. Ist zwar okay, aber warum benutzen Sie
  770.       *SET msg1=4DOS ohne KSTACK?
  771.   ENDIFF
  772.   ECHO.    Teste ob KSTACK geladen ist ... >>%sysout%
  773.   ECHO.        %msg%  >>%sysout%
  774.   ECHO.        %msg1% >>%sysout%
  775.   ECHO.                                                                      >>%sysout%
  776.   ECHO. Environment-Variablen:                                               >>%sysout%
  777.   ECHO. ----------------------                                               >>%sysout%
  778.  
  779.   IFF "%COMSPEC%" == "" THEN
  780.       *SET msg=? Sie sollten die Variable COMSPEC setzten!
  781.   ELSEIFF NOT EXIST %COMSPEC% THEN
  782.       *SET msg=* Sie müssen den Inhalt der Variablen COMSPEC ändern (da fehlerhaft)!
  783.   ELSE
  784.       *SET msg=√ okay
  785.   ENDIFF
  786.   ECHO.    COMSPEC=%COMSPEC% >>%sysout%
  787.   ECHO.        %msg% >>%sysout%
  788.  
  789.   IF "%TEMP%" == "" *SET TEMP=%tmp%
  790.   IF "%TEMP%" == "" *SET TEMP=%temp4dos%
  791.   IFF "%TEMP%" == "" THEN
  792.       *SET msg=? Sie sollten eine der Variablen TEMP, TMP oder TEMP4DOS setzen!
  793.   ELSEIFF NOT isDir %TEMP% THEN
  794.       *SET  msg=* Sie müssen den Inhalt der Variablen TEMP ändern!
  795.       *SET msg1=  (Da das Verzeichnis %temp% NICHT existiert!)
  796.   ELSE
  797.       *SET msg=√ okay
  798.       *SET msg1=
  799.   ENDIFF
  800.  
  801.   ECHO.    TEMP=%TEMP% >>%sysout%
  802.   ECHO.    TMP=%TMP% >>%sysout%
  803.   ECHO.    TEMP4DOS=%TEMP4DOS% >>%sysout%
  804.   ECHO.        %msg%  >>%sysout%
  805.   ECHO.        %msg1% >>%sysout%
  806.  
  807.   IFF "%TEMP%" NE "" THEN
  808.       IFF isDir %TEMP% THEN
  809.           IFF %@DiskFree[%temp%,k] LT 50 THEN
  810.               ECHO.        ? Sie sollten den freien Platz im Verzeichnis %temp% erhöhen, >>%sysout%
  811.               ECHO.        ? da 4D relativ viele temporäre Dateien benötigt! >>%sysout%
  812.           ENDIFF
  813.       ENDIFF
  814.   ENDIFF
  815.  
  816.   *SET keys=/W0 /K"[esc][F1]"
  817.   UNSET /Q c
  818.   INKEY %keys% %%c >&NUL
  819.   IF "%c%" != "" GOSUB MyInkey0
  820.  
  821.   ECHO.                                                                      >>%sysout%
  822.   ECHO. 4DOS-Aliasse:                                                        >>%sysout%
  823.   ECHO. -------------                                                        >>%sysout%
  824.  
  825.   UNSET /q ok
  826.  
  827.   ECHO.    Teste existierende Aliasse ... >>%sysout%
  828.   FOR %%f IN ( MyCls NewKey MyBeep MyInkey BigBox ClrBox ShowMsg ShowErr ) DO (
  829.       IFF isAlias %f% THEN
  830.           ECHO.    Alias "%f%" ist belegt. >>%sysout%
  831.           ECHO.         ? Achtung: Dieser Alias wird auch von 4D benutzt! >>%sysout%
  832.           *SET ok=NO
  833.       ENDIFF
  834.       *SET keys=/W0 /K"[esc][F1]"
  835.       UNSET /Q c
  836.       INKEY %keys% %%%c >&NUL
  837.       IF "%c%" != "" GOSUB MyInkey0
  838.   )
  839.  
  840.   FOR %%f IN ( @ALT-A @ALT-C @ALT-D @ALT-E @ALT-H @ALT-L @ALT-P @ALT-V @ALT-W @ALT-X @ALT-F1 @CTRL-F1 ) DO (
  841.       IFF isAlias %f% THEN
  842.           ECHO.    Alias %f% ist belegt. >>%sysout%
  843.           ECHO.         ? Achtung: Dieser Alias wird auch von 4D benutzt! >>%sysout%
  844.           *SET ok=NO
  845.       ENDIFF
  846.       *SET keys=/W0 /K"[esc][F1]"
  847.       UNSET /Q c
  848.       INKEY %keys% %%%c >&NUL
  849.       IF "%c%" != "" GOSUB MyInkey0
  850.   )
  851.  
  852.   IFF "%ok%" == "" THEN
  853.       ECHO.        √ Aliasse sind okay. >>%sysout%
  854.   ENDIFF
  855.  
  856.   ECHO.                                                                      >>%sysout%
  857.   ECHO.---------------------------------------------------------------------->>%sysout%
  858.   ECHO.      Hinweis: Diese Ausgaben stehen auch in der Datei                >>%sysout%
  859.   ECHO.               %systxt%                                               >>%sysout%
  860.   ECHO.               zur weiteren Verwendung zur Verfügung.                 >>%sysout%
  861.   ECHO.---------------------------------------------------------------------->>%sysout%
  862.   UNSET /Q checking msg msg1
  863. RETURN
  864.  
  865. REM ------------------------------------
  866. REM makeDir - make a directory(-tree)
  867. REM
  868. REM input: %tdir% = directory name
  869. REM
  870. :makeDir
  871.   *SET d=%tdir%
  872.   IFF isDir %d% THEN
  873.       IF "%@name[%d%].%@ext[%d%]CON" != "CON" *SET d=%d%\
  874.   ENDIFF
  875.  
  876.   *SET l=0
  877.   *SET iErr=1
  878.  
  879. :MDLoop0
  880.   IFF IsDir %d% THEN
  881.       cdd %d%
  882.       IF %_? != 0 GOTO MDLoopEnd
  883.       GOTO MakeTheDir
  884.   ENDIFF
  885.  
  886.   *SET l=%@eval[%l%+1]
  887.  
  888.   *SET t=%@substr[%d%,0,%@eval[%@len[%d]]]
  889.   *SET d=%@path[%t%]
  890.   *SET d%l%=%@name[%t%].%@ext[%t%]
  891.   GOTO MDLoop0
  892.  
  893. :MakeTheDir
  894.   pushd
  895.  
  896. :MDLoop2
  897.  
  898.   ECHO. Erstelle das Verzeichnis %_cwds%%[d%l%] ...
  899.  
  900.   IF "%l%" EQ "0" GOTO MDLoopOkay
  901.   MD %[d%l%]
  902.   IF %_? != 0 GOTO MDLoopEnd
  903.   CD %[d%l%]
  904.   IF %_? != 0 GOTO MDLoopEnd
  905.   UNSET /Q d%l%
  906.   *SET l=%@eval[%l%-1]
  907.   GOTO MDLoop2
  908.  
  909. :MDLoopOkay
  910.   UNSET /Q iErr
  911.  
  912. :MDLoopEnd
  913.   popd
  914.   UNSET /Q d l
  915. RETURN
  916.  
  917. REM ------------------------------------
  918. REM checkDrive - test if a drive is ready
  919. REM
  920. REM input: %tdir% = directory
  921. REM
  922. :checkDrive
  923.   IFF "%@substr[%tdir%,1,1]" == ":" THEN
  924.       *SET d=%@substr[%tdir%,0,2]
  925.   ELSE
  926.       *SET d=%_disk:
  927.   ENDIFF
  928.  
  929. :waiting
  930.   IF %@ready[%d%] == 1 GOTO DriveReady
  931.   *SET msg=Laufwerk %d% ist nicht bereit!
  932.   *SET msg1= Bitte ändern und eine Taste drücken (F1 für Hilfe) ...
  933.   GOSUB ShowMsg
  934.   *SET keys=/w3
  935.   *SET hTopic=keys5
  936.   GOSUB MyInkey
  937.   GOTO waiting
  938.  
  939. :DriveReady
  940.   UNSET /Q d
  941. RETURN
  942.  
  943. REM ------------------------------------
  944.  
  945. :DosEnde
  946.  
  947.