;;
;;  $Final Writer Demo Floppy Installation Script German Version $
;;  $Date: 1995/11/03 16:47:15 $
;;  $Revision: 1.3 $
;;
;;  Deutsche Uebersetzung: Helmut Eisenkolb

(set is_update 0)
(set @user-level 1)	; force to use average mode
(complete 0)

; Installation Disk Names
;
(set #install_disk_1 "Disk 1")

(set #program_disk_1 "FWProgram")
(set #program_disk_2 "FWSystem")
(set #program_disk_3 "FWExtras")

(set #ram_disk "ram:")

(set #fw_drawer_name "FinalWriter_Demo_D")

; LHex file
;
(set #lhex_program
(cat	#install_disk_1
		":lhex"
))

; Format program
;
(set #format_program
(cat	#install_disk_1
		":Format"
))

; -------------------------------------------------------------------
; TEXT TRANSLATION SHOULD BEGIN HERE - Translate everything in quotes.
;

(set #ask_disk_prompt
(cat	"\n\nBitte legen Sie \"%s\" in ein beliebiges Laufwerke ein."
))

(set #ask_disk1_help
(cat	"\"%s\" enthlt das Final Writer Programm, Libraries, System-Schriftarten, und Daten, die installiert werden.\n\n"
		@askdisk-help
))

(set #ask_disk_prompt_extra
(cat	"\n(Dies ist die zuletzt formatierte Diskette.)"
))

(set #install_program		"Installiere Final Writer Programm von \"%s\".")
(set #install_program_icon	"Installiere Final Writer Programm und Icon von \"%s\".")
(set #install_datafiles		"Installiere Daten von \"%s\".")
(set #install_libs			"Installiere Libraries von \"%s\".")
(set #install_sysfonts		"Installiere System-Schriftarten von \"%s\".")

(set #install_program_err		"Fehler bei der Installation des Final Writer Programmes.")
(set #install_datafiles_err	"Fehler bei der Installation der Daten.")
(set #install_libs_err			"Fehler bei der Installation der Libraries.")
(set #install_sysfonts_err		"Fehler bei der Installation der System-Schriftarten.")

(set #kickstart_err
(cat	"Sie bentigen Workbench 2.04 oder hher um Final Writer zu installieren! "
		"(Workbench Version 37.67 und Kickstart 37.175 oder hher.)"
))

(set #welcome_message
(cat	"Willkommen bei der FinalWriter-Demo Disketten-Installation. "
		"Sie bentigen drei (3) leere Disketten fr die Installation. "
		"Dieses Programm formatiert die Disketten und installiert "
		"die richtigen Dateien auf ihnen. Bitte beachten Sie, "
		"da alle auf den Disketten gespeicherten Daten gelscht werden. "
		"Zum Schutz sollten Sie sicherstellen, da die Installationsdisketten "
		"(Disk 1) schreibgeschtzt sind.\n\n"
		"Die drei Disketten werden "
		#program_disk_1
		", "
		#program_disk_2
		" und "
		#program_disk_3
		" genannt."
))

(set #insert_empty_message
(cat	"Bitte legen Sie einer leere Diskette in Laufwerk df0: ein.\n\n"
		"Diese Diskette wird als \"%s\" formatiert und die entsprechenden Dateien werden auf ihr installiert.\n\n"
		"WARNUNG: Alle Daten, die sich auf dieser Diskette befinden gehen verloren! Bitte whlen Sie \"Proceed\" "
		"wenn Sie sicher sind, da sich eine leere Diskette im Laufwerk df0: befindet."
))

(set #format_message
(cat	"Diskette \"%s\" wird formatiert.\n"
		"Bitte warten..."
))

(set #format_err
(cat	"Fehler beim Formatieren der Diskette \"%s\"."
))

;
; TEXT TRANSLATION SHOULD END HERE - nothing below needs translation.
; -------------------------------------------------------------------


;==========================================
; Procedure to get and format an empty disk
;
; Inputs:
;	format_disk_name	- the name of the disk to format.
;
;==========================================
(procedure GetAndFormatDisk
	(set @execute-dir "")
	(set empty_disk 0)
	(set last_disk 3)

	(while (= empty_disk 0)
		(
			; Ask for empty disk.
			;
			(message (#insert_empty_message format_disk_name))

			; Check if the inserted disk is empty.
			; We will consider it empty if the disk is not one
			; of our installation disks or one of the floppy
			; disks that the installation has created.
			;
			(set which_disk 0)
			(set no_go 0)
			(set device_name (getassign "df0" "d"))
			(while (AND (<= which_disk last_disk) (= no_go 0))
				(
					(set which_disk_name
						(select which_disk
							#install_disk_1
							#program_disk_1
							#program_disk_2
							#program_disk_3
						)
					)

					(if (= device_name (cat which_disk_name ":"))
						(set no_go 1)
					)

					(set which_disk (+ which_disk 1))
				)
			)

			(if (AND (= no_go 0) (> which_disk last_disk))
				(set empty_disk 1)
			)
		)
	)

	(working (#format_message format_disk_name))
	(set error
		(run
			("%s DRIVE DF0: NAME %s FFS NOICONS" Formatter format_disk_name)
		)
	)

	(if error
		(abort (#format_err format_disk_name))
	)
)

;==========================================
; Procedure to get archive file and install
; its files to a program disk.
;
; Inputs:
;	install_disk_name		-	the name of the installation disk the file is on.
;	install_disk_help		-	help string for ask disk.
;	lha_file					-	the name of the archive file
;	program_disk_name		-	name of the program disk to install to
;	new_drawer_name		-	name of drawer to create on program disk.
;									empty string "" if no drawer needed.
;	working_msg				-	message to display when installing
;	error_msg				-	message in case of error.
;
;==========================================
(procedure InstallArchive
	;
	; Ask for the installation disk.
	(askdisk
		(prompt	(#ask_disk_prompt install_disk_name))
		(help		(install_disk_help install_disk_name))
		(dest		install_disk_name)
	)

	; Copy the lha file to ram:
	(copyfiles
		(source	(cat install_disk_name ":" lha_file))
		(dest		#ram_disk)
	)

	; Ask for the program disk.
	(askdisk
		(prompt	(cat (#ask_disk_prompt program_disk_name) #ask_disk_prompt_extra))
		(help		@askdisk-help)
		(dest		program_disk_name)
	)

	; Make the drawer.
	(if new_drawer_name
		(makedir (cat program_disk_name ":" new_drawer_name) (infos))
	)

	; Unarchive the lha files.
	(set @execute-dir (cat program_disk_name ":" new_drawer_name))
	(working (working_msg install_disk_name))
	(set error
		(run
			("\"%s\" -f x \"%s\" >NIL:" DeArcher (cat #ram_disk lha_file))
		)
	)
	(delete (cat #ram_disk lha_file))

	(if error
		(abort error_msg)
	)
)


; Make sure we are running under V37 or higher...
(if (< (/ (getversion) 65536) 37)
	(
    (abort	#kickstart_err)
	)
)

(message #welcome_message)

; Copy the extraction and format utility
; to ram: and remember where they are.
(copyfiles
	(source	#lhex_program)
	(dest		#ram_disk)
)
(set DeArcher (tackon #ram_disk "lhex"))

(copyfiles
	(source	#format_program)
	(dest		#ram_disk)
)
(set Formatter (tackon #ram_disk "Format"))


; ==========================================
; Get and Format FWProgram: (program disk 1)
; ==========================================
(set format_disk_name #program_disk_1)
(GetAndFormatDisk)

; --------------------------
; Install the program.
;
(set install_disk_name #install_disk_1)
(set install_disk_help #ask_disk1_help)
(set lha_file "FinalWriter.lha")
(set program_disk_name #program_disk_1)
(set new_drawer_name "")
(set working_msg #install_program_icon)
(set error_msg #install_program_err)
(InstallArchive)

(complete 20)


; =========================================
; Get and Format FWSystem: (program disk 2)
; =========================================
(set format_disk_name #program_disk_2)
(GetAndFormatDisk)

; --------------------
; First install FWFiles...
;
(set install_disk_name #install_disk_1)
(set install_disk_help #ask_disk1_help)
(set lha_file "FWFiles.lha")
(set program_disk_name #program_disk_2)
(set new_drawer_name "FWFiles")
(set working_msg #install_datafiles)
(set error_msg #install_datafiles_err)
(InstallArchive)

(complete 40)

; ---------------------
; Now Install FWLibs...
;
(set install_disk_name #install_disk_1)
(set install_disk_help #ask_disk1_help)
(set lha_file "FWLibs.lha")
(set program_disk_name #program_disk_2)
(set new_drawer_name "FWLibs")
(set working_msg #install_libs)
(set error_msg #install_libs_err)
(InstallArchive)

(complete 60)

; ---------------------
; Now Install FWFonts...
;
(set install_disk_name #install_disk_1)
(set install_disk_help #ask_disk1_help)
(set lha_file "FWFonts.lha")
(set program_disk_name #program_disk_2)
(set new_drawer_name "FWFonts")
(set working_msg #install_sysfonts)
(set error_msg #install_sysfonts_err)
(InstallArchive)

(complete 80)

; =========================================
; Get and Format FWExtras: (program disk 3)
; =========================================
(set format_disk_name #program_disk_3)
(GetAndFormatDisk)

(makedir (cat #program_disk_3 ":FWDocs") (infos))
(makedir (cat #program_disk_3 ":FWClipArt") (infos))
(makedir (cat #program_disk_3 ":FWTextClips") (infos))

(delete DeArcher)
(delete Formatter)
(run ("C:Avail FLUSH"))

(complete 100)

(set @default-dest "")
(exit)

