home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 4 / AACD04.ISO / AACD / Programming / envsof20 / install < prev    next >
Encoding:
Text File  |  1999-10-10  |  8.3 KB  |  281 lines

  1. ; install - Installer script for Eiffel/Sofa mode.
  2. ; Copyright 1999 Thomas Aglassinger and others, see file "forum.txt"
  3. ;
  4. ; $VER: Install 2.1 (10.10.1999)
  5.  
  6.  
  7. ; Ensure that minimum installer version to be installed
  8.  
  9. (set #minimum-installer-version 43)
  10. (set #minimum-installer-revision 3)
  11. (set #minimum-installer-id
  12.    (+ #minimum-installer-revision
  13.        (* #minimum-installer-version 65536)
  14.    )
  15. )
  16. (debug "  minimum-installer-id = " #minimum-installer-id)
  17. (debug "  current-installer-id = " @installer-version)
  18.  
  19. (if (< @installer-version #minimum-installer-id)
  20.   (
  21.     (set #message-wrong-installer
  22.     (cat "You have an old version of the program `Installer' on your Amiga!\n\n"
  23.          "The installation procedure needs at least Installer "
  24.          #minimum-installer-version "." #minimum-installer-revision ".\n\n"
  25.          "Please obtain a newer version!\n\n"
  26.          "(Check Aminet or the WWW site of the current owner of the rights for "
  27.          "Amiga - whoever that might be right now.)"
  28.     ))
  29.  
  30.     (debug "installer too old")
  31.     (abort #message-wrong-installer)
  32.   )
  33. )
  34.  
  35. (set #damage-estimation
  36. (cat "Without it, most functions of the Toolbar will not work. "
  37.      "Nevertheless, the syntax parser and scanner will be available.\n\n"
  38.      "Refer to the manual to learn from where to download it."
  39. ))
  40.  
  41. ; Check if rexxdossupport is installed
  42. (if (NOT (exists "libs:rexxdossupport.library" (noreq)))
  43.    (
  44.       (set #message-rexxdos-missing
  45.       (cat "For the add-on to work properly, "
  46.            "the file \"rexxdossupport.library\" must be installed in the "
  47.            "\"libs:\" drawer.\n\n"
  48.            #damage-estimation
  49.       ))
  50.       (message #message-rexxdos-missing (all))
  51.    )
  52. )
  53.  
  54. ; Check if Sofa is installed
  55. (if (NOT (exists "Sofa:" (noreq)))
  56.    (
  57.       (set #message-sofa-missing
  58.       (cat "For the add-on to work properly, "
  59.            "the Sofa distribution of the SmallEiffel compiler must be "
  60.            "installed in the \"Sofa:\" drawer.\n\n"
  61.            #damage-estimation
  62.       ))
  63.       (message #message-sofa-missing (all))
  64.    )
  65. )
  66.  
  67.  
  68. (delopts "oknodelete" "force" "askuser")
  69.  
  70. (complete 0)
  71.  
  72. (onerror
  73.    (if (> @ioerr 0)
  74.       (
  75.          (delete "env:INSTALLOPTIONS")
  76.          (message "An error has occurred. Please contact the author.")
  77.       )
  78.    )
  79. )
  80.  
  81. ; initialize return code
  82.  
  83. (textfile (dest "env:COMPONENTINSTALL") (append "INCOMPLETE"))
  84.  
  85. ; initialize strings
  86.  
  87. (set #golded_version "6.2.0")
  88. (set #golded_version_id 62)
  89.  
  90. (if (= @language "deutsch")
  91.     (
  92.        (set #eiffel_uninstalling "Die Eiffel-Erweiterung wird entfernt ...")
  93.        (set #eiffel_badversion   (cat "Diese Software benötigt GoldED " #golded_version " !"))
  94.        (set #eiffel_welcome      "Willkommen beim Setup für die Eiffel-Erweiterung !")
  95.        (set #eiffel_install      "Installieren")
  96.        (set #eiffel_uninstall    "Entfernen")
  97.        (set #eiffel_golded       "Bitte installieren Sie GoldED, bevor Sie diese Installation ausführen !")
  98.        (set #eiffel_language     "Einige Komponenten dieser Erweiterung liegen in verschiedenen Sprachversionen vor. Wählen Sie eine Sprache aus:")
  99.        (set #eiffel_registry     "Registry wird aktualisiert...")
  100.     )
  101.     (
  102.        (set #eiffel_uninstalling "Uninstalling Eiffel add-on ...")
  103.        (set #eiffel_badversion   (cat "This software requires GoldED " #golded_version " !"))
  104.        (set #eiffel_welcome      "Welcome to the setup for the Eiffel add-on !")
  105.        (set #eiffel_install      "Install")
  106.        (set #eiffel_uninstall    "Uninstall")
  107.        (set #eiffel_golded       "Please install GoldED before you install this add-on !")
  108.        (set #eiffel_language     "Some components of this software support multiple languages. Choose a language:")
  109.        (set #eiffel_registry     "Updating registry ...")
  110.     )
  111. )
  112.  
  113. (if (exists "golded:" (NOREQ))
  114.    (
  115.       (set vernum (getversion "golded:golded"))
  116.       (set ver (/ vernum 65536))
  117.       (set rev (- vernum (* ver 65536)))
  118.       (set version (+ (* 10 ver) rev))
  119.  
  120.       (if (< version #golded_version_id)
  121.          (
  122.             (message #eiffel_badversion)
  123.          )
  124.       )
  125.  
  126.       ; read command passed in to our script in the env variable INSTALLOPTIONS
  127.       (if (exists "env:INSTALLOPTIONS" (noreq))
  128.          ; (getenv) may not be used without checking if var exists (installer bug)
  129.          (
  130.             (set eiffel_installmode (getenv "INSTALLOPTIONS"))
  131.             (if (= eiffel_installmode "UNINSTALL")
  132.                (working #eiffel_uninstalling)
  133.                (message #eiffel_welcome)
  134.             )
  135.          )
  136.          (set eiffel_installmode "ASK")
  137.       )
  138.  
  139.       (if (= eiffel_installmode "ASK")
  140.          (if
  141.             (askbool
  142.                (prompt #eiffel_welcome)
  143.                (choices
  144.                   #eiffel_install
  145.                   #eiffel_uninstall
  146.                )
  147.                (help @askbool_help)
  148.             )
  149.  
  150.             (set eiffel_installmode "INSTALL")
  151.             (set eiffel_installmode "UNINSTALL")
  152.          )
  153.       )
  154.  
  155.       (delete "env:INSTALLOPTIONS")
  156.  
  157.       ; verify directory structure
  158.  
  159.       (makedir "golded:etc")
  160.       (makedir "golded:etc/api")
  161.       (makedir "golded:etc/syntax")
  162.       (makedir "golded:etc/images")
  163.       (makedir "golded:etc/images/toolbar")
  164.       (makedir "golded:etc/scanner")
  165.       (makedir "golded:etc/uninstall")
  166.       (makedir "golded:add-ons")
  167.  
  168.       ; install registry editor (if not yet installed)
  169.  
  170.       (if (exists "golded:add-ons/regedit")
  171.          (
  172.             (set oldver (getversion "golded:add-ons/regedit/regedit"))
  173.             (set newver (getversion "regedit/regedit"))
  174.             (if (> newver oldver)
  175.                (copyfiles
  176.                   (source "regedit")
  177.                   (dest "golded:add-ons/regedit")
  178.                   (all)
  179.                   (nogauge)
  180.                )
  181.             )
  182.          )
  183.          (copyfiles
  184.             (source "regedit")
  185.             (dest "golded:add-ons/regedit")
  186.             (all)
  187.             (nogauge)
  188.          )
  189.       )
  190.  
  191.       (if (= eiffel_installmode "UNINSTALL")
  192.  
  193.          ; uninstall
  194.          (
  195.             ; update registry
  196.             (working #eiffel_registry)
  197.             (if (exists ("golded:etc/uninstall/envSOF20.bat"))
  198.                (
  199.                    (run "golded:add-ons/regedit/regedit script=golded:etc/uninstall/envSOF20.bat label=uninstall")
  200.                    (delete "golded:etc/uninstall/envSOF20.bat")
  201.                )
  202.                (run "golded:add-ons/regedit/regedit script=install.bat label=uninstall")
  203.             )
  204.             (exit (quiet))
  205.          )
  206.  
  207.          ; install
  208.          (
  209.             (if (= eiffel_installmode "ASK")
  210.                (welcome)
  211.             )
  212.  
  213.             ; install basic files
  214.             (makedir "golded:add-ons/eiffel")
  215.             (copyfiles
  216.                (source "eiffel")
  217.                (dest "golded:add-ons/eiffel")
  218.                (all)
  219.             )
  220.  
  221.             (set eiffel_language "english")
  222.  
  223.             ; install manual
  224.             (copylib
  225.                (source "Manual.guide")
  226.                (dest "golded:add-ons/eiffel")
  227.             )
  228.             (copyfiles
  229.                (source "forum.txt")
  230.                (dest "golded:add-ons/eiffel")
  231.             )
  232.  
  233.             ; install scanner
  234.             (copylib
  235.                (source "scanner/eiffel")
  236.                (dest "golded:etc/scanner")
  237.             )
  238.  
  239.             ; install template
  240.             (makedir "golded:add-ons/eiffel/template")
  241.             (copylib
  242.                (source "template/new_class.e")
  243.                (dest "golded:add-ons/eiffel/template")
  244.             )
  245.  
  246.             ; install toolbar images
  247.             (copyfiles
  248.                 (source "toolbar")
  249.                 (dest "golded:etc/images/toolbar")
  250.                 (all)
  251.             )
  252.  
  253.             ; update registry
  254.             (working #eiffel_registry)
  255.             (run (cat "golded:add-ons/regedit/regedit script=install.bat ARGS " eiffel_language))
  256.  
  257.             ; prepare uninstallation
  258.             (copyfiles
  259.                (source "install.bat")
  260.                (dest "golded:etc/uninstall")
  261.                (newname "envSOF20.bat")
  262.             )
  263.  
  264.             ; installation completed
  265.             (textfile (dest "env:COMPONENTINSTALL") (append "OK"))
  266.             (complete 100)
  267.             (set @default-dest "golded:add-ons/eiffel")
  268.             (if (= eiffel_installmode "INSTALL")
  269.                (exit)
  270.                (exit (quiet))
  271.             )
  272.          )
  273.       )
  274.    )
  275.  
  276.    ; no GoldEd installed
  277.    (message #eiffel_golded)
  278. )
  279.  
  280. (exit (quiet))
  281.