; $VER: HEX 1.3 ( 9. Dezember 1999); installer script © Wolfgang Morgeneier

(delopts "oknodelete" "force" "askuser")

(complete 0)

(onerror

    (if (> @ioerr 0)

        (
            (delete "env:INSTALLOPTIONS")

            (message "An error has occurred. Please contact the author.")
        )
    )
)

; initialize return code

(textfile (dest "env:COMPONENTINSTALL") (append "INCOMPLETE"))

; initialize strings

(if (= @language "deutsch")

    (
        (set #hex_uninstalling "Die HEX-Erweiterung wird entfernt ...")

        (set #hex_badversion   "Diese Software benötigt GoldED 5 !")

        (set #hex_welcome      "Willkommen beim Setup für die HEX-Erweiterung !")

        (set #hex_install      "Installieren")

        (set #hex_uninstall    "Entfernen")

        (set #hex_golded       "Bitte installieren Sie GoldED, bevor Sie diese Installation ausführen !")

        (set #hex_language     "Einige Komponenten dieser Erweiterung liegen in verschiedenen Sprachversionen vor. Wählen Sie eine Sprache aus:")

        (set #hex_registry     "Registry wird aktualisiert...")
    )

    (
        (set #hex_uninstalling "Uninstalling HEX add-on ...")

        (set #hex_badversion   "This software requires GoldED 5 !")

        (set #hex_welcome      "Welcome to the setup for the HEX add-on !")

        (set #hex_install      "Install")

        (set #hex_uninstall    "Uninstall")

        (set #hex_golded       "Please install GoldED before you install this add-on !")

        (set #hex_language     "Some components of this software support multiple languages. Choose a language:")

        (set #hex_registry     "Updating registry ...")
    )
)

(if (exists "golded:" (NOREQ))

    (
        (set vernum (getversion "golded:golded"))

        (set ver (/ vernum 65536))
        (set rev (- vernum (* ver 65536)))

        (set version (+ (* 10 ver) rev))

        (if (< version 50)

            (
                (message #hex_badversion)
            )
        )

        ; read command passed in to our script in the env variable INSTALLOPTIONS

        (if (exists "env:INSTALLOPTIONS" (noreq))

            ; (getenv) may not be used without checking if var exists (installer bug)

            (
                (set hex_installmode (getenv "INSTALLOPTIONS"))

                (if (= hex_installmode "UNINSTALL")

                    (working #hex_uninstalling)

                    (message #hex_welcome)
                )
            )

            (set hex_installmode "ASK")
        )

        (if (= hex_installmode "ASK")

            (if

                (askbool

                    (prompt #hex_welcome)

                    (choices

                        #hex_install
                        #hex_uninstall
                    )

                    (help @askbool_help)
                )

                (set hex_installmode "INSTALL")

                (set hex_installmode "UNINSTALL")
            )
        )

        (delete "env:INSTALLOPTIONS")

        ; verify directory structure

        (makedir "golded:etc")

        (makedir "golded:etc/api")

        (makedir "golded:etc/syntax")

        (makedir "golded:etc/images")

        (makedir "golded:etc/images/toolbar")

        (makedir "golded:add-ons")

        (makedir "golded:etc/uninstall")

        ; install registry editor (if not yet installed)

        (if (exists "golded:add-ons/regedit")

            (
                (set oldver (getversion "golded:add-ons/regedit/regedit"))

                (set newver (getversion "regedit/regedit"))

                (if (> newver oldver)

                    (copyfiles

                        (source "regedit")

                        (dest "golded:add-ons/regedit")

                        (all)

                        (nogauge)
                    )
                )
            )

            (copyfiles

                (source "regedit")

                (dest "golded:add-ons/regedit")

                (all)

                (nogauge)
            )
        )

        (if (= hex_installmode "UNINSTALL")

            ; uninstall

            (
                ; update registry

                (working #hex_registry)

                (if (exists ("golded:etc/uninstall/envHEX13.bat"))

                    (
                        (run "golded:add-ons/regedit/regedit script=golded:etc/uninstall/envHEX13.bat label=uninstall")

                        (delete "golded:etc/uninstall/envHEX13.bat")
                    )

                    (run "golded:add-ons/regedit/regedit script=install.bat label=uninstall")
                )

                (exit (quiet))
            )

            ; install

            (
                (if (= hex_installmode "ASK")

                    (welcome)
                )

                ; install basic files

                (if (= @language "deutsch")

                    (set hex_language 1)
                    (set hex_language 0)
                )

                (set hex_language

                    (askchoice

                        (prompt #hex_language)

                        (choices

                            "English"
                            "Deutsch"
                        )

                        (default hex_language)

                        (help @askchoice-help)
                    )
                )

                (if (= hex_language 0)

                    (set hex_language "english")
                )

                (if (= hex_language 1)

                    (set hex_language "german")
                )
                (makedir "golded:add-ons/hex")
                (makedir "golded:add-ons/hex/rexx")
                (makedir "golded:add-ons/hex/syntax")
                (makedir "golded:add-ons/hex/api")
                (makedir "golded:etc/images/toolbar/hex")

                (if (= hex_language "english")

                    (
                       (copyfiles (source "english/bin") (dest "golded:add-ons/hex") (all) )
                       (copyfiles (source "english/guide") (dest "golded:add-ons/hex") (all) )
                       (copyfiles (source "english/images") (dest "golded:etc/images/toolbar/hex") (all) )

                       (if (< version 62)
                           (
                              (copyfiles (source "english/syntax/hex.parser_old") (dest "golded:add-ons/hex/syntax") (newname "hex.parser") )
                           )
                           (
                              (copyfiles (source "english/syntax/hex.parser_new") (dest "golded:add-ons/hex/syntax") (newname "hex.parser") )
                           )
                       )

                       (copyfiles (source "english/rexx") (dest "golded:add-ons/hex/rexx") (all) )
                       (copyfiles (source "english/api") (dest "golded:add-ons/hex/api") (all) )
                    )
                )

                (if (= hex_language "german")

                    (
                       (copyfiles (source "german/bin") (dest "golded:add-ons/hex") (all) )
                       (copyfiles (source "german/guide") (dest "golded:add-ons/hex") (all) )
                       (copyfiles (source "german/images") (dest "golded:etc/images/toolbar/hex") (all) )

                       (if (< version 62)
                           (
                              (copyfiles (source "german/syntax/hex.parser_alt") (dest "golded:add-ons/hex/syntax") (newname "hex.parser") )
                           )
                           (
                              (copyfiles (source "german/syntax/hex.parser_neu") (dest "golded:add-ons/hex/syntax") (newname "hex.parser") )
                           )
                       )

                       (copyfiles (source "german/rexx") (dest "golded:add-ons/hex/rexx") (all) )
                       (copyfiles (source "german/api") (dest "golded:add-ons/hex/api") (all) )
                    )
                )

                ; update registry

                (working #hex_registry)

                (run (cat "golded:add-ons/regedit/regedit script=install.bat ARGS " hex_language))

                ; prepare uninstallation

                (copyfiles

                   (source "install.bat")

                   (dest "golded:etc/uninstall")

                   (newname "envHEX13.bat")
                )

                ; installation completed

                (textfile (dest "env:COMPONENTINSTALL") (append "OK"))

                (complete 100)

                (set @default-dest "golded:add-ons/hex")

                (if (= hex_installmode "INSTALL")

                    (exit)
                    (exit (quiet))
                )
            )
        )
    )

    (message #hex_golded)
)

(exit (quiet))
