;
; Installer-Script for MicroDot
;
; $VER: MicroDot-Install 1.6 (10.01.94)
;

(set #install-where-msg
(cat	"Möchten Sie MicroDot auf Diskette "
		"oder auf Festplatte installieren?"
))

(set #install-where-help
(cat	"\nHier entscheiden Sie, ob MicroDot auf Disketten "
		"oder, falls vorhanden, auf Ihre Festplatte installiert "
		"werden soll.\n\n"
		"Wenn Ihr Amiga-System mit einer Festplatte ausgerüstet "
		"ist, sollten Sie MicroDot auf jeden Fall dort "
		"installieren."
))

(set #install-hd-msg
(cat	"Wohin soll das MicroDot-Verzeichnis "
		"installiert werden?"
))

(set #install-hd-help
(cat	"\nHier müßen Sie angeben, wo auf Ihrer "
		"Festplatte das MicroDot-Verzeichnis installiert werden "
		"soll.\n\n"
		"Das Installationsprogramm erzeugt dann in dem von Ihnen "
		"angegebenen Verzeichnis eine neue Schublade mit dem "
		"Namen \"MicroDot\".\n\n"
		"Sie sollten MicroDot nach Möglichkeit NICHT auf einer Partition "
		"installieren, die mit dem DirCache-FileSystem formatiert ist."
))

(set #floppy-askformat-msg
(cat	"Für eine Disketteninstallation benötigen Sie "
		"zwei formatierte Disketten mit den Namen "
		"\"MD-MAIN\" und \"MD-DATA\". Sie können die "
		"Disketten jetzt formatieren lassen oder "
		"selbst formatierte Disketten verwenden."
))

(set #floppy-askformat-help
(cat	"\nHier entscheiden Sie, ob jetzt die "
		"für die MicroDot-Installation "
		"benötigten Disketten formatiert "
		"werden sollen.\n\n"
		"Sie können problemlos auch selbst formatierte "
		"Disketten verwenden, wenn Sie ein besonderes "
		"Format oder Disketten verschiedener Größe "
		"verwenden wollen."
))

(set #format1-msg
(cat	"Bitte legen Sie die erste zu formatierende "
		"Diskette in das Laufwerk DF0:\n\n"
		"Diese Diskette ist später Ihre MicroDot-Datendiskette "
		"und trägt dann den Namen \"MD-DATA:\"."
))

(set #format2-msg
(cat	"Bitte legen Sie die zweite zu formatierende "
		"Diskette in das Laufwerk DF0:\n\n"
		"Diese wird danach ihre MicroDot-Hauptdiskette "
		"mit dem Namen \"MD-MAIN\". Auf dieser Diskette "
		"wird das Hauptprogramm installiert."
))

(set #format1-cmd "sys:system/format <ram:..MDINST.. drive df0: name MD-DATA noicons")
(set #format2-cmd "sys:system/format <ram:..MDINST.. drive df0: name MD-MAIN noicons")
(set #format-tmp "ram:..MDINST..")
(set #format-err-msg "Fehler Nr. %ld beim Formatieren der Diskette!")
(set #format1-busy "Formatiere erste Diskette...")
(set #format2-busy "Formatiere zweite Diskette...")

(set #copying-reqtools "Kopiere reqtools.library nach Libs:")
(set #copying-aguide "Kopiere amigaguide.library nach Libs:")

(set #want20
(cat	"Möchten Sie die spezielle MicroDotAGA-Version für OS 3.0 "
		"und 68020+ installiert haben? "

))
(set #want20-help
(cat	"Sie haben ein Amiga-System mit OS 3.0 oder größer "
		"und einem %s Prozessor.\n\n"
		"Möchten Sie die spezielle MicroDotAGA-Version für solche "
		"Konfigurationen installiert haben?"
))

(set #insert1-msg
(cat	"Bitte legen Sie die Diskette mit dem Namen "
		"\"MD-MAIN\" ein."
))

(set #insert1-help
(cat	"Für die weitere Installation wird jetzt die zweite "
		"vorhin formatierte Diskette mit dem Namen \"MD-MAIN\" "
		"benötigt.\n\n"
		"Falls Sie vorhin keine Disketten formatiert haben und "
		"keine selbst formatierten Disketten mit den richtigen "
		"Namen haben, brechen Sie die Installation jetzt ab "
		"und starten Sie sie danach neu."
))

(set #cfgexist-msg
(cat	"Es existiert bereits eine Prekonfigurationsdatei für "
		"ihr System, die beim ersten Start von MicroDot automatisch "
		"gelesen wird."
))

(set #cfgexist-help
(cat	"Es wurde eine Datei \"microdot.cfg\" gefunden, die "
		"die Parameter für Ihr Pointsystem, wie den Usernamen "
		"oder die Telefonnummer der Box enthält. Eine weitere "
		"Konfiguration des Points ist daher nicht unbedingt notwendig.\n\n"
		"Trotzdem sollten Sie auf jeden Fall die Einstellunge überprüfen."
))

(set #taconv-msg
(cat	"Möchten Sie die Parameter Ihrer TheAnswerII-Konfiguration "
		"übernehmen? "
))

(set #taconv-help
(cat	"Es wurde eine Datei \"S:AnswerII.cfg\" gefunden, die eine "
		"Konfiguration für das Pointprogramm The Answer enthält.\n\n"
		"Es ist möglich, die dort eingestellten Parameter in "
		"MicroDot zu übernehmen.\n\n"
))

(set #ta3conv-msg
(cat	"Möchten Sie die Parameter Ihrer \"The Answer 3.00\"-Konfiguration "
		"übernehmen? "
))

(set #ta3conv-help
(cat	"Wenn Sie eine \"The Answer 3.00\"-Installation besitzen, können Sie "
		"hiermit die Parameter und die Nachrichtendatenbank übernehmen.\n"
		"Dazu müssen sich die Konfigurationsdateien im Verzeichnis "
		"ENV:ANSWER/ befinden."
))

(set #converter-msg	"Möchten Sie eine bestehende Point-Konfiguration übernehmen? " )

(set #converter-help
(cat	"Falls Sie bereits \"The Answer 2.03\", \"Zodiac's Point 3.3\" oder \"The Answer 3.00\" (im JANUS-Modus) "
		"auf Ihrem System installiert haben, können Sie die Pointparameter "
		"und die Nachrichten der alten Installation für MicroDot "
		"übernehmen.\n\n"
))

(set #taconvfile-msg "Bitte geben Sie den Namen Ihrer \"The Answer\"-Konfigurationsdatei an.")

(set #taconvfile-help
(cat	"Sie haben sich entschieden, Ihre \"The Answer\"-Konfiguration "
		"für MicroDot zu übernehmen. Dafür wird der Pfad und Dateiname "
		"Ihrer \"The Answer\"-Konfigurationsdatei benötigt. Diese Datei "
		"befindet sich normalerweise in \"S:AnswerII.cfg\"."
))

(set #zpconvfile-msg "Bitte geben Sie den Namen Ihrer \"Zodiac's Point\"-Konfigurationsdatei an.")

(set #zpconvfile-help
(cat	"Sie haben sich entschieden, Ihre \"Zodiac's Point\"-Konfiguration "
		"für MicroDot zu übernehmen. Dafür wird der Pfad und Dateiname "
		"Ihrer \"Zodiac's Point\"-Konfigurationsdatei benötigt. Diese Datei "
		"befindet sich normalerweise in der Point-Schublade unter dem "
		"Namen \"config.zp\"."
))

(set #update-msg
(cat 	"Möchten Sie Ihre bestehende MicroDot-Installation updaten "
		"oder komplett neu installieren? Auch bei einer Neuinstallation "
		"bleiben Ihre Daten vollständig erhalten."
))

(set #update-help
(cat	"Sie haben in dem ausgewählten Verzeichnis bereits MicroDot "
		"installiert. Hier können Sie nun entscheiden, ob diese "
		"Installation geupdatet werden soll (nur die Dateien "
		"MicroDot, MicroDot.guide und LiesMich.txt werden ersetzt) "
		"oder ob komplett neu installiert werden soll.\n"
		"In beiden Fällen bleiben Ihre Datenbestände unangetastet."
))


;
; Procedures
;

(procedure checkv20
	(set v20-flag 0)
	(if (> (/ (getversion) 65536) 38)
		(if (exists "MDInstall/MicroDotAGA" )
			(if (>= (database "cpu") 68020 )
				(set v20-flag
					(askbool
						(prompt #want20)
						(help (#want20-help (database "cpu" ) ) ) 
						(default 1)
					)
				)
			)
		)
	)
)

(procedure do_ta3
	(set doconvta-flag
		(askbool
			(prompt #ta3conv-msg)
			(help #ta3conv-help)
			(default 1)
		)
	)
	(if doconvta-flag
		(
			(working "Konvertiere \"The Answer 3.00\"-Konfiguration...")
			(run ( "MDInstall/TA3Conv %s" @default-dest ) )
		)
	)
)

(procedure do_ta_conv
	(set conffilename
		(askfile
			(prompt #taconvfile-msg)
			(help #taconvfile-help)
			(default "S:AnswerII.cfg")
		)
	)
	(if conffilename
		(
			(working "Konvertiere \"The Answer\"-Konfiguration...")
			(run ( "MDInstall/TAConv %s %s" conffilename @default-dest ) )
		)
	)
)

(procedure do_zp_conv
	(set conffilename
		(askfile
			(prompt #zpconvfile-msg)
			(help #zpconvfile-help)
			(default "convert.zp")
		)
	)
	(if (<> conffilename "")
		(
			(working "Konvertiere \"Zodiac's Point\"-Konfiguration...")
			(run ( "MDInstall/ZPConv %s %s" conffilename @default-dest ) )
		)
	)
)

(procedure do_copy
	(copyfiles
		(source "MDInstall/MicroDot.guide")
		(newname "MicroDot.guide")
		(prompt "Kopiere MicroDot.guide...")
		(help @copyfiles-help)
		(confirm)
		(infos)
		(dest @default-dest)
	)
	(copyfiles
		(source "MDInstall/")
		(dest @default-dest)
		(choices "MicroDot.info" "MicroDot-Netcall.info" "MicroDot-Terminal.info")
		(prompt "Kopiere Piktogramme...")
		(help @copyfiles-help)
		(confirm)
	)
	(complete 42)
	(if (exists "LiesMich.txt" )
		(copyfiles
			(source "LiesMich.txt" )
			(dest @default-dest)
			(optional nofail)
			(prompt "Kopiere LiesMich.txt..." )
			(help @copyfiles-help)
			(confirm)
			(infos)
		)
	)
	(complete 43)
	(copyfiles
		(source "MDInstall/Rexx/")
		(dest (tackon @default-dest "Rexx/"))
		(pattern "#?.md#?rexx")
		(optional nofail)
		(prompt "Kopiere Rexx-Makros..." )
		(help @copyfiles-help)
		(confirm)
		(infos)
	)
	(complete 46)
	(if (exists "MicroDot.cfg" )
		(copyfiles
			(source "MicroDot.cfg")
			(dest @default-dest)
			(optional nofail)
			(prompt "Kopiere MicroDot.cfg...")
			(help @copyfiles-help)
			(confirm)
		)
	)
	(complete 47)
	(copyfiles
		(source "MDInstall/")
		(dest @default-dest)
		(pattern "md_#?.(pub|priv)")
		(optional nofail)
		(prompt "Kopiere Beispiel-Quoteheader...")
		(help @copyfiles-help)
		(confirm)
	)

	(complete 49)
	(if (exists "Point.txt" )
		(copyfiles
			(source "Point.txt" )
			(dest @default-dest)
			(optional nofail)
			(prompt "Kopiere Point.txt..." )
			(help @copyfiles-help)
			(confirm)
			(infos)
		)
	)

	(complete 50)

	(checkv20)

	(if (<> v20-flag 0 )
		(copyfiles
			(source "MDInstall/MicroDotAGA")
			(dest @default-dest)
			(newname "MicroDot")
			(prompt "Kopiere MicroDot-Hauptprogramm...")
			(help @copyfiles-help)
			(confirm)
		)
		(copyfiles
			(source "MDInstall/MicroDot")
			(dest @default-dest)
			(prompt "Kopiere MicroDot-Hauptprogramm...")
			(help @copyfiles-help)
			(confirm)
		)
	)
	(complete 75)
)

(procedure do_update
	(copyfiles
		(source "MDInstall/MicroDot.guide")
		(confirm)
		(prompt "Update MicroDot.Guide...")
		(help @copyfiles-help)
		(dest @default-dest)
	)
	(complete 52)
	(if (exists "LiesMich.txt" )
		(copyfiles
			(source "LiesMich.txt" )
			(dest @default-dest)
			(confirm)
			(prompt "Update LiesMich.txt..." )
			(help @copyfiles-help)
		)
	)
	(complete 54)
	(copyfiles
		(source "MDInstall/Rexx/")
		(dest (tackon @default-dest "Rexx/"))
		(pattern "#?.md#?rexx")
		(optional nofail)
		(prompt "Update Rexx-Makros..." )
		(help @copyfiles-help)
		(confirm)
		(infos)
	)

	(complete 60)

	(checkv20)

	(if (<> v20-flag 0 )
		(copyfiles
			(source "MDInstall/MicroDotAGA")
			(dest @default-dest)
			(newname "MicroDot")
			(confirm)
			(prompt "Update MicroDot..." )
			(help @copyfiles-help)
		)
		(copyfiles
			(source "MDInstall/MicroDot")
			(dest @default-dest)
			(confirm)
			(prompt "Update MicroDot..." )
			(help @copyfiles-help)
		)
	)
	(complete 100)
	(exit)
)


(procedure do_askconvert
	(set olduserlevel (user 1) )
	(set convert-mode
		(askchoice
			(prompt #converter-msg)
			(help #converter-help)
			(choices "Keine Installation" "The Answer 2.03" "The Answer 3.00" "Zodiac's Point 3.3")
		)
	)
	(user olduserlevel)
	(select convert-mode
		(working)
		(do_ta_conv)
		(do_ta3)
		(do_zp_conv)
	)
)

(procedure do_hd 
	(set default-dest
		(askdir
			(prompt #install-hd-msg)
			(help #install-hd-help)
			(default @default-dest)
		)
	)
	(set @default-dest
		(tackon default-dest "MicroDot")
	)
	(if (exists (tackon @default-dest "MicroDot.prefs" ) )
		(if (askbool
				(prompt #update-msg)
				(help #update-help)
				(default 1)
				(choices "Update" "Neuinstallation" )
			)
			(do_update)
		)
	)

	(makedir @default-dest
		(infos)
	)
	(makedir (tackon @default-dest "Rexx" ) )
	(do_copy)

	(if (> (/ (getversion) 65536) 36)
	(
		(do_askconvert)
	))
)

(procedure do_format
	(set olduserlevel (user 1) )
	(textfile 
		(dest #format-tmp)
		(append "\n")
	)
	(message #format1-msg)
	(working #format1-busy)
	(set retval
		(run #format1-cmd
		)
	)
	(if (<> retval 0 )
		(abort (#format-err-msg retval))
	)
	(complete 15)
	(message #format2-msg)
	(working #format2-busy)
	(set retval
		(run #format2-cmd
		)
	)
	(if (<> retval 0 )
		(abort (#format-err-msg retval))
	)
	(complete 30)
	(delete #format-tmp)
	(user olduserlevel)
)

(procedure do_floppy
	(set format-flag
		(askbool
			(prompt #floppy-askformat-msg)
			(help #floppy-askformat-help)
			(default 1)
			(choices "Formatieren" "Weiter")
		)
	)

	(if (= format-flag 1)
		(do_format)
	)

	(askdisk 
		(dest "MD-MAIN")
		(prompt #insert1-msg)
		(help #insert1-help)
	)

	(set @default-dest "MD-MAIN:")
	(do_copy)
	(makedir "MD-MAIN:Transfer")
)

(procedure copy-reqtools
	(complete 93)
	(if (exists "MDInstall/libs/reqtools.library" )
		(copylib
			(prompt #copying-reqtools)
			(help @copylib-help)
			(source "MDInstall/libs/reqtools.library")
			(dest "Libs:")
			(confirm)
		)
	)
)

(procedure copy-aguide
	(complete 95)
	(if (exists "MDInstall/libs/amigaguide.library" )
		(copylib
			(prompt #copying-aguide)
			(help @copylib-help)
			(source "MDInstall/libs/amigaguide.library")
			(dest "Libs:")
			(confirm)
		)
	)
	(complete 97)

	(if (exists "SYS:Utilities/MultiView" ) 
		(
			(tooltype (
				(dest (tackon @default-dest "MicroDot.guide") )
				(setdefaulttool "SYS:Utilities/MultiView" )
			))
		)

		(if (exists "MDInstall/AmigaGuide" )
			(copyfiles
				(source "MDInstall/AmigaGuide")
				(dest @default-dest)
			)
		)
	)
)

(procedure do_config
	(complete 80)
	(set configname (tackon @default-dest "microdot.cfg" ) )
	(if (exists configname)
		(
			(set #cfgexist-realmsg #cfgexist-msg)
			(if (exists (tackon @default-dest "microdot.autosortin" ) )
				(set #cfgexist-realmsg
					(cat #cfgexist-msg  "\n\nEs existiert ein konvertierter Netcallpuffer "
									   	( "mit %ld Bytes Länge, der beim ersten Start von MicroDot " (getsize (tackon @default-dest "microdot.autosortin" ) ) )
									   	"automatisch einsortiert wird."
					)
				)
			)
			(message #cfgexist-realmsg)
		)
	)
	(complete 81)
	(working)	
	(if (= floppy-install 0)
		(
			(set tmpargs ( "echo >>\"%s\" \"datadir = MD-DATA:*ntransferdir = MD-MAIN:transfer/\"" configname ) )
			(run tmpargs)
		)
	)
	(working)
	(complete 90)
	(tooltype (
		(dest (tackon @default-dest "MicroDot") )
		(noposition)
		(setstack 4000)
		(swapcolors)
	))
	(tooltype (
		(dest (tackon @default-dest "MicroDot-Netcall") )
		(noposition)
		(setstack 4000)
		(swapcolors)
	))
	(tooltype (
		(dest (tackon @default-dest "MicroDot-Terminal") )
		(noposition)
		(setstack 4000)
		(swapcolors)
	))
	(tooltype (
		(dest (tackon @default-dest "MicroDot.guide") )
		(noposition)
		(setstack 10000)
		(swapcolors)
	))
)


;
;
; GO!
;
;

(complete 0)
(set olduserlevel (user 1) )
(set floppy-install
	(askbool
		(prompt #install-where-msg)
		(help #install-where-help)
		(choices "Festplatte" "Diskette" )
	)
)
(user olduserlevel)
(complete 1)
(if (= floppy-install 0)
	(do_floppy)
	(do_hd)
)

(do_config)

; Reqtools installieren

(copy-reqtools)
(copy-aguide)
(complete 100)
