
; TAB = 6


; #####  Globale Variablen  #####
(set #versi-old "4.10")
(set #versi-new "4.11")
(set #versi-dat "26-Oct-1996")


(set #installmode 0)

(set #cfg-help
  (cat "Die angewählte Beispielkonfiguration wird in das MailDemon-Verzeichnis entpackt. "
	 "Bei Bedarf werden hierbei die Unterverzeichnisse \"MailDemon:Konfiguration/\" und "
	 "\"MailDemon:Files/\" automatisch erstellt.")
)
(set #not-inst "\n\n\n\n\n\nDer MailDemon wurde noch nicht installiert!")
(set #coders-help
  (cat "Die beiden Programme \"uuin\" und \"Base64Encode\" werden zur "
	 "uucodierung bzw. Base64-Codierung benötigt. Wenn Sie keine Codierung "
	 "von Nachrichten wünschen, brauchen Sie diese Programme nicht zu "
	 "installieren. Sie sind für den Ablauf des MailDemon nicht notwendig.\n\n"
	 @copylib-help)
)
(set #mn-help
  (cat "Die MUI-Klasse MonthNavigator wird im MailDemon-Prefs zur Eingabe "
	 "von Datumsangaben benötigt.\n\n"
	 @copylib-help)
)


; #####  Script-Start  #####
(welcome
  (message (cat "\n\n\n\n\nMailDemon " #versi-new " [SHAREWARE]\n\nCopyright © " #versi-dat ' by\nMaik "BLiZZeR" Schreiber'))
  (message
    (cat "\nWerter MailDemon-Anwender, dies ist ein \"intelligentes\" Installationsscript. Alle "
	   "(De-)Installations-Aktion können Sie bequem über dieses Script regeln. Es versetzt "
	   "Sie in die Lage, jede einzelne Aktion zu steuern und zu überwachen. Vor jeder "
	   "schreibenden und löschenden Aktion kommt eine Sicherheitsabfrage, mit der Sie den "
	   "Vorgang auf Wunsch abbrechen können. Außerdem finden sie zu jeder Aktion eine "
	   "umfangreiche Hilfe, die Sie bei Fragen zu Rate ziehen können.\n\nViel Spaß noch :)")
  )
)

(while (= 1 1)
  (

    (set #installmode
	(askchoice
	  (prompt "Welchen Installationsmodus wünschen Sie?")
	  (choices (cat "Komplette Neuinstallation des MailDemon " #versi-new)
		     (cat "Update von Version " #versi-old " auf " #versi-new)
			    "Starten des Konfigkonverters"
			    "Starten von PMBS2Emp"
			    "Installation einer Beispielkonfiguration"
			    "Komplette Deinstallation des MailDemon"
			    "Registrierformular ausfüllen"
			    "Beenden des Installers")
	  (default #installmode)
	  (help @askchoice-help)
	)
    )

    ; #####  Neuinstallation/Update  #####
    (if (OR (= #installmode 0) (= #installmode 1))
	(
	  (if (AND (= #installmode 1) (= (getassign "MailDemon") ""))
	    (message #not-inst)
	    (
		(if (= #installmode 0)
		  (
		    (set #dummy @default-dest)
		    (set #dest
			(askdir
			  (prompt "Wohin soll der MailDemon installiert werden?")
			  (help
			    (cat "Hier legen Sie fest, in welches Verzeichnis Sie den MailDemon installieren "
				   "möchten. Im angewählten Verzeichnis wird automatisch ein Unterverzeichnis "
				   "\"MailDemon\" angelegt.\nACHTUNG: Bitte installieren Sie den MailDemon "
				   "nicht über eine bereits vorhandene Installation! Möchten Sie den "
				   "MailDemon neu installieren, sollten Sie zuvor die Deinstallation "
				   "starten.\n\n"
				   @askdir-help)
			  )
			  (default #dummy)
			  (disk)
			)
		    )
		    (set #dest (tackon #dest "MailDemon"))
		    (makedir #dest
			(prompt "\n\n\n\n\n\nDas Unterverzeichnis \"MailDemon\" wird angelegt.")
			(infos)
			(confirm)
			(help @makedir-help)
		    )
		    (message "\n\n\n\n\n\nDer Assign \"MailDemon:\" wird jetzt angelegt."
			(help
			  (cat "Damit der MailDemon richtig funktioniert, benötigt er einen Assign "
				 "namens \"MailDemon:\". Wenn Sie diesen Assign jetzt anlegen lassen, "
				 "können Sie den MailDemon nach der Installation sofort benutzen.")
			)
		    )
		    (makeassign "MailDemon" #dest)
		  )
		  (set #dest "MailDemon:")
		)
		(copyfiles
		  (prompt "Kopieren der Dateien...")
		  (choices "MailDemon" "MailDemon-Prefs" "MailDemon.guide" "Konfigkonverter" "Register.txt"
			     "MailDemon.info" "MailDemon-Prefs.info" "MailDemon.guide.info" "Konfigkonverter.info" "Register.txt.info")
		  (help
		    (cat "Hier legen Sie fest, welche Dateien Sie in das MailDemon-Verzeichnis kopieren "
			   "lassen möchten. Grundsätzlich notwendig für die Arbeit des MailDemon sind nur "
			   "das Hauptprogramm selbst (\"MailDemon\") sowie der Voreinsteller (\"MailDemon-"
			   "Prefs\"). Alle weiteren Dateien sind für den Ablauf nicht notwendig.\n\n"
			   @copyfiles-help)
		  )
		  (source "")
		  (dest #dest)
		  (confirm)
		)
		(copylib
		  (prompt "Kopieren der Codierer...")
		  (help #coders-help)
		  (source "uuin")
		  (dest "c:")
		  (confirm)
		)
		(copylib
		  (prompt "Kopieren der Codierer...")
		  (help #coders-help)
		  (source "Base64Encode")
		  (dest "c:")
		  (confirm)
		)
		(copylib
		  (prompt "Kopieren des MonthNavigator-Pakets...")
		  (help #mn-help)
		  (source "MonthNavigator/MonthNavigator.mcc")
		  (dest "MUI:Libs/MUI/")
		  (confirm)
		)
		(copylib
		  (prompt "Kopieren des MonthNavigator-Pakets...")
		  (help #mn-help)
		  (source "MonthNavigator/MonthNavigator.mcp")
		  (dest "MUI:Libs/MUI/")
		  (confirm)
		)
		(copylib
		  (prompt "Kopieren des MonthNavigator-Pakets...")
		  (help #mn-help)
		  (source "MonthNavigator/date.library")
		  (dest "LIBS:")
		  (confirm)
		)
		(if (= #installmode 0)
		  (
		    (makedir (tackon #dest "Konfiguration")
			(prompt "\n\n\n\n\n\nDas Unterverzeichnis \"Konfiguration\" wird angelegt.")
			(confirm)
			(help
			  (cat "Im Unterverzeichnis \"Konfiguration\" legt der MailDemon alle Konfigurations"
				 "dateien ab. Dieses Verzeichnis ist für den Ablauf unbedingt notwendig!\n\n"
				 @makedir-help)
			)
		    )
		    (startup 'MailDemon'
			(prompt "\n\n\n\n\nDer Assign \"MailDemon:\" wird in die User-Startup eingefügt.")
			(command (cat "Assign MailDemon: \"" #dest "\""))
			(help
			  (cat "Damit der MailDemon richtig funktioniert, benötigt er einen Assign "
				 "namens \"MailDemon:\". Der Einfachheit halber wird dieser Assign "
				 "normalerweise bereits beim Hochfahren des Rechners angelegt (in der "
				 "User-Startup). In Ihre User-Startup werden jetzt folgende Zeilen "
				 "eingefügt:\n\n;BEGIN MailDemon\nAssign MailDemon: \"" #dest "\"\n"
				 ";END MailDemon\n\n"
				 @startup-help)
			)
		    )
		  )
		  (run "Konfigkonverter <>CON:0/11/640/189/Konfigkonverter/WAIT/CLOSE")
		)
		(message
		  (cat "Nach 2 Major-Updates habe ich mich nun entschlossen, alle weiteren Updates "
			 "kostenlos herauszubringen. Dies bedeutet für registrierte Anwender, daß sie von "
			 "allen neuen Features kostenfreien Gebrauch machen können. Allerdings bin ich in "
			 "der Situation, daß ich für meine Arbeit nicht belohnt werde.\n\nMeine Bitte "
			 "an Sie: Wenn Sie der Meinung sind, daß meine Arbeit entschädigt werden sollte, "
			 "können Sie mir eine Spende zukommen lassen (meine Bankverbindung finden Sie auf "
			 "der nächsten Seite). Sie helfen mir damit, die Entwicklung des MailDemon aufrecht "
			 "zu erhalten und weiter voranzutreiben.\n\nVielen Dank.")
		)
		(message
		  (cat "\nMeine Adresse:\n\n"
			 "Maik Schreiber\n"
			 "Korallusstraße 3b\n"
			 "21109 Hamburg\n"
			 "FR Germany\n\n\n"
			 "Meine Bankverbindung:\n\n"
			 "Kontonummer: 214 09 11 (Maik Schreiber)\n"
			 "Bankleitzahl: 130 700 00 (Deutsche Bank)")
		)
		(message
		  (cat "\n\n\n\n\nBitte beachten Sie die neuen Mailinglisten für den MailDemon.\n"
			 "Nähere Erläuterungen finden Sie in der Anleitung.")
		)
	    )
	  )
	)
    )

    ; #####  Konfigkonverter	  #####
    (if (= #installmode 2)
	(if (= (getassign "MailDemon") "")
	  (message #not-inst)
	  (run "Konfigkonverter <>CON:0/11/640/189/Konfigkonverter/WAIT/CLOSE")
	)
    )

    ; #####  PMBS2Emp  #####
    (if (= #installmode 3)
	(
	  (set #p2e
	    (askchoice
		(prompt "Wie soll PMBS2Emp gestartet werden?")
		(choices "Umleitung in eine .emp-Datei"
			   "Umleitung in ein Fenster"
			   "Exit")
		(help
		  (cat "Mit dem Hilfsprogramm \"PMBS2Emp\" ist es möglich, die Brettliste des "
			 "Mailboxprogramms \"Prometheus\" in eine für den MailDemon zugeschnittene "
			 "Form zu bringen (Empfängergruppen).\nACHTUNG: Der Server muß während des "
			 "Starts von \"PMBS2Emp\" aktiv sein!\n\n"
			 @askchoice-help)
		)
	    )
	  )
	  (if (OR (= #p2e 0) (= #p2e 1))
	    (
		(set #pattern
		  (askstring
		    (prompt "\n\n\nBitte ein Muster eingeben:")
		    (default "#?")
		    (help
			(cat "PMBS2Emp ist ab der Version 1.2 in der Lage, Bretter nach einem Muster "
			     "auszugeben, z.B. \"#?WERB#?\". Geben Sie hier bitte das gewünschte Muster "
			     "ein. Ist das Muster leer, wird automatisch \"#?\" angenommen, also alle "
			     "Bretter.")
		    )
		  )
		)
		(if (= #p2e 0)
		  (set #dir
		    (askfile
			(prompt "In welche Datei soll die Ausgabe umgeleitet werden?")
			(help @askfile-help)
			(default "Bretter.emp")
		    )
		  )
		  (set #dir "CON:0/11/640/189/PMBS2Emp")
		)
		(run "LZX e PMBS2Emp.lzx RAM: PMBS2Emp")
		(run (cat "RAM:PMBS2Emp >" #dir " " #pattern))
		(delete "RAM:PMBS2Emp")
	    )
	  )
	)
    )

    ; #####  Beispielkonfiguration	    #####
    (if (= #installmode 4)
	(
	  (if (= (getassign "MailDemon") "")
	    (message #not-inst)
	    (
		(set #konfig
		  (askchoice
		    (prompt "Welche Beispielkonfiguration soll installiert werden?")
		    (choices "Prometheus"
				 "FastCall"
				 "Connectline"
				 "Exit")
		    (help
			(cat "Für die Mailboxprogramme \"Prometheus\", \"FastCall\" und \"Connectline\" "
			     "liegen Beispielkonfigurationen vor. Wählen Sie hier, welche dieser Beispiel"
			     "konfigurationen Sie installieren möchten.\nACHTUNG: Bevor Sie eine "
			     "Beispielkonfiguration installieren, sollte der MailDemon installiert "
			     "worden sein!\n\n"
			     @askchoice-help)
		    )
		  )
		)
		(if (= #konfig 0)
		  (run "LZX <>CON:0/11/640/189/Beispielkonfiguration x CfgPrometheus.lzx MailDemon:"
		    (prompt "\n\n\n\n\nInstalliere jetzt die Beispielkonfiguration für \"Prometheus\".")
		    (help #cfg-help)
		    (confirm)
		  )
		)
		(if (= #konfig 1)
		  (run "LZX <>CON:0/11/640/189/Beispielkonfiguration x CfgFastCall.lzx MailDemon:"
		    (prompt "\n\n\n\n\nInstalliere jetzt die Beispielkonfiguration für \"FastCall\".")
		    (help #cfg-help)
		    (confirm)
		  )
		)
		(if (= #konfig 2)
		  (run "LZX <>CON:0/11/640/189/Beispielkonfiguration x CfgConnectline.lzx MailDemon:"
		    (prompt "\n\n\n\n\nInstalliere jetzt die Beispielkonfiguration für \"Connectline\".")
		    (help #cfg-help)
		    (confirm)
		  )
		)
	    )
	  )
	)
    )

    ; #####  Deinstallation  #####
    (if (= #installmode 5)
	(
	  (set #dir (getassign "MailDemon"))
	  (if (= #dir "")
	    (message #not-inst)
	    (
		(if (= (askbool
			   (prompt "\n\n\n\n\nSoll der MailDemon wirklich deinstalliert werden?")
			   (help "")
			   (default 0)
			 ) 1)
		  (
		    (makeassign "MailDemon")
		    (run (cat 'Delete >NIL: "' #dir '" "' #dir '.info" ALL FORCE') (prompt "") (help ""))
		    (message
			(cat "\n\nBei der Installation wurde in Ihrer User-Startup ein Assign eingefügt. "
			     "Um diesen zu entfernen, müssen Sie die Datei s:User-Startup in einen "
			     "Editor laden und folgende Zeilen entfernen:\n\n;BEGIN MailDemon\n"
			     "Assign MailDemon: \"" #dir "\"\n;END MailDemon\n\nDamit ist die "
			     "Deinstallation dann abgeschlossen.")
		    )
		  )
		)
	    )
	  )
	)
    )

    ; #####  Registrierung  #####
    (if (= #installmode 6)
	(run "ED Register.txt"
	  (prompt "")
	  (help "")
	)
    )

    ; #####  Ente  #####
    (if (= #installmode 7) (exit (quiet)))
  )
)

