;
; Installer-Script for MicroDot
;
; $VER: MicroDot-Install 1.8 (26.10.94)
;

(set #install-where-msg
(cat	"Mchten 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 ausgerstet "
		"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 men 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 Mglichkeit NICHT auf einer Partition "
		"installieren, die mit dem DirCache-FileSystem formatiert ist."
))

(set #floppy-askformat-msg
(cat	"Fr eine Disketteninstallation bentigen Sie "
		"zwei formatierte Disketten mit den Namen "
		"\"MD-MAIN\" und \"MD-DATA\". Sie knnen die "
		"Disketten jetzt formatieren lassen oder "
		"selbst formatierte Disketten verwenden."
))

(set #floppy-askformat-help
(cat	"\nHier entscheiden Sie, ob jetzt die "
		"fr die MicroDot-Installation "
		"bentigten Disketten formatiert "
		"werden sollen.\n\n"
		"Sie knnen problemlos auch selbst formatierte "
		"Disketten verwenden, wenn Sie ein besonderes "
		"Format oder Disketten verschiedener Gre "
		"verwenden wollen."
))

(set #format1-msg
(cat	"Bitte legen Sie die erste zu formatierende "
		"Diskette in das Laufwerk DF0:\n\n"
		"Diese Diskette ist spter Ihre MicroDot-Datendiskette "
		"und trgt 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 #copying-setpatch "Fr den ordnungsgemen Betrieb von MicroDot wird SetPatch 40.16 bentigt.")

(set #want20
(cat	"Mchten Sie die spezielle MicroDotAGA-Version fr Rechner mit OS 3.x "
		"und einer 68020/030/040-CPU installiert haben? "

))
(set #want20-help
(cat	"Sie haben ein Amiga-System mit OS 3.0 oder grer "
		"und einem %s Prozessor.\n\n"
		"Mchten Sie die spezielle MicroDotAGA-Version fr solche "
		"Konfigurationen installiert haben?"
))

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

(set #insert1-help
(cat	"Fr die weitere Installation wird jetzt die zweite "
		"vorhin formatierte Diskette mit dem Namen \"MD-MAIN\" "
		"bentigt.\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 fr "
		"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 fr Ihr Pointsystem, wie den Usernamen "
		"oder die Telefonnummer der Box enthlt. Eine weitere "
		"Konfiguration des Points ist daher nicht unbedingt notwendig.\n\n"
		"Trotzdem sollten Sie auf jeden Fall die Einstellunge berprfen."
))

(set #taconv-msg
(cat	"Mchten Sie die Parameter Ihrer TheAnswerII-Konfiguration "
		"bernehmen? "
))

(set #taconv-help
(cat	"Es wurde eine Datei \"S:AnswerII.cfg\" gefunden, die eine "
		"Konfiguration fr das Pointprogramm The Answer enthlt.\n\n"
		"Es ist mglich, die dort eingestellten Parameter in "
		"MicroDot zu bernehmen.\n\n"
))

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

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

(set #converter-msg	"Mchten 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, knnen Sie die Pointparameter "
		"und die Nachrichten der alten Installation fr 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 "
		"fr MicroDot zu bernehmen. Dafr wird der Pfad und Dateiname "
		"Ihrer \"The Answer\"-Konfigurationsdatei bentigt. 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 "
		"fr MicroDot zu bernehmen. Dafr wird der Pfad und Dateiname "
		"Ihrer \"Zodiac's Point\"-Konfigurationsdatei bentigt. Diese Datei "
		"befindet sich normalerweise in der Point-Schublade unter dem "
		"Namen \"config.zp\"."
))

(set #update-msg
(cat 	"Mchten Sie Ihre bestehende MicroDot-Installation updaten "
		"oder komplett neu installieren? Auch bei einer Neuinstallation "
		"bleiben Ihre Daten vollstndig erhalten."
))

(set #update-help
(cat	"Sie haben in dem ausgewhlten Verzeichnis bereits MicroDot "
		"installiert. Hier knnen 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 Fllen bleiben Ihre Datenbestnde unangetastet."
))


;
; Procedures
;

(procedure checkv20
	(set v20-flag 0)
	(if (> (/ (getversion) 65536) 38)
		(if (exists "MDInstall/MicroDotAGA.pch" )
			(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
	(complete 15)
	(copyfiles
		(source "MicroDot.guide")
		(newname "MicroDot.guide")
		(prompt "Kopiere MicroDot.guide...")
		(help @copyfiles-help)
		(confirm)
		(infos)
		(dest @default-dest)
	)
	(complete 25)
	(if (<> 0 floppy-install)
	(
		(working "Erstelle MicroDot.DOK...")
		(run ("MDInstall/ag2txt MicroDot.guide \"%s\"" (tackon @default-dest "MicroDot.DOK" ) ) )
		(complete 37)
		(copyfiles
			(source "MDInstall/")
			(dest @default-dest)
			(choices "MicroDot.info" "MicroDot-Netcall.info" "MicroDot-Terminal.info" "MicroDot.DOK.info")
			(prompt "Kopiere Piktogramme...")
			(help @copyfiles-help)
			(confirm)
		)
	)
	(
		(copyfiles
			(source "MDInstall/")
			(dest @default-dest)
			(prompt "Kopiere Piktogramme...")
			(choices "MicroDot.info" "MicroDot-Netcall.info" "MicroDot-Terminal.info")
			(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)
	)
	(if (= 0 update_mode )
	(
		(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-Texte...")
			(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)
	(complete 51)
	(if (<> v20-flag 0 )
	(
		(working "Erstelle MicroDotAGA-Hauptprogramm...")
		(run ("MDInstall/SPatch \"-o%s\" -pMDInstall/MicroDotAGA.pch MDInstall/MicroDot" (tackon @default-dest "MicroDot") ) )
	)
	(
		(copyfiles
			(source "MDInstall/MicroDot")
			(dest @default-dest)
			(prompt "Kopiere MicroDot-Hauptprogramm...")
			(help @copyfiles-help)
			(confirm)
		)
	))
	(complete 75)
)

(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" )
			)
			(set update_mode 1)
		)
	)

	(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:")
	(makedir (tackon @default-dest "Rexx" ) )
	(do_copy)
	(makedir "MD-MAIN:Transfer")
)

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

(procedure copy-reqtools20
	(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-reqtools
	(if (> (/ (getversion) 65536) 35)
		(copy-reqtools20)
		(copy-reqtools13)
	)
)

(procedure copy-setpatch
	(complete 95)
	(copylib
		(prompt #copying-setpatch)
		(help @copylib-help)
		(source "MDInstall/SetPatch")
		(dest "C:")
		(confirm)
	)
)

(procedure copy-aguide
	(complete 97)
	(if (exists "MDInstall/libs/amigaguide.library" )
		(copylib
			(prompt #copying-aguide)
			(help @copylib-help)
			(source "MDInstall/libs/amigaguide.library")
			(dest "Libs:")
			(confirm)
		)
	)
	(complete 99)
	(if (exists "SYS:Utilities/MultiView" ) 
		(
			(tooltype (
				(dest (tackon @default-dest "MicroDot.guide") )
				(setdefaulttool "SYS:Utilities/MultiView" )
			))
		)

		(if (exists "MDInstall/AmigaGuide" )
			(
				(tooltype (
					(dest (tackon @default-dest "MicroDot.guide") )
					(setdefaulttool "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 Lnge, 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-setpatch)
(copy-aguide)
(complete 100)
