; ****************************************************************************
; *                                                                          *
; *  'CallMan' Install-Script                                                *
; *  written 1997 by Alexander 'Sascha' Fichtner                             *
; *                                                                          *
; *  $VER: CallMan Installer 1.2 (17.09.97)                                  *
; *                                                                          *
; *  This installer script is freeware! :-)                                  *
; *  You may use it (or parts of it) in your own installer scripts...        *
; *                                                                          *
; *  You are NOT allowed to ask ANY monetary charge for it!                  *
; *                                                                          *
; *  Feel free to send any comments/bugreports to:                           *
; *                                                                          *
; *    fichtner@informatik.tu-muenchen.de                                    *
; *                                                                          *
; ****************************************************************************

(if (= @language "english")
    (
        (set #default_language 1)
        (set #welcome "\n\n\nWelcome to\n\nCallMan\n\n1.2 (17.09.1997)\n\n© Copyright 1997 Alexander 'Sascha' Fichtner" )
        (set #requirements "\n\nRequirements:\n\n- OS 3.0\n- MUI 3.3+\n- screen with at least a size of 640x256\n- a modem" )
        (set #installmode "Would you like to install CallMan from scratch or un-install an older version?")
        (set #installmode_help "Choose 'Install' to install CallMan on your system.\n\nChoose 'Un-install', to remove an already installed version of CallMan from your system." )
        (set #installmode_install "Install" )
        (set #installmode_uninstall "Un-install" )
        (set #default_destination "Where do you wish to install CallMan? The directory 'CallMan' will be created if it is not there." )
        (set #manual "The manual (in AmigaGuide format) is available in different languages. Which version(s) would you like to install?" )
        (set #rates "There are different rates files for the different countries and telephone companies. Which if these rates files would you like to install?" )
        (set #catalogs "Which language catalogs would you like to install?" )
        (set #catalogs_where "Where do you wish to install the language catalogs?" )
        (set #catalogs_locale_full "Not enough free diskspace on LOCALE: ! Copy catalog files to PROGDIR:Catalogs instead?" )
        (set #catalogs_no_locale_assign "Can't find assign LOCALE: ! Copy catalog files to PROGDIR:Catalogs instead?" )
        (set #install "\n\n\n\n\nI'm starting the installation now." )
        (set #not_enough_diskspace "There might be not enough diskspace available on " #dest_dir "..." )
        (set #install_anyway "Install anyway..." )
        (set #abort "Abort installation..." )
        (set #install_abort "Aborted by user..." )
        (set #uninstall_dir "Please specify the 'CallMan' directory." )
        (set #really_uninstall "Do you REALLY want to uninstall CallMan?" )
    )
)

(if (= @language "deutsch")
    (
        (set #default_language 2)
        (set #welcome "\n\n\nHerzlich willkommen zu\n\nCallMan\n\n1.2 (17.09.1997)\n\n© Copyright 1997 Alexander 'Sascha' Fichtner" )
        (set #requirements "\n\nSystemvoraussetzungen:\n\n- OS 3.0\n- MUI 3.3+\n- einen Screen mit mindestens 640x256 Screengröße\n- ein Modem" )
        (set #installmode "Wollen Sie CallMan neu installieren oder eine bereits installierte Version wieder entfernen?")
        (set #installmode_help "Wählen Sie 'Installieren', um CallMan in Ihrem System neu zu installieren.\n\nWählen Sie 'Deinstallieren', um eine bereits installierte Version von CallMan so weit wie möglich wieder zu entfernen." )
        (set #installmode_install "Installieren" )
        (set #installmode_uninstall "Deinstallieren" )
        (set #default_destination "Wo möchten Sie CallMan installieren? Falls noch nicht vorhanden, wird dort das Verzeichnis 'CallMan' angelegt." )
        (set #manual "Die Anleitung (im AmigaGuide-Format) liegt in mehreren Sprachen vor. Welche Version(en) möchten Sie installieren?" )
        (set #rates "Es existieren unterschiedliche Gebührendateien für die verschiedenen Länder und Telefongesellschaften. Welche der folgenden Dateien sollen installiert werden?" )
        (set #catalogs "Welche Sprachkataloge möchten Sie installieren?" )
        (set #catalogs_where "Wohin sollen die Sprachkataloge kopiert werden?" )
        (set #catalogs_locale_full "Speicherplatz in LOCALE: reicht nicht aus! Sollen die Katalogdateien stattdessen doch nach PROGDIR:Catalogs kopiert werden?" )
        (set #catalogs_no_locale_assign "Kann das Assign LOCALE: nicht finden! Sollen die Katalogdateien stattdessen doch nach PROGDIR:Catalogs kopiert werden?" )
        (set #install "\n\n\n\n\nIch beginne nun mit der eigentlichen Installation." )
        (set #not_enough_diskspace "Voraussichtlich nicht genug Speicher frei auf " #dest_dir "..." )
        (set #install_anyway "Trotzdem installieren..." )
        (set #abort "Installation abbrechen..." )
        (set #install_abort "Abbruch durch Benutzer..." )
        (set #uninstall_dir "Bitte wählen Sie das Verzeichnis 'CallMan' aus." )
        (set #really_uninstall "Wollen Sie CallMan WIRKLICH deinstallieren?" )
    )
)


; ****************************************************************************
;  install procedure
; ****************************************************************************

(procedure p_install

    (set #cm_diskspace_main    0)
    (set #cm_diskspace_catalog 0)

    (set #cm_diskspace_main (+ #cm_diskspace_main (getsize "CallMan"           )))
    (set #cm_diskspace_main (+ #cm_diskspace_main (getsize "CallMan.info"      )))
    (set #cm_diskspace_main (+ #cm_diskspace_main (getsize "CM_Converter"      )))
    (set #cm_diskspace_main (+ #cm_diskspace_main (getsize "CM_Converter.info" )))

    ; ********************
    ;  choose destination
    ; ********************
    (set #dest_dir
        (askdir (prompt #default_destination )
            (help @askdir-help)
            (default @default-dest)
        )
    )
    (set #install_dir (tackon #dest_dir "CallMan"))

    ; ***************
    ;  choose guides
    ; ***************
    (set #cm_guides
        (askoptions
        (prompt #manual)
        (help "")
        (choices " English" " Deutsch")
        (default #default_language)
        )
    )
    (if (IN #cm_guides 0)
        ( ; then
            (set #cm_diskspace_main (+ #cm_diskspace_main (getsize "Docs/CallMan_E.guide"      )))
            (set #cm_diskspace_main (+ #cm_diskspace_main (getsize "Docs/CallMan_E.guide.info" )))
            )
    )
    (if (IN #cm_guides 1)
        ( ; then
            (set #cm_diskspace_main (+ #cm_diskspace_main (getsize "Docs/CallMan_D.guide"      )))
            (set #cm_diskspace_main (+ #cm_diskspace_main (getsize "Docs/CallMan_D.guide.info" )))
        )
    )
    (set #guides_dir (tackon #install_dir "Docs"))

    ; ********************
    ;  choose rates files
    ; ********************
    (set #ratesfiles
        (askoptions
        (prompt #rates)
        (help "")
        (choices " Deutsche TELEKOM" )
        (default -1)
        )
    )
    (if (IN #ratesfiles 0) (set #cm_diskspace_main (+ #cm_diskspace_main (getsize "Rates/DeutscheTELEKOM.rates" ))))
    (set #rates_dir (tackon #install_dir "Rates"))

    ; *****************
    ;  choose catalogs
    ; *****************
    (set #cm_language
        (askoptions
        (prompt #catalogs)
        (help "")
        (choices " English (built-in)" " Deutsch")
        (default #default_language)
        )
    )
    (if (<> #cm_language 1)
        ( ; then
            (if (IN #cm_language 1) (set #cm_diskspace_catalog (+ #cm_diskspace_catalog (getsize "Catalogs/deutsch/CallMan.catalog"      ))))
            (if (IN #cm_language 1) (set #cm_diskspace_catalog (+ #cm_diskspace_catalog (getsize "Catalogs/deutsch/CM_Converter.catalog" ))))
            ; ****************************
            ;  choose catalog destination
            ; ****************************
            (set #catalog_dest
                (askchoice
                (prompt #catalogs_where)
                (help "")
                (choices "LOCALE:Catalogs" "PROGDIR:Catalogs")
                (default 1)
                )
            )
            (if (= #catalog_dest 0)
                (
                    (set #locale_path (getassign "LOCALE"))
                    (if (= #locale_path "")
                        ( ; then
                            (set #bool
                                (askbool
                                (prompt #catalogs_no_locale_assign )
                                (help "")
                                (default 1)
                                )
                            )
                            (if (= #bool 1)
                                (set #catalog_dest 1)
                                (set #catalog_dest 3)
                            )
                        )

                        ( ; else
                            (set #free_disk_space_catalog #locale_path )
                            (if (< #free_disk_space_catalog #cm_disk_space_catalog)
                                (
                                    (set #bool
                                        (askbool
                                        (prompt #catalogs_locale_full )
                                        (help "")
                                        (default 1)
                                        )
                                    )
                                    (if (= #bool 1)
                                        (set #catalog_dest 1)
                                        (set #catalog_dest 3)
                                    )
                                )
                            )
                        )
                    )
                )
            )

            (if (= #catalog_dest 1)
                (
                    (set #cm_diskspace_main (+ #cm_diskspace_main #cm_diskspace_catalog))
                )
            )
        )
    )
    (set #catalogs_dir (tackon #install_dir "Catalogs"))

    ; ***************
    ;  install files
    ; ***************
    (message #install)
    (set #install_bool 1)
    (if (<> (getdevice #dest_dir) "RAM" )
        ( ; then
            (set #free_disk_space_main (getdiskspace #dest_dir ))
            (if (< #free_disk_space_main #cm_diskspace_main)
                ( ; then
                    (set #install_bool 0)
                    (set #bool
                        (askbool
                        (prompt #not_enough_diskspace )
                        (help "" )
                        (default 1)
                        (choices #install_anyway #abort )
                        )
                    )
                    (if (= #bool 0) (exit #install_abort (quiet)) )
                    (if (= #bool 1) (set #install_bool 1) )
                )
            )
        )
    )
    (if (= #install_bool 1)
        ( ; then
            (complete 0)
            (makedir #install_dir (infos) )
            (copylib (source "CallMan"     ) (dest #install_dir) (infos) )
            (copylib (source "CM_Converter") (dest #install_dir) (infos) )
            (copylib (source "Install"     ) (dest #install_dir) (infos) )

            (complete 25)
            (if (<> #cm_guides 0)
                ( ; then
                    (makedir #guides_dir (infos) )
                    (if (IN #cm_guides 0) (copylib (source "Docs/CallMan_E.guide") (dest #guides_dir) (infos) ))
                    (if (IN #cm_guides 1) (copylib (source "Docs/CallMan_D.guide") (dest #guides_dir) (infos) ))
                )
            )

            (complete 50)
            (if (<> #ratesfiles 0)
                ( ; then
                    (makedir #rates_dir )
                    (if (IN #ratesfiles 0) (copylib (source "Rates/DeutscheTELEKOM.rates") (dest #rates_dir) (infos) ))
                )
            )

            (complete 75)
            (if (= #catalog_dest 0)
                ( ; then
                    (if (IN #cm_language 1) (copylib (source "Catalogs/deutsch/CallMan.catalog"     ) (dest "LOCALE:Catalogs/deutsch") ) )
                    (if (IN #cm_language 1) (copylib (source "Catalogs/deutsch/CM_Converter.catalog") (dest "LOCALE:Catalogs/deutsch") ) )
                )
                ( ; else
                    (makedir #catalogs_dir )
                    (if (IN #cm_language 1) (copylib (source "Catalogs/deutsch/CallMan.catalog"     ) (dest (tackon #catalogs_dir "deutsch")) ) )
                    (if (IN #cm_language 1) (copylib (source "Catalogs/deutsch/CM_Converter.catalog") (dest (tackon #catalogs_dir "deutsch")) ) )
                )
            )

        )
    )
    (complete 100)
)


; ****************************************************************************
;  deinstall procedure
; ****************************************************************************

(procedure p_uninstall

    (if (= @user-level 0) (user 1))

    ; ********************
    ;  choose CallMan dir
    ; ********************
    (set #script_dir (pathonly @icon))
    (set #uninstall_dir
        (askdir (prompt #uninstall_dir )
            (help @askdir-help)
            (default #script_dir )
        )
    )

    ; ****************
    ;  security check
    ; ****************
    (set #bool
        (askbool
            (prompt #really_uninstall )
            (help "" )
            (default 1)
        )
    )
    (if (= #bool 0) (exit #install_abort (quiet)) )

    ; *****************
    ;  delete catalogs
    ; *****************
    (if (exists (tackon #uninstall_dir "Catalogs"))
        ( ; then
            (set #catalogs_dir (tackon #uninstall_dir "Catalogs" ))
            (foreach #catalogs_dir "#?"
                (
                    (delete (tackon #catalogs_dir (tackon @each-name "CallMan.catalog"      ) ) )
                    (delete (tackon #catalogs_dir (tackon @each-name "CM_Converter.catalog" ) ) )
                    (delete (tackon #catalogs_dir @each-name ) )
                )
            )
            (delete #catalogs_dir )
        )
        ( ; else
            (set #catalogs_dir "LOCALE:Catalogs" )
            (foreach #catalogs_dir "#?"
                (
                    (delete (tackon #catalogs_dir (tackon @each-name "CallMan.catalog"      ) ) )
                    (delete (tackon #catalogs_dir (tackon @each-name "CM_Converter.catalog" ) ) )
                )
            )
        )
    )

    ; ********************
    ;  delete rates files
    ; ********************
    (set #rates_dir (tackon #uninstall_dir "Rates" ))
    (delete (tackon #rates_dir "DeutscheTELEKOM.rates") )
    (delete #rates_dir)

    ; ***************
    ;  delete guides
    ; ***************
    (set #guides_dir      (tackon #uninstall_dir "Docs"      ))
    (set #guides_dir.info (tackon #uninstall_dir "Docs.info" ))
    (if (exists #guides_dir)
        (
            (foreach #guides_dir "CallMan#?.guide#?"
                (
                    (delete (tackon #guides_dir @each-name) )
                )
            )
        )
    )
    (delete #guides_dir      )
    (delete #guides_dir.info )

    ; ****************
    ;  delete CallMan
    ; ****************
    (set #Install      (tackon #uninstall_dir "Install"           ))
    (set #Install.info (tackon #uninstall_dir "Install.info"      ))
    (set #Convert      (tackon #uninstall_dir "CM_Converter"      ))
    (set #Convert.info (tackon #uninstall_dir "CM_Converter.info" ))
    (set #CallMan      (tackon #uninstall_dir "CallMan"           ))
    (set #CallMan.info (tackon #uninstall_dir "CallMan.info"      ))
    (delete #Install      )
    (delete #Install.info )
    (delete #Convert      )
    (delete #Convert.info )
    (delete #CallMan      )
    (delete #CallMan.info )

    ; **************************
    ;  remove CallMan directory
    ; **************************
    (delete #uninstall_dir )
)


; ****************************************************************************
;  MAIN
; ****************************************************************************

(message #welcome)
(message #requirements)

; ************************************
;  choose mode (install or deinstall)
; ************************************
(set #mode
    (askchoice
    (prompt #installmode )
    (help #installmode_help )
    (choices #installmode_install #installmode_uninstall )
    (default 0)
    )
)
(welcome)

(if (= #mode 0)
    ( ; then
        (p_install)
    )
)

(if (= #mode 1)
    ( ; then
        (p_uninstall)
    )
)


