; ****************************************************************************
; *                                                                          *
; *  'CallMan' Install-Script                                                *
; *  written 1997 by Alexander 'Sascha' Fichtner                             *
; *                                                                          *
; *  $VER: CallMan Installer 1.0 (01.06.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/bug report to:                           *
; *                                                                          *
; *    fichtner@informatik.tu-muenchen.de                                    *
; *                                                                          *
; ****************************************************************************

(if (= @language "english")
    (
	(set #default_language 1)
	(set #welcome "\n\n\nWelcome to\n\nCallMan\n\n1.0 (01.06.1997)\n\n© Copyright 1997 Alexander 'Sascha' Fichtner" )
	(set #requirements "\n\nRequirements:\n\n- OS 3.1\n- MUI 3.3+\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.0 (01.06.1997)\n\n© Copyright 1997 Alexander 'Sascha' Fichtner" )
	(set #requirements "\n\nSystemvoraussetzungen:\n\n- OS 3.1\n- MUI 3.3+\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" )))

    ; ********************
    ;  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"))
(message #ratesfiles)

    ; *****************
    ;  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"))))
	    ; ****************************
	    ;  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 "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") ) )
		)
		( ; else
		    (makedir #catalogs_dir )
		    (if (IN #cm_language 1) (copylib (source "Catalogs/deutsch/CallMan.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 @each-name ) )
		)
	    )
	    (delete #catalogs_dir )
	)
	( ; else
	    (set #catalogs_dir "LOCALE:Catalogs" )
	    (foreach #catalogs_dir "#?"
		(
		    (delete (tackon #catalogs_dir (tackon @each-name "CallMan.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 #CallMan      (tackon #uninstall_dir "CallMan"      ))
    (set #CallMan.info (tackon #uninstall_dir "CallMan.info" ))
    (delete #Install      )
    (delete #Install.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)
    )
)


