; $VER: MaxonC++ Install Version 1.01 (28.10.92)
; Script zum Installieren des Developer Compilersystems
; 

(set #NOROOM (cat "Nicht genügend Speicherplatz, um... zu installieren."))
(set #ERRORRAM (cat "Kann die notwendigen Dateien nicht in die Ram disk kopieren."))

(set #COPVERZ	(cat "In welches Verzeichnis soll das MaxonC++-Entwicklungssystem\nkopiert werden?"))
(set #VERZHELP (cat "Wählen Sie erst die Partition Ihrer Festplatte aus, auf der\nSie gerne MaxonC++ installieren würden. Dann drücken Sie auf\nPROCEED und das Programm beginnt mit der Arbeit.\n\n"))
(set #COPYRAM	(cat "Einige Installationsdateien werden in die RAM-Disk kopiert ..."))

(set #CPPDEMOS (cat "dekomprimiere Demodatei\n"))
(set #EDARREX	(cat "dekomprimiere Edward AREXX-Demos\n"))
(set #CPPLIBS	(cat "dekomprimiere Funktionsbibliotheken\n"))
(set #CPPINCS  (cat "dekomprimiere Include-Dateien\n"))
(set #AMIGALIB (cat "dekomprimiere Amiga-Lib\n"))
(set #ASMINCLUDES (cat "dekomprimiere die Assembler-Includes\n"))

(set @DEMOSIZE	46500)
(set @LIBSIZE	51000)
(set @INCLUDESIZE	606000)
(set @AREXXSIZE 2600)
(set @EDWARDSIZE 158000)
(set @MCPPSIZE 230000)
(set @CONFIGSIZE 2000)
(set @ALIBSIZE 165000)
(set @MAKEAPPSIZE 202000)
(set @STRIPRESSIZE 59000)
(set @MADEMOSIZE 163000)
(set @CLIMCPPSIZE 172000)
(set @MSDBSIZE 263000)
(set @ASMSIZE 105000)
(set @ASMINCLSIZE 533000)

(Procedure Inst_NormFiles
	(if (< (getdiskspace @Dest) @Size)
		(abort #NOROOM))

	(set @anzeige (cat "Kopiere "@FName" aus "@SOURCE" \nnach "@Dest))
	(copyfiles (prompt @anzeige)(help @copyfiles-help)(source @Source)(choices @FName)(files)(infos)(dest @Dest)(confirm))
)

(Procedure Inst_PatternFiles
	(if (< (getdiskspace @Dest) @Size)
		(abort #NOROOM))

	(set @anzeige (cat "Kopiere "@FName" aus "@SOURCE" \nnach "@Dest))
	(copyfiles (prompt @anzeige)(help @copyfiles-help)(source @Source)(pattern @Pattern)(infos)(dest @Dest)(confirm))
)

(Procedure Inst_LhaFiles
	;(set @In_File (tackon @Source @FName.lha))
	(set @TMP (tackon "RAM:" @FName.lha))
	(set @Dest_File (tackon @default-dest @Dest))
	(makedir (@Dest_File)(infos))

	(if (< (getdiskspace @Dest_File) @Size)
		(abort #NOROOM))

	(copyfiles (prompt "")(help "")(source @Source)(choices @FName.lha)(dest "RAM:")(confirm))
	(working @Working @Dest)
	(run ("RAM:Lhx -E -N x %s \"%s/\"" @TMP @Dest_File))
	(delete @TMP)
)

(complete 0)

(set languagechoice 0)

(set languagechoice
	(askchoice
		(prompt "\nBitte wählen Sie ihre Landessprache! \n\nPlease choose your language!")
		(help @askchoice-help)
		(choices "deutsch" "english")
		(default 0)
	)
)

(set verchoice 1)

(set verchoice
	(askchoice
		(prompt "\nWelche Compiler-Version besitzen Sie?\n")
		(help @askchoice-help)
		(choices "NORMALE" "DEVELOPER")
		(default 1)
	)
)

(set @default-dest                       	; Verzeichnis aussuchen 
	(askdir
		(prompt #COPVERZ)
		(help	#VERZHELP @askdir-help)
		(default "WORK:MCPP")
	)
)

(if                                      	; Verzeichnis erzeugen
	(= (exists @default-dest) 0)
	(makedir @default-dest)
)


; ------- MaxonC++-Installation vorbereiten

(askdisk
	(prompt "\n\n\nBitte legen Sie die Diskette \"MCPP_1\" ein!")
	(help "Diese Diskette enthält einige wichtige Installationsdaten,\n"
         "die in die RAM-Disk kopiert werden.")
	(dest "MCPP_1")
)
(copyfiles											; LHX kopieren
	(prompt #COPYRAM)
	(help @copyfiles-help)
	(source "MCPP_1:C")
	(dest "RAM:")
   (choices "Lhx")
)

(if(= 0 (exists "RAM:Lhx"))
	(abort #ERRORRAM))

(	(set @Working #CPPDEMOS)
	(set @Dest ("Demos"))
	(set @Source ("MCPP_1:Demos"))
	(set @FName.lha ("Demos.lha"))
	(set @Size @DEMOSIZE)
	(Inst_LhaFiles)
)

(if
   (= (exists "C:MuchMore") 0)
	(copyfiles										; MuchMore kopieren
		(prompt "Einige Installationsdateien werden kopiert ...")
		(help @copyfiles-help)
		(source "MCPP_1:C")
		(dest "c:")
   	(choices "MuchMore")
	)
)

(complete 5)

; ------- MaxonC++ KOPIEREN

(askdisk
	(prompt "\n\n\nBitte legen Sie die Diskette \"MCPP_2\" ein!")
	(help "Diese Diskette enthält das MaxonC++-Entwicklungssystem.")
	(dest "MCPP_2")
)

(
	(set @Source "MCPP_2:")
	(set @Dest @default-dest)
   (set @Pattern "MCPP#?")
	(set @Size @MCPPSIZE)
	(Inst_PatternFiles)
)

(	(set @Working #CLIMCPP)
	(set @Dest ("CLI-COMPILER"))
	(set @Source ("MCPP_2:"))
	(set @FName.lha ("CLIMCPP.lha"))
	(set @Size @CLIMCPPSIZE)
	(Inst_LhaFiles)
)

(if
   (= (exists "s:MaxonC++.config") 0)	; Nicht überschreiben falls vorhanden
		(
			(set @Source "MCPP_2:S")
			(set @Dest "S:")
		   (set @FName "MaxonC++.config")
			(set @Size @CONFIGSIZE)
			(Inst_NormFiles)
		)
)

(if (= languagechoice 1)
	(
	(delete "S:MaxonC++.config")

	(copyfiles 
		(prompt "")
		(help @copyfiles-help)
		(source "MCPP_2:S/Engl")
		(dest "S:")
		(choices "MaxonC++.config")
		(confirm))
	)
)

(complete 15)

; ------- EDWARD KOPIEREN

(
	(set @Source "MCPP_2:")
	(set @Dest @default-dest)
   (set @Pattern "Edward#?")
	(set @Size @EDWARDSIZE)
	(Inst_PatternFiles)
)

(if (= languagechoice 1)
	(
	(set @eddefs (tackon @default-dest "Edward.def"))

	(delete @eddefs)

	(copyfiles 
		(prompt "")
		(help @copyfiles-help)
		(source "MCPP_2:Defs/Engl")
		(dest @default-dest)
		(choices "Edward.Def")
		(confirm))
	)
)


(	(set @Working #EDARREX)
	(set @Dest ("AREXX"))
	(set @Source ("MCPP_2:AREXX"))
	(set @FName.lha ("Arexx.lha"))
	(set @Size @AREXXSIZE)
	(Inst_LhaFiles)
)

(complete 20)



; ------- C-LIBRARIES KOPIEREN
	
(	(set @Working #CPPLIBS)
	(set @Dest ("Lib"))
	(set @Source ("MCPP_2:"))
	(set @FName.lha ("MCPLIBS.lha"))
	(set @Size @LIBSIZE)
	(Inst_LhaFiles)
)

(complete 35)



; ------- C-INCLUDES KOPIEREN
	
(	(set @Working #CPPINCS)
	(set @Dest ("Include"))
	(set @Source ("MCPP_2:"))
	(set @FName.lha ("MCPINCL.lha"))
	(set @Size @INCLUDESIZE)
	(Inst_LhaFiles)
)

(complete 55)



; ------- MAKEAPP KOPIEREN

(askdisk
	(prompt "\nDISKETTEN-INSTALLATION\n\nBitte legen Sie die Diskette \"MCPP_3\" ein!")
	(help "Auf dieser Diskette ist der Oberflächengenerator MakeAPP enthalten\n")
	(dest "MCPP_3")
)

(if (= languagechoice 0)
	(
		(if
		   (= (exists "s:rctfiler.conf") 0)	; rctfilerconf nicht überschreiben
			(
				(set @Source "MCPP_3:S")
				(set @Dest "S:")
			   (set @FName "rctfiler.conf")
				(set @Size @CONFIGSIZE)
				(Inst_NormFiles))
		)
	)

	(
		(if
		   (= (exists "s:rctfiler.conf") 0)	; rctfilerconf nicht überschreiben
			(
				(set @Source "MCPP_3:S/engl")
				(set @Dest "S:")
			   (set @FName "rctfiler.conf")
				(set @Size @CONFIGSIZE)
				(Inst_NormFiles))
		)
	)


)

(copylib											; RCT-LIB kopieren
	(prompt "Die RCT-LIBRARY wird kopiert ...")
	(help
		"Die RCT-Library wird von verschiedenen Programmen des MaxonC++-Systems "
      "benötigt. Wenn Sie diese Bibliothek schon auf Ihrer Festplatte "
      "installiert haben, dann ist hier eine neuere Version.\n\n"
		@copyfiles-help
	)
	(source "MCPP_3:libs/rct.library")
	(dest "libs:")
	(confirm)
)

(	(set @Working #AMIGALIB)
	(set @Dest ("Lib"))
	(set @Source ("MCPP_3:"))
	(set @FName.lha ("alib.lha"))
	(set @Size @ALIBSIZE)
	(Inst_LhaFiles)
)

(set @makeappdir (tackon @default-dest "MakeAPP"))
(makedir @makeappdir (infos))

(
	(set @Source "MCPP_3:")
	(set @Dest @makeappdir)
   (set @Pattern "MakeAP#?")
	(set @Size @MakeAPPSIZE)
	(Inst_PatternFiles)
)

(
	(set @Source "MCPP_3:")
	(set @Dest @makeappdir)
   (set @Pattern "StripRe#?")
	(set @Size @STRIPRESSIZE)
	(Inst_PatternFiles)
)

(if (= languagechoice 0)	; Wenn deutsch, die engl. Datei löschen
	(
	(set @langfile (tackon @makeappdir "MakeAPPRes.RLOCALE"))
		(if
		   (= (exists @langfile) 1)	; rctfilerconf nicht überschreiben
			(delete @langfile)	
		)
	)
)


(set @makeappdemos (tackon @makeappdir "Demos"))
(makedir @makeappdemos (infos))

(
	(set @Source "MCPP_3:Demos")
	(set @Dest @makeappdemos)
   (set @Pattern "#?")
	(set @Size @MADEMOSIZE)
	(Inst_PatternFiles)
)

(complete 65)


; ------- DEBUGGER KOPIEREN

(if (= verchoice 1)

	(
		(askdisk
			(prompt "\n\n\nBitte legen Sie die Diskette \"MSDB\" ein!")
			(help "Diese Diskette enthält den Source-Level-Debugger und den Assembler.")
			(dest "MSDB")
		)
	
		(set @debdir (tackon @default-dest "MSDB"))
		(makedir @debdir (infos))
		
		(
			(set @Source "MSDB:MSDB")
			(set @Dest @debdir)
		   (set @Pattern "#?")
			(set @Size @MSDBSIZE)
			(Inst_PatternFiles)
		)
	
		(complete 80)
	
	; ------- ASSEMBLER KOPIEREN
	
		(
			(set @Source "MSDB:")
			(set @Dest @default-dest)
		   (set @FName "MASM")
			(set @Size @ASMSIZE)
			(Inst_NormFiles)
		)
	
		(
			(set @Working #ASMINCLUDES)
			(set @Dest ("ASM-Include"))
			(set @Source ("MSDB:"))
			(set @FName.lha ("ASMINCL.lha"))
			(set @Size @ASMINCLSIZE)
			(Inst_LhaFiles)
		)
	)
)

(complete 95)

; ------- STARTUP ÄNDERN

(set command1 (cat "ASSIGN EDWARD: " @default-dest "\nASSIGN MCPP: " @default-dest))

(set command1.txt
	(cat 
	 	"\n\n\nUm mit dem MaxonC++-Entwicklungssystem richtig arbeiten zu "
      "können muß eine Änderung an der User-Startup vorgenommen werden.\n\n"
	 	command1
	)
)

(startup "MaxonC++.app"
	(prompt command1.txt)
	(help @startup-help)
	(command command1)
)

(if @pretend
	(makeassign "EDWARD" @default-dest)
	(makeassign "MCPP" @default-dest)
)

(complete 100)

; ------- FERTIG

(message (cat 
	"Installation des MaxonC++-Entwicklungssystems beendet.\n"
   "Falls die Zeilen:\n" command1 "\nnicht in Ihre Startup-Sequence bzw. "
   "User-Startup eingefügt wurde, dann holen Sie dies bitte nach.\n\n"
   "Entfernen Sie nun die Diskette aus Ihrem Laufwerk und starten Sie das "
   "MaxonC++-Entwicklungssystem.\n\nViel Erfolg!")
)


