
;====================================================================
; Einige Initialisierungen
;====================================================================

(complete 0)

; Die Versionsnummer und das Erstellungs-Datum der hier installierten
; HotHelp-Version.

(set hh-version "3")
(set hh-version-intern "3.00")
(set hh-date "(14 Feb 94)")

; HotHelp wird über eine ganze Reihe von Verzeichnissen verteilt, so daß sich
; kein einzelnes Default-Dir angeben läßt.

(set @default-dest "")

(set os-version (/ (getversion) 65536))
(set os-13 (< os-version 36))
(set os-20 (>= os-version 36))
(set os-21 (>= os-version 38))

; Die Pfadnamen der einzelnen Quell-Dateien.

(set source-lha						"Tools/LhA")
(set source-hotkeyhelp				"C/HotKeyHelp")
(set source-toolicons (if os-20	"Icons/T2.0/"
											"Icons/T1.3/"))
(set source-toolicon-hkh			(cat source-toolicons "HKH.info"))
(set source-toolicon-hhpref		(cat source-toolicons "HHPref.info"))
(set source-toolicon-hhpro			(cat source-toolicons "HHPro.info"))
(set source-toolicon-easyhh		(cat source-toolicons "HHEasy.info"))
(set source-toolicon-hhmarker		(cat source-toolicons "HHMark.info"))
(set source-toolicon-hhcomp		(cat source-toolicons "HHC.info"))
(set source-toolicon-hhmanager	(cat source-toolicons "HHMan.info"))
(set source-toolicon-hh				(cat source-toolicons "HH.info"))
(set source-icons (if os-20		"Icons/Icons2.0"
											"Icons/Icons1.3"))

(set source-txt-hothelp				"Text/HotHelp.txt")
(set source-txt-glossar				"Text/Glossar.txt")
(set source-txt-iff					"Text/IFF.txt")

(set source-txt-ansic				"Text/ANSI-C.txt")
(set source-txt-hothelptools		"Text/HotHelpTools.txt")
(set source-txt-libsdevs			"Text/Libs & Devs 1.3.txt")
(set source-txt-arexx				"Text/ARexx.txt")
(set source-txt-shell				"Text/Shell.txt")

(set archive-hothelplib				"Archive/HotHelpLib.lha")
(set archive-fasthothelplib		"Archive/FastHotHelpLib.lha")
(set archive-hothelphandler		"Archive/Handler.lha")
(set archive-catalogs				"Archive/Catalogs.lha")
(set archive-tools					"Archive/Tools.lha")
(set archive-header					"Archive/Header.lha")

; Die Größen der Text-Dateien.

(set size-txt-hothelp				125000)
(set size-txt-ansic					30000)
(set size-txt-glossar				70000)
(set size-txt-iff						15000)
(set size-txt-hothelptools			360000)
(set size-txt-libsdevs				320000)
(set size-txt-arexx					35000)
(set size-txt-shell					45000)

; Die Pfadnamen der Programme, die vom Installations-Skript aufgerufen werden.

(set run-lhapatterns		"Tools/LhaPatterns")
(set run-flushprojects	"Tools/FlushProjects")
(set run-deleteproject	"Tools/DeleteProject")
(set run-lha				"RAM:LhA -a")
(set run-clearstartup	"Tools/ClearStartup")
(set run-setprojectpath	"Tools/SetProjectPath")

; Der Name des HotHelp-Verzeichnis darf nicht länger als dieser Wert sein.

(set max-project-dir 200)

; Default-Sprache für die verschiedenen Installations-Tools ist Deutsch.

(set tools-language 0)

;=====================================================================================
; installtext
;
; Die Prozedur erwartet Parameter in den folgenden Variablen:
;    §it-name   -	Name des Projektes, dessen Text-Datei kopiert wird
;    §it-size   -	Größe der Text-Datei
;    §it-source -	Pfadname der zu kopierenden Textdatei
;    §it-dest   -	Pfadname des Zielverzeichnisses
; Die folgenden Variablen werden von der Prozedur gesetzt:
;    §it-dest   -	Name des Verzeichnisses, in dem die Datei tatsächlich installiert
;						wurde. Kann sich vom Eingabewert unterscheiden, wenn aufgrund
;						mangelnden Disk-Speichers ein anderer Datenträger gewählt wurde.
;=====================================================================================
(procedure installtext
	(
	(if (and (> @user-level 0) (<= (getdiskspace §it-dest) §it-size))
		(
		(until (> (getdiskspace §it-dest) §it-size)
			(
			(message (cat	"Auf dem gewählten Datenträger \"" §it-dest "\" ist nicht "
								"mehr genügend freier Speicherplatz vorhanden, um die Texte "
								"des " §it-name "-Projektes zu installieren (es sind nur noch "
								 (/ (getdiskspace §it-dest) 1024) " KByte frei, während die "
								"Text-Datei " (/ §it-size 1024) " KByte benötigt).\n"
								"Dieser Fehler tritt üblicherweise bei Installation auf "
								"Disketten auf (falls Sie HotHelp auf eine Festplatte "
								"installieren und die Meldung sehen, sollten Sie die "
								"Installation abbrechen und erst ein wenig Platz auf Ihrer "
								"Platte schaffen).\n\n"
								"Sie müssen daher nun eine andere Disk angeben, auf die die "
								"Text-Datei kopiert werden soll.\n"))
			(set §it-dest
				(askdir
					(prompt "Auswahl der Disk für die Text-Datei des " §it-name "-Projektes (Dateigröße: " (/ §it-size 1024) " KByte)")
					(help (cat	"    Bei Installation auf Disketten müssen die Text-Dateien "
									"auf mehrere Disks verteilt werden, da sie sehr viel Platz "
									"benötigen. Sie müssen daher nun eine andere Disk auswählen, "
									"auf die die Text-Dateien kopiert werden sollen. Sie können "
									"auf der Disk auch Unterverzeichnisse anlegen.\n"
									"    Bitte beachten Sie jedoch, daß alle Disketten "
									"eindeutig Namen tragen müssen (z.B. \"HotHelp1\", "
									"\"HotHelp2\", etc.). Keinesfalls dürfen zwei Disketten "
									"denselben Namen tragen!"
									"\n\n"
									@askdir-help))
				(default §it-dest)
				(newpath)
				)
			)
			(if (= (exists §it-dest) 0)
				(makedir §it-dest (infos) (safe))
			(set §it-dest (expandpath §it-dest))
			)

			; Der Name darf nicht zu lang sein, sonst können wir ihn hinterher nicht in
			; die Header-Dateien der Projekte eintragen.
			(if (>= (strlen §it-dest) max-project-dir)
				(abort (cat	"\nDer eingegebene Name \n\"" §it-dest "\"\nist zu lang!\n\n"
								"Bitte geben Sie maximal " (- max-project-dir 1) " Zeichen ein!"))
			)
			)
		)
		)
	)
	(copyfiles
		(prompt	(cat "Kopiere Projekt-Texte " §it-name))
		(source	§it-source)
		(dest		§it-dest)
	)
	)
)

;=====================================================================================
; Beginn der Installation
;=====================================================================================

; Eine kleine Einleitungs-Message, gefolgt vom Startbildschirm des Installers.

(set act-user-level @user-level)
(user 1)
(message (cat	"Willkommen zum Installationsprogramm der Demoversion von \"HotHelp "
					 hh-version "\"!\n\n"
					"Dieses Skript kopiert die verschiedenen Dateien, "
					"aus denen sich das HotHelp-System zusammensetzt, "
					"auf Ihre Festplatte.\n\n"
					"Falls Sie über keine Platte verfügen, werden statt dessen bis zu "
					"drei Leerdisketten benötigt (Hinweise zum Formatieren von Disketten "
					"entnehmen Sie bitte Ihrem Amiga-Benutzerhandbuch).\n"
					"Bitte beachten Sie, daß alle verwendeten Leerdisks unterschiedliche "
					"Namen haben müssen und daß keine den Namen \"HotHelp\" tragen "
					"darf!"))
(user act-user-level)
(welcome)

(set partition "WORK:")
(if (= @user-level 0)
	(
	(user 1)
	(message (cat	"Im Einsteiger-Modus wird davon ausgegangen, daß HotHelp auf "
						"einer Festplatte installiert wird, auf der noch mindestens "
						"ca. 4 MByte freier Speicherplatz verfügbar sind. Sie müssen dazu im "
						"nächsten Fenster den Namen der gewünschten Festplatten-Partition "
						"angeben.\n\n"
						"Alle weiteren Angaben werden dann vom Installations-Skript "
						"möglichst genau an Ihr System angepaßt - insbesondere wird auch "
						"erkannt, wenn Sie schon eine alte HotHelp-Version installiert "
						"haben; diese wird dann komplett durch die neue Version ersetzt."))

	(set ok 0)
	(while (not ok)
		(set partition
			(askdir
				(prompt "Auswahl des Laufwerks für die HotHelp-Installation")
				(help (cat	"    Sie können über das Symbol 'Laufwerke anz.' (bzw. 'Show drives') "
								"eine Übersicht über alle Laufwerke Ihres Amiga anfordern; aus "
								"dieser Übersicht sollten Sie nur die oberen, nicht farblich "
								"gekennzeichneten Einträge auswählen.\n"
								"    Typische sinnvolle Namen sind z.B. \"WORK:\", \"HD0:\" oder \"DH0:\"; "
								"nicht verwenden sollten Sie Namen wie \"DF0:\", \"DF1:\", "
								"\"DF2:\", \"DF3:\", \"RAD:\", \"RAM:\", \"System2.0:\", "
								"\"WB_2.x:\", \"System3.0:\" oder \"WB_3.x:\"!"
								"\n\n"
								@askdir-help))
				(default partition)
				(disk)
			)
		)

		; Ist der Dateiname leer oder endet nicht mit einem ':' oder existiert unter
		; diesem Namen kein Verzeichnis, wird eine Fehlermeldung angezeigt; andernfalls
		; kann die Auswahl-Schleife beendet werden.
		(if (or (or (<= (strlen partition) 0) (<> (substr partition (- (strlen partition) 1) 1) ":")) (<> (exists partition (noreq)) 2))
			(message (cat	"\nBei Ihrer Auswahl \"" partition "\" handelt es sich nicht um "
								"eine gültige Laufwerks-Angabe!\n\n"
								"Sie können über das Symbol 'Laufwerke anz.' (bzw. 'Show drives') "
								"eine Übersicht über alle Laufwerke Ihres Amiga anfordern; aus "
								"dieser Übersicht sollten Sie nur die oberen, nicht farblich "
								"gekennzeichneten Einträge auswählen.\n"
								"Typische sinnvolle Namen sind z.B. \"WORK:\", \"HD0:\" oder \"DH0:\"; "
								"nicht verwenden sollten Sie Namen wie \"DF0:\", \"DF1:\", "
								"\"DF2:\", \"DF3:\", \"RAD:\", \"RAM:\", \"System2.0:\", "
								"\"WB_2.x:\", \"System3.0:\" oder \"WB_3.x:\"!"))
			;else
			(set ok 1)
		)
	)
	(user 0)
	)
)

; Dieser kleine Trick ist notwendig, damit LHA unter 1.3 und 2.0 keinen Mist
; baut...

(run run-lhapatterns)

; Falls HotHelp schon installiert ist, wird dies hier ermittelt. 'old-hh-version'
; kann anschließend die folgenden drei Werte beinhalten: -1 (noch nicht
; installiert), 0 (Version 2 war installiert) oder 1 (Version 3)

(set old-hh-version -1)
(if (<> (getassign "HOTHELP") "")
	(
	; Nun werden sicherheitshalber alle evtl. schon geladenen Projekte wieder aus
	; dem Speicher entfernt (diese geLock()ten Dateien lassen sich ja so
	; wahnsinnig schlecht überschreiben...).

	(working "\nEntferne evtl. geladene Projekte aus dem Speicher...")
	(run (cat run-flushprojects " " tools-language))

	; Wenn eine dieser typischen 3er-Dateien existiert, gehen wir davon aus, daß
	; Version 3 installiert ist.

	(set old-hh-version
		(if (or (exists "L:HotHelpHandler")
				  (exists "HOTHELP:HotHelpLib.English"))
			1
		;else
			0)
	)

	; Nun kann noch die Hilfsdatei des alten Managers entfernt werden.

	(if (exists ("HOTHELP:HotHelpManager.Hlp"))
		(delete "HOTHELP:HotHelpManager.Hlp"
			(prompt (cat	"\nLösche HOTHELP:HotHelpManager.Hlp"
								"\n\n"
								"Diese Datei enthält die Hilfstexte für den "
								"alten HotHelpManager. Da dieses Programm nicht "
								"mehr benötigt wird, kann auch diese Datei entfernt "
								"werden."))
			(help "")
			(confirm)
		)
	)
	)
)

(set libs-chosen
	(askoptions
		(prompt "Auswahl der Funktions-Bibliotheken")
		(help (cat	"    Als erstes müssen Sie festlegen, welche Funktions-Bibliotheken auf "
						"Ihrem System installiert werden sollen. Im Normalfall können Sie die "
						"vorgegebene Einstellung übernehmen und die Installation direkt "
						"fortsetzen.\n"
						"    Hier noch einige Hintergrund-Informationen über die einzelnen "
						"Bibliotheken:\n"
						"    HotHelp.Library - Diese Library stellt das Kernstück von "
						"HotHelp dar. Es handelt sich um eine Funktions-Bibliothek, in "
						"der alle Routinen zusammengefaßt sind, die zum Verwalten und "
						"Anzeigen der Hilfstexte benötigt werden - mit anderen Worten: "
						"ohne diese Bibliothek geht überhaupt nichts!\n\n"
						"   RCT.Library - Unter OS 1.3 wird diese Bibliothek verwendet, "
						"um einen FileRequester anzubieten. Sie können allerdings auf das "
						"Kopieren verzichten, wenn Sie schon über die ReqTools- oder "
						"die Arp-Library verfügen - HotHelp greift dann auf deren "
						"File-Requester zurück."
						"\n\n"
						@askoptions-help))
		(choices
			"HotHelp.Library"
			"RCT.Library"
		)
		(default (if os-20 1 3) )
	)
)

; LhA wird in die RAM-Disk kopiert, damit das Programm nicht jedesmal von Disk
; geladen werden muß.
(copyfiles
	(source source-lha)
	(dest "RAM:")
	(nogauge)
)

; Nun werden die gewünschten Libraries der Reihe nach aus ihren Archiven
; entnommen.
(if (<> libs-chosen 0)
	(
	(if (in libs-chosen 0)
		(run (cat run-lha " x " archive-hothelplib " LIBS: HotHelp.Library"))
	)
	(complete 5)
	(if (in libs-chosen 1)
		(run (cat run-lha " x " archive-hothelplib " LIBS: RCT.Library"))
	)
	(complete 10)
	)
)
(complete 10)

; Nun kommen die Handler an die Reihe:

(run
	(prompt	(cat	"\nKopieren der HotHelp-Handler\n\n"
						"Bei den Handlern handelt es sich um Programm-Teile, "
						"die von der Library bzw. HotKeyHelp nachgeladen werden, "
						"um eigene Prozesse daraus zu erzeugen.\n"
						"Der HotHelpHandler wird benötigt, um asynchrone "
						"HotHelp-Fenster zu erzeugen, der HotKeyHelpHandler "
						"wird von HotKeyHelp als eigener Prozeß installiert, "
						"der für die Überwachung des Input-Streams, das "
						"ARexx-Interface und die Onlineprojekte zuständig ist."))
	(help		(cat	"    Bei Zustimmung werden die beiden Handler in das "
						"L:-Verzeichnis entpackt, wo sie von HotHelp erwartet werden."))
	(cat run-lha " x " archive-hothelphandler " L:")
	(confirm)
)
(complete 15)

; And now for something completely different: It's Monty Pythons Flying HotKeyHelp!

(set hotkeyhelp-dir
	(askdir
		(prompt "Auswahl des HotKeyHelp-Verzeichnisses")
		(help (cat	"    Das Programm HotKeyHelp ist ebenfalls sehr wichtig für "
						"das HotHelp-System. Es installiert einen Input-Handler, der "
						"alle Tastatur-Eingaben überwacht. Wird einer der vorgegebenen "
						"Hotkeys entdeckt, öffnet der Handler über die HotHelp-Library "
						"ein HotHelp-Fenster mit einem Hilfstext - je nachdem, welcher "
						"Hotkey eingegeben wurde.\n"
						"    Ohne dieses Programm können demnach keine HotHelp-Fenster "
						"über die Hotkeys geöffnet werden. Auch die neuen Online-Projekte "
						"und das ARexx-Interface sind nur verwendbar, wenn HotKeyHelp "
						"installiert wurde.\n"
						"    Sie müssen nun hier festlegen, in welches Verzeichnis "
						"das Programm kopiert werden soll."
						"\n\n"
						@askdir-help))
	(default "C:")
	(newpath)
	)
)
(if (= (exists hotkeyhelp-dir) 0)
	(makedir hotkeyhelp-dir (infos) (safe))
(set hotkeyhelp-dir (expandpath hotkeyhelp-dir))
)
(copyfiles
	(source source-hotkeyhelp)
	(dest hotkeyhelp-dir)
)
(copyfiles
	(source source-toolicon-hkh)
	(dest hotkeyhelp-dir)
	(newname "HotKeyHelp.info")
)
(complete 20)

; Nun wird das Verzeichnis ausgewählt, in dem alle HotHelp-Dateien untergebracht
; werden sollen. Diesem Verzeichnis wird später das HOTHELP:-Device zugeordnet.

(message (cat	"\nBitte bestimmen Sie jetzt das Verzeichnis, in dem die für HotHelp "
					"wichtigen Daten abgelegt werden sollen. Dabei handelt es sich z.B. "
					"um eine Datei mit den aktuellen Einstellungen des Systems, diverse "
					"Icon-Dateien und (last but not least) die Projekt-Dateien mit "
					"den Hilfstexten selber.\n"))

; Falls HOTHELP: schon assigned ist (HotHelp also schon mal installiert wurde),
; weisen wir hier den entsprechenden Pfad an 'hothelp-dir' zu - andernfalls wird
; als Default "WORK:HotHelp" angenommen.

(set hothelp-dir (getassign "HOTHELP"))
(if (= hothelp-dir "")
	(set hothelp-dir (cat partition "HotHelp"))
)

(set hothelp-dir
	(askdir
		(prompt "Auswahl des HotHelp-Verzeichnisses")
		(help (cat	"    Sie müssen nun festlegen, in welchem Verzeichnis die "
						"Daten von HotHelp abgelegt werden sollen. Falls Sie HotHelp "
						"schon vorher einmal installiert haben, wird hier das damals "
						"ausgewählte Verzeichnis vorgegeben - andernfalls lautet die "
						"Vorgabe \"" partition "HotHelp\".\n"
						"    Festplatten-Besitzer können das so voreingestellte "
						"Verzeichnis 'HotHelp' auf der " partition "-Partition "
						"verwenden.\n"
						"    Bei Installation auf Disketten sollten Sie eine eigene "
						"Disk für die Dateien verwenden, auf der Sie dann ein "
						"entsprechendes Unterverzeichnis anlegen. Liegt die "
						"Ziel-Diskette z.B. in Laufwerk 1, sollten Sie "
						"\"DF1:HotHelp\" in das Feld 'Ausgewählte Schublade' "
						"eingeben, um ein Verzeichnis dieses Namens auf der Disk "
						"anlegen zu lassen. Verwenden Sie eine der vorbereiteten "
						"Leerdisketten."
						"\n\n"
						@askdir-help))
	(default hothelp-dir)
	(newpath)
	)
)
(if (= (exists hothelp-dir) 0)
	(makedir hothelp-dir (infos) (safe))
(set hothelp-dir (expandpath hothelp-dir))
)

(if (>= (strlen hothelp-dir) max-project-dir)
	(abort (cat	"\nDer eingegebene Name \n\"" hothelp-dir "\"\nist zu lang!\n\n"
					"Bitte geben Sie maximal " (- max-project-dir 1) " Zeichen ein!"))
)

; Jetzt folgen die Sprach-Dateien.

(if (or (<> (getassign "LOCALE") "") os-21)
	(run
		(prompt	(cat	"\nKopieren der Sprachen-Kataloge\n\n"
							"Die Kataloge enthalten die deutschen Texte, die innerhalb der "
							"HotHelp-Library und der HotHelp-Tools verwendet werden.\n"
							"(Es handelt sich dabei nicht um Hilfstexte, sondern um ganz "
							"normale Texte wie z.B. Beschriftungen von Symbolen, Meldungen an "
							"den Benutzer etc.)"))
		(help		(cat	"    HotHelp unterstützt in der neuen Version " hh-version " die "
							"Locale-Library. Das bedeutet, daß die Sprache der Benutzerführung "
							"eines Programms über den System-Editor 'Locale' "
							"bestimmt werden kann.\n"
							"    Diese beiden Kataloge werden benötigt, wenn Sie HotHelp "
							"mit einer deutschsprachigen Oberfläche verwenden wollen. Die "
							"beiden Dateien werden im Verzeichnis LOCALE:Catalogs/Deutsch "
							"abgelegt."))
		(cat run-lha " x " archive-catalogs " LOCALE:Catalogs/Deutsch/ #?.catalog")
		(confirm)
	)
)
(complete 25)

; Dieses Monster hängt an den Verzeichnisnamen einen '/' an, falls er nicht
; leer ist und nicht bereits mit ':' oder '/' endet (ansonsten bekommt LHA
; Probleme).
(set dst-dir hothelp-dir)
(if (and (> (strlen dst-dir) 0) (and (<> (substr dst-dir (- (strlen dst-dir) 1) 1) ":") (<> (substr dst-dir (- (strlen dst-dir) 1) 1) "/"))) (set dst-dir (cat dst-dir "/")))
(run
	(prompt	(cat	"\nKopieren von HotHelps Sprachen-Dateien\n\n"
						"Diese Dateien enthalten zum einen die englischen Vorgabe-Texte "
						"der Library und der Tools sowie deren deutsche Übersetzungen. "
						"Falls Sie immer mit mindestens OS 2.1 arbeiten und eben die "
						"System-Kataloge installiert haben, können Sie später die beiden "
						"Dateien 'HOTHELP:HotHelpLib.Deutsch' und 'HOTHELP:HotHelpTools.Deutsch' "
						"wieder löschen."))
	(help		(cat	"    Diese Dateien enthalten sämtliche Programm-Texte von HotHelp. "
						"Je nach der eingestellten Sprache werden die deutschen oder die "
						"englischen Texte verwendet, so daß die gesamte Benutzerführung "
						"in der gewählten System-Sprache erfolgt (vor OS 2.1 kann die "
						"aktuelle Sprache im Programm 'HotHelpPref' eingestellt werden).\n"
						"    Die Dateien werden im vorhin gewählten Verzeichnis für die "
						"HotHelp-Daten \"" hothelp-dir "\" abgelegt."))
	(cat run-lha " x " archive-catalogs " \"" dst-dir "\" #?.Deutsch #?.English")
	(confirm)
)
(complete 30)

; Nun die HotHelpTools
; 'tools-chosen' enthält danach eine Bitmaske, aus der hervorgeht, welche Tools
; installiert werden sollen.

(set tools-chosen
	(askoptions
		(prompt "Auswahl der HotHelpTools")
		(help (cat	"    In diesem Fenster können Sie auswählen, welche der "
						"HotHelp-Tools (HotHelp-Werkzeuge) Sie installieren möchten. "
						"Im folgenden erhalten Sie eine kurze Übersicht über die "
						"Bedeutung der einzelnen Programme:\n\n"
						"    HotHelpPref - Über dieses Tool kann eine Reihe wichtiger "
						"Voreinstellungen getroffen werden, die das gesamte HotHelp-System "
						"betreffen. Dazu gehören z.B. die Größe und Position von "
						"HotHelp-Fenstern, ihre Farben und der verwendete Zeichensatz, die "
						"Hotkeys, die zum Öffnen eines HotHelp-Fensters auf Tastendruck "
						"verwendet werden etc.\n\n"
						"    HotAmigaGuide - Mit diesem Programm können Sie "
						"AmigaGuide-Dateien als HotHelp-Projekte anmelden. Anschließend "
						"können Sie die AmigaGuide-Texte dann wie ganz normale "
						"Projektdateien in jedem HotHelp-Fenster betrachten."
						"\n\n"
						@askoptions-help))
		(choices		"HotHelpPref"
						"HotAmigaGuide")
		(default -1)
	)
)

; Wenn keines der Tools installiert werden soll, brauchen wir auch nicht nach dem
; Verzeichnis zu fragen... In diesem Fall wird 'tools-dir' auf den Dummy-String
; "KeineToolsInstalliert" gesetzt...

(set tools-dir "Keine_Tools_Installiert")
(if (<> tools-chosen 0)
	(
	(set tools-dir
		(askdir
			(prompt "Auswahl des Tool-Verzeichnis")
			(help (cat	"    Sie müssen nun festlegen, in welchem Verzeichnis die "
							"HotHelp-Tools abgelegt werden sollen.\n"
							"    Festplatten-Besitzer können das voreingestellte "
							"Verzeichnis 'HotHelpTools' auf der " partition "-Partition "
							"verwenden.\n"
							"    Bei Installation auf Disketten sollten Sie eine eigene "
							"Disk für die Tools benutzen, auf der Sie dann ein "
							"entsprechendes Unterverzeichnis anlegen. Liegt die "
							"Ziel-Diskette z.B. in Laufwerk 1, sollten Sie "
							"\"DF1:HotHelpTools\" in das Feld 'Ausgewählte Schublade' "
							"eingeben, um ein Verzeichnis dieses Namens auf der Disk "
							"anlegen zu lassen, in den die Tools dann kopiert werden."
							"\n\n"
							@askdir-help))
			(default (cat partition "HotHelpTools"))
			(newpath)
		)
	)
	(if (= (exists tools-dir) 0)
		(makedir tools-dir (infos) (safe))
	(set tools-dir (expandpath tools-dir))
	)

	; 'tools' enthält anschließend einen String mit den Namen aller gewünschten
	; Tools, der dann an LHA übergeben werden kann. Außerdem werden hier bereits
	; die Icons erzeugt.

	(set tools "")
	(if (in tools-chosen 0) ( (set tools (cat tools " HotHelpPref"))   (copyfiles (source source-toolicon-hhpref) (dest tools-dir) (newname "HotHelpPref.info")  )))
	(if (in tools-chosen 1) ( (set tools (cat tools " HotAmigaGuide")) (copyfiles (source source-toolicon-hhpro)  (dest tools-dir) (newname "HotAmigaGuide.info"))))

	(working "\nDie Tools werden entpackt...")
	(set dst-dir tools-dir)
	(if (and (> (strlen dst-dir) 0) (and (<> (substr dst-dir (- (strlen dst-dir) 1) 1) ":") (<> (substr dst-dir (- (strlen dst-dir) 1) 1) "/"))) (set dst-dir (cat dst-dir "/")))
	(run (cat run-lha " x " archive-tools " \"" dst-dir "\" " tools))
	)
)
(complete 35)

; Nun werden die diversen Icons in das HotHelp-Verzeichnis kopiert.

(working "\nDie Standard-Icons werden kopiert...")
(copyfiles
	(source source-icons)
	(dest (tackon hothelp-dir "Icons"))
	(all)
)
(complete 40)

; Und jetzt kommen die Projekt-Dateien!

(message (cat	"\nNun müssen noch die im Lieferumfang enthaltenen Dateien mit "
					"Hilfstexten (die sogenannten Projekte) installiert werden. "
					"Es handelt sich dabei um Auszüge aus den Projekten der HotHelp 3-"
					"Vollversion.\n"
					"Im folgenden Fenster können Sie dazu festlegen, welche der "
					"Projekte Sie installieren möchten und welche nicht.\n"
					"Eine Erläuterung zu den einzelnen Projekten erhalten Sie über das "
					"'Hilfe...'-Symbol im nächsten Fenster.\n\n"))

(set projects-chosen
	(askoptions
		(prompt "Auswahl der Projekte")
		(help (cat	"    In diesem Fenster können Sie auswählen, welche der "
						"Projekte (Dateien mit Hilfstexten) Sie installieren möchten. "
						"Im folgenden erhalten Sie eine kurze Übersicht über die "
						"Bedeutung der einzelnen Projekte:\n\n"
						"    HotHelp - Dieses Projekt enthält eine Reihe wichtiger "
						"Informationen über HotHelp selber und sollte auf jeden Fall "
						"installiert werden.\n\n"
						"    HotHelpTools - In diesem Projekt finden Sie Hilfstexte "
						"zu allen HotHelpTools. Die kontextsensitive Online-Hilfe "
						"(Hilfe auf Tastendruck zum aktuellen Fenster) der Tools "
						"kann nur verwendet werden, wenn dieses Projekt installiert "
						"wird.\n\n"
						"    Glossar - Enthält eine ausführliche Erklärung vieler "
						"Amiga-typischer Fachausdrücke und ist somit für jeden "
						"Gelegenheitsanwender ein ideales Nachschlagewerk.\n\n"
						"    Shell - Übersicht über alle Shell-Befehle, die von "
						"ihnen verwendeten Fehlercodes und verwandte Informationen.\n\n"
						"    ARexx - Dieses Projekt enthält eine Kurzreferenz für die "
						"Programmierung in der Interpretersprache ARexx, die ab Version "
						"2.0 Bestandteil des Betriebssystems ist und die vor allem dazu "
						"verwendet wird, Anwendungsprogramme von außen zu kontrollieren.\n\n"
						"    ANSI-C - Eine Beschreibung der Standardbibliothek für "
						"C-Compiler, die für jeden C-Programmierer interessant ist.\n\n"
						"    IFF - Dieses Projekt beschreibt das "
						"Standard-Datenaustauschformat IFF des Amiga. Es ist für jeden "
						"Programmierer interessant, der IFF-Dateien lesen oder "
						"schreiben möchte.\n\n"
						"    Libs & Devs 1.3 - Eine umfassende Dokumentation des "
						"Amiga-Betriebssystems bis einschließlich OS 1.3 mit einer "
						"Beschreibung aller System-Funktionen, -Strukturen und -Symbole. "
						"Eine Beschreibung aller OS-Versionen bis einschließlich OS 3.0 "
						"kann über MAXON bezogen werden."
						"\n\n"
						@askoptions-help))
		(choices		"HotHelp"
						"HotHelpTools"
						"Glossar"
						"Shell"
						"ARexx"
						"ANSI-C"
						"IFF"
						"Libs & Devs 1.3")
		(default -1)
	)
)
(if (<> projects-chosen 0)
	(
	(working "\nDie Header-Dateien werden installiert...")

	(set header "")
	(if (in projects-chosen  0) (set header (cat header " HotHelp.hdr")))
	(if (in projects-chosen  1) (set header (cat header " HotHelpTools.hdr")))
	(if (in projects-chosen  2) (set header (cat header " Glossar.hdr")))
	(if (in projects-chosen  3) (set header (cat header " Shell.hdr")))
	(if (in projects-chosen  4) (set header (cat header " ARexx.hdr")))
	(if (in projects-chosen  5) (set header (cat header " ANSI?C.hdr")))
	(if (in projects-chosen  6) (set header (cat header " IFF.hdr")))
	(if (in projects-chosen  7) (set header (cat header " Libs???Devs?1.3.hdr")))

	(set dst-dir (tackon hothelp-dir "Projekte"))
	(if (and (> (strlen dst-dir) 0) (and (<> (substr dst-dir (- (strlen dst-dir) 1) 1) ":") (<> (substr dst-dir (- (strlen dst-dir) 1) 1) "/"))) (set dst-dir (cat dst-dir "/")))
	(run (cat run-lha " x " archive-header " \"" dst-dir "\" " header))
	(complete 45)

	; Damit wären die Header-Files schon mal da, wo sie hingehören - nämlich in
	; HOTHELP:Projekte. Nun müssen wir uns noch um die Verteilung der Text-Dateien
	; kümmern.

	(set pro-dir (tackon hothelp-dir "Projekte"))

	(if (in projects-chosen 0) (	(set §it-name   "HotHelp")
											(set §it-size   size-txt-hothelp)
											(set §it-source source-txt-hothelp)
											(set §it-dest   pro-dir)
											(installtext)
											(set pro-dir-hothelp §it-dest)))
	(complete 50)
	(if (in projects-chosen 2) (	(set §it-name   "Glossar")
											(set §it-size   size-txt-glossar)
											(set §it-source source-txt-glossar)
											(set §it-dest   pro-dir)
											(installtext)
											(set pro-dir-glossar §it-dest)))
	(complete 55)
	(if (in projects-chosen 6) (	(set §it-name   "IFF")
											(set §it-size   size-txt-iff)
											(set §it-source source-txt-iff)
											(set §it-dest   pro-dir)
											(installtext)
											(set pro-dir-iff §it-dest)))
	(complete 60)

	(if (in projects-chosen 1 3 4 5 7)
		(


		(if (in projects-chosen 1) (	(set §it-name   "HotHelpTools")
												(set §it-size   size-txt-hothelptools)
												(set §it-source source-txt-hothelptools)
												(set §it-dest   pro-dir)
												(installtext)
												(set pro-dir-hothelptools §it-dest)))
		(complete 65)
		(if (in projects-chosen 3) (	(set §it-name   "Shell")
												(set §it-size   size-txt-shell)
												(set §it-source source-txt-shell)
												(set §it-dest   pro-dir)
												(installtext)
												(set pro-dir-shell §it-dest)))
		(complete 70)
		(if (in projects-chosen 4) (	(set §it-name   "ARexx")
												(set §it-size   size-txt-arexx)
												(set §it-source source-txt-arexx)
												(set §it-dest   pro-dir)
												(installtext)
												(set pro-dir-arexx §it-dest)))
		(complete 75)
		(if (in projects-chosen 5) (	(set §it-name   "ANSI-C")
												(set §it-size   size-txt-ansic)
												(set §it-source source-txt-ansic)
												(set §it-dest   pro-dir)
												(installtext)
												(set pro-dir-ansic §it-dest)))
		(complete 80)
		(if (in projects-chosen 7) (	(set §it-name   "Libs & Devs 1.3")
												(set §it-size   size-txt-libsdevs)
												(set §it-source source-txt-libsdevs)
												(set §it-dest   pro-dir)
												(installtext)
												(set pro-dir-libsdevs §it-dest)))
		(complete 85)
		)
	)
	(complete 85)

	(askdisk	(dest	"HotHelpInstall2_2")
				(prompt (cat	"\n\nBitte legen Sie nun die Disk \"HotHelpInstall2_2\" "
									"in ein beliebiges Laufwerk ein!"))
				(help @askdisk-help)
	)

	(if (in projects-chosen  0) ((working "\nBearbeite HotHelp.hdr")         (run (cat run-setprojectpath " " tools-language " \"" (tackon pro-dir "HotHelp.hdr")         "\" \"" (tackon pro-dir-hothelp      "HotHelp.txt")         "\""))))
	(if (in projects-chosen  1) ((working "\nBearbeite HotHelpTools.hdr")    (run (cat run-setprojectpath " " tools-language " \"" (tackon pro-dir "HotHelpTools.hdr")    "\" \"" (tackon pro-dir-hothelptools "HotHelpTools.txt")    "\""))))
	(if (in projects-chosen  2) ((working "\nBearbeite Glossar.hdr")         (run (cat run-setprojectpath " " tools-language " \"" (tackon pro-dir "Glossar.hdr")         "\" \"" (tackon pro-dir-glossar      "Glossar.txt")         "\""))))
	(if (in projects-chosen  3) ((working "\nBearbeite Shell.hdr")           (run (cat run-setprojectpath " " tools-language " \"" (tackon pro-dir "Shell.hdr")           "\" \"" (tackon pro-dir-shell        "Shell.txt")           "\""))))
	(if (in projects-chosen  4) ((working "\nBearbeite ARexx.hdr")           (run (cat run-setprojectpath " " tools-language " \"" (tackon pro-dir "ARexx.hdr")           "\" \"" (tackon pro-dir-arexx        "ARexx.txt")           "\""))))
	(if (in projects-chosen  5) ((working "\nBearbeite ANSI-C.hdr")          (run (cat run-setprojectpath " " tools-language " \"" (tackon pro-dir "ANSI-C.hdr")          "\" \"" (tackon pro-dir-ansic        "ANSI-C.txt")          "\""))))
	(if (in projects-chosen  6) ((working "\nBearbeite IFF.hdr")             (run (cat run-setprojectpath " " tools-language " \"" (tackon pro-dir "IFF.hdr")             "\" \"" (tackon pro-dir-iff          "IFF.txt")             "\""))))
	(if (in projects-chosen  7) ((working "\nBearbeite Libs & Devs 1.3.hdr") (run (cat run-setprojectpath " " tools-language " \"" (tackon pro-dir "Libs & Devs 1.3.hdr") "\" \"" (tackon pro-dir-libsdevs     "Libs & Devs 1.3.txt") "\""))))
	)
)
(complete 85)

; Nun wird die Pref-Datei zusammengebastelt!

(set pref
	(cat	"$VER: HotHelpPref " hh-version-intern " " hh-date "\n"
			"TextColor=1\n"
			"LightColor=" (if os-20 "2" "1") "\n"
			"DarkColor=" (if os-20 "1" "2") "\n"
			"RefColor=3\n"
			"FontName=" (if os-20 "courier" "topaz") ".font\n"
			"FontSize=" (if os-20 "15" "8") "\n"
			"ScrollDelay=15\n"
			"ScrollSpeed=0\n"
			"LeftEdge=0\n"
			"TopEdge=" (if os-20 "12" "11") "\n"
			"Width=1000\n"
			"Height=150\n"
			"StackSize=20\n"
			"KeyTab=30\n"
			"KeyLayout=Columns\n"
			"PrintTitle=CompleteOnly\n"
			"ShowStart=Off\n"
			"CloseCut=SpecialOnly\n"
			"SearchArea=ActualFirst\n"
			"HKAltQual=48\n"
			"HKCtrlQual=8\n"
			"HKShiftQual=3\n"
			"HKAltCode=95\n"
			"HKCtrlCode=95\n"
			"HKShiftCode=95\n"
			"HKAltAll=Off\n"
			"HKCtrlAll=Off\n"
			"HKShiftAll=Off\n"
			"StartProject=HotHelp\n"
			"StartKey=Startseite\n"
			"ViewColor=3\n"
			"SearchIgnore=On\n"
			"SearchBack=Off\n"
			"SearchAll=Off\n"
			"ShiftProject=Libs & Devs 1.3\n"
			"CtrlProject=Shell\n"
			"CommandProject=Libs & Devs 1.3\n"
			"FastFont=Off\n"
			"DefaultFont=Off\n"
			"SmartFont=On\n"
			"SmartColors=On\n"
			"RamIcon=On\n"
			"OPrEnvironment=Off\n"
			"OPrName=OnlineProjekt\n"
			"OPrDir=HOTHELP:OnlineProjekte\n"
			"OPrFEnter=Off\n"
			"OPrFSelect=On\n"
			"OPrFFirst=Off\n"
			"OPrFCheck=On\n"
			"OPrFDoubleCheck=On\n"
			"OPrFFloatText=Off\n"
			"OPrMarkExclude=float|double|char|int|long|unsigned|void|extern|static|const|register|struct|union|enum|#define|class|inline|*|VOID|BYTE|UBYTE|WORD|UWORD|SHORT|USHORT|LONG|ULONG|APTR|BPTR|CPTR|STRPTR|BSTR|BOOL|FLOAT|DOUBLE\n"
			"OPrMarkPara=\n"
			"OPrMarkCmtStart=/*\n"
			"OPrMarkCmtEnd=*/\n"
			"OPrMarkCmtLine=//\n"
			"OpenOnStart=Off\n"
			"Editor=Select\n"
			"EnvEditor=HHEditor\n"
			"ARexxHost=HOTHELP_REXX\n"
			"HKAmigaQual=192\n"
			"HKOnlineQual=72\n"
			"HKAmigaCode=95\n"
			"HKOnlineCode=33\n"
			"HKAmigaAll=Off\n"
			"HKOnlineAll=On\n"
			"ToolsDir=" tools-dir "\n"
			"DOSPattern=" (if os-20 "On" "Off") "\n"
			"DisplayBeep=" (if os-21 "Flash" "DisplayBeep") "\n"
			"OnlyPubScreen=Off\n"
			"StdNumPad=Standard\n"
			"CEDRealSize=Off\n"
			"StartupMsg=On\n"
			"CaseSensitivity=Off\n"
			"LoadKeys=AsNeeded_Free\n"
			"Language=Deutsch\n"
	)
)
(working "\nDie Voreinstellungs-Datei wird erzeugt...")
(textfile
	(dest (tackon hothelp-dir "HotHelp3.Pref"))
	(append pref)
	(confirm)
	(prompt (cat	"\nErzeugen der HotHelp-Voreinstellungs-Datei <"
						(tackon hothelp-dir "HotHelp3.Pref")
						">"))
	(help (cat		"    In dieser Datei werden alle Voreinstellungen des gesamten "
						"HotHelp-Systems festgehalten, die dann später über das Tool "
						"HotHelpPref editiert werden können.\n"
						"    Die Datei wurde an Ihre spezielle Konfiguration angepaßt "
						"und sollte daher grundsätzlich installiert werden."))
)
(complete 90)

; Nun wird die Startup-Sequence (bzw. User-StartUp) an HotHelp angepaßt.

(set cmd "")
(if tools-chosen
	(if
		(askbool
			(prompt	(cat	"\nSie haben einige HotHelpTools im Verzeichnis \""
								tools-dir
								"\" installieren lassen. Soll ein Pfad auf dieses Verzeichnis "
								"angelegt werden?"))
			(help		(cat	"    Das Anlegen eines Pfades ist nur notwendig, wenn Sie die "
								"Tools auch von der Shell aus aufrufen wollen. Wenn Sie "
								"lediglich mit der Workbench arbeiten, können Sie diese "
								"Frage ruhigen Gewissens mit 'Nein' beantworten.\n"
								"    Sie sollten ebenfalls mit 'Nein' antworten, wenn Sie "
								"die Tools in ein Verzeichnis kopiert haben, das bereits "
								"im Suchpfad enthalten ist (z.B. \"C:\", \"Sys:Utilities\" und "
								"ähnliche)."))
			(default 1)
		)
		(set cmd (cat cmd "Path \"" tools-dir "\"\n"))
	)
)
(set cmd (cat cmd "Assign HOTHELP: \"" hothelp-dir "\"\n"))

(if (patmatch (fileonly hotkeyhelp-dir) "WBStartUp")
	(
	(if (askbool
			(prompt	(cat	"\nHotKeyHelp wurde im Verzeichnis '" hotkeyhelp-dir "' "
								"installiert.\n\n"
								"Soll das Programm dennoch in die "
								"Skript-Datei 'S:User-StartUp' eingetragen werden, so "
								"daß es automatisch bei jedem Start aufgerufen wird?"))
			(help		(cat	"    Alle Programme im Verzeichnis 'SYS:WBStartUp' werden "
								"ab Betriebssystem-Version 2.0 automatisch gestartet, "
								"sobald die Workbench geladen wird. In diesem Fall sollte "
								"HotKeyHelp nicht von der Datei 'User-StartUp' aus "
								"aufgerufen werden, da diese ebenfalls bei jedem Neustart "
								"des Rechners ausgeführt wird.\n"
								"    Handelt es sich bei dem gewählten Verzeichnis jedoch "
								"nicht um 'SYS:WBStartUp' oder wird auf Ihrem System die "
								"Workbench nicht automatisch gestartet, sollte der "
								"Aufruf HotKeyHelps in die Skriptdatei eingefügt werden, "
								"damit das Programm nach jedem Start zur Verfügung steht."))
			(default 0))
		(
		(set cmd (cat cmd "\"" (tackon hotkeyhelp-dir "HotKeyHelp") "\"\n"))
		)
	)
	)
;else
	(set cmd (cat cmd "\"" (tackon hotkeyhelp-dir "HotKeyHelp") "\"\n"))
)

(startup "HotHelp"
	(prompt (cat	"\nDie folgenden Befehle werden nun in die Datei \"S:User-Startup\" "
						"eingetragen:\n\n"
						cmd))
	(help @startup-help)
	(command cmd)
)
(complete 95)

(if (= old-hh-version 0)
	(run (cat run-clearstartup " " tools-language)
		(prompt	(cat	"\nClearStartup wird ausgeführt\n\n"
							"Dieses Programm überarbeitet die Startup-Sequence, wenn von "
							"HotHelp-Version 2 auf " hh-version " umgestiegen wird."))
		(help		(cat	"    Da sich der Installations-Vorgang zwischen HotHelp-Version "
							"2 und " hh-version " erheblich unterscheidet (HotHelp 2 "
							"wurde mit einem selbstgebauten Programm installiert, während "
							"HotHelp " hh-version " den Commodore-Installer verwendet), hat "
							"sich auch der Aufbau der beim Starten des Systems automatisch "
							"ausgeführten Befehle geändert.\n"
							"    Unter HotHelp 2 wurden diese Befehle in die "
							"Startup-Sequence eingebaut, während der Installer dafür den "
							"User-Startup verwendet. Aus diesem Grund müssen beim Umstieg "
							"von HotHelp 2 auf " hh-version " die alten Befehle aus der "
							"Startup-Sequence wieder entfernt werden."))
		(confirm)
	)
)
(complete 100)

; LhA in der RAM-Disk wird nun nicht mehr benötigt.
(delete "RAM:LhA")

(user 1)
(message (cat	"\nDie Installation der Demo-Version von HotHelp " hh-version " ist abgeschlossen.\n"
					"Bitte starten Sie jetzt Ihren Rechner neu!\n\n"
					"Anschließend können Sie HotHelp dann jederzeit über Alt-Help "
					"aktivieren.\n"
					"Shift-Help zeigt Hilfe zum Wort unter dem Cursor in Ihrem "
					"Editor an, während Amiga-Help den Inhalt des Clipboards als "
					"Schlüsselbegriff verwendet. Control-Help stellt einen Hilfstext "
					"zum jeweils zuletzt eingegebenen Wort dar."))

