; $VER: Digita Organiser Installer Script 7/4/95
; By Mark Jackson
; German Language
;
; Works for Full version
; This section contains the Text strings for translation and
; appending to the code
;
; Copyright (C) Digita International

;------------------------------------------------------
; ### Variable declarations
(set #ProgName "Organiser")
(set #NumberInstallDisks 1)
(set #InstallDisk "OrganiserInstall")
(set #NumNewDisks 2)
(set #MainDisk "Organiser")
(set #FilesDisk "OrganiserExtras")
(set #RamTempFile "RAM:OrgTemp")
(set #RamUtils "RAM:OrgUtils")
(set #HDSpaceNeededBytes (* (* 1 1024) 1024)) ;1MB free
(set #ToolDest (cat #MainDisk ":Organiser"))
(set #DriverDest "DEVS:Printers")
(set #ThemeDefaultTool "Organiser")
(set #OrgToolDest (cat #MainDisk ":" #ProgName))
(set #HelpTool "HELPFILE")

;------------------------------------------------------
; ### String declaration
;// Drawer names
(set #DrawerName "Organiser")
(set #FilesName "Files")
(set #SuppStorageName "Supplements Storage 96")
(set #SupplementsName "Supplements")
(set #ThemesName "Diary Themes 96")
(set #TemplatesName "Templates")
(set #CatalogsName "Catalogs")
(set #FontsName "Fonts")
(set #LibsDefault "Libs")
(set #SamplesName "Sound Samples")

;------------------------------------------------------
;// Archive Names
(set #ASLArchiveName "asl.lha")
(set #CommoditiesArchiveName "commodities.lha")
(set #AmigaGuideArchiveName "Amigaguide.lha")
(set #DiskfontArchiveName "Diskfont.lha")
(set #ProgArchiveName "Organiser.lha")
(set #CatalogsArchiveName "Catalogs.lha")
(set #SuppStorageArchiveName "Supp_Storage.lha")
(set #SupplementsArchiveName "Supplements.lha")
(set #ThemesArchiveName "Themes.lha")
(set #FilesArchiveName "Files.lha")
(set #TemplatesArchiveName "Templates.lha")
(set #SystemFontsArchiveName "Fonts.lha")
(set #StartupArchiveName "startup.lha")
(set #DevicesArchiveName "Devices.lha")
(set #Env-ArchiveArchiveName "Env-Archive.lha")
(set #HelpArchiveName "Help.lha")
(set #PrinterArchiveName "Printer.lha")
(set #SoundArchiveName "Sound.lha")
(set #HarpArchiveName "Harp.lha")
(set #DrawerInfoArchiveName "DrawerInfo.lha")
(set #ProgramInfoArchiveName "ProgramInfo.lha")
(set #HDInfoArchiveName "HDInfo.lha")
(set #Disk1InfoArchiveName "Disk1Info.lha")
(set #Disk2InfoArchiveName "Disk2Info.lha")
(set #OtherPrefsArchiveName "OtherPrefs.lha")
(set #AddMonitorArchiveName "AddMonitor.lha")

;------------------------------------------------------
;// File Names
(set #LibsSource (cat #InstallDisk ":libs"))

;------------------------------------------------------
;// Message strings
(set #BadKick
	(cat #ProgName " Erfordert zum Betrieb Workbench 2.04 oder höher.")
)

(set #CheckStartup
	(cat "\n\n\nBitte warten...\n\nDer Installer prüft Ihre Systemkonfiguration.")
)

(set #DestChoicePrompt
	(cat "\n\n\nWo soll " #ProgName " installiert werden?")
)

(set #FloppyChoiceMsg
	(cat "Auf Disketten")
)

(set #HardDiskChoiceMsg
	(cat "Auf einer Festplatte")
)

(set #DestChoiceHelp
	(cat "\nWählen Sie \"Auf einer Festplatte\", um "
		"das Programm " #ProgName " auf Festplatte zu "
                "installieren.\n\n"
		"Wählen Sie \"Auf Disketten\", um "
		"" #ProgName " auf Arbeitsdisketten zu "
                "installieren.\n\n\n"
	)
)

(set #HardDiskDestChoiceMsg
	(cat "Wo soll die Schublade\n" #DrawerName " erzeugt werden?")
)

(set #HardDiskDestChoiceHelp
	(cat "Wählen Sie die Schublade aus, inder " #ProgName " installiert "
		"werden soll, und klicken Sie auf Weiter.  Eine neue Schublade mit "
                "dem Titel  \"" #DrawerName "\" wird erstellt, in die das Programm "
                "" #ProgName " hineinkopiert wird. "
	)
)

(Set #HDBootedFromFloppy
    (cat "Es scheint, als wollten Sie auf Festplatte installieren, hätten "
         "aber von Diskette gestartet. Dies funktioniert nicht.\n\n"
         "Starten Sie Ihren Amiga ohne Disketten in den Laufwerken neu, "
         "damit er von der Festplatte startet, und installieren Sie "
         "" #ProgName " erneut."
    )
)


(set #NoDiskSpaceMsg1
	(cat "\nZu wenig freier Festplattenspeicher, um " #ProgName ""
        "zu installieren. Es sind mindestens "
	)
)

(set #NoDiskSpaceMsg2
	(cat "MB freier Festplattenspeicher erforderlich.\n\n "
             "Klicken Sie entweder auf \"Installation abbrechen\", um "
             "diesen Installationsvorgang abzubrechen und einige "
             "nicht benötigte Dateien zu löschen, oder klicken Sie "
             "auf \"Weiter\", um auf eine andere Partition zu "
             "installieren."
	)
)

(set #DrawerExistsMsg
	(cat "\nIm gewählten Zielverzeichnis existiert bereits "
             "ein Verzeichnis mit dem Namen \"" #DrawerName "\".\n\n"
             "Möchten Sie es ersetzen, oder ein neues Zielverzeichnis "
             "auswählen?\n\n"
	)
)

(set #DrawerExistsChoice1 "Ersetzen")

(set #DrawerExistsChoice2 "Neues Zielverzeichnis")

(set #DrawerExistsHelp
	(cat "\nIm Verzeichnis  \"#DrawerName \" wurde schon"
		"eine Installation gefunden.\n\nKlicken Sie auf \""
		#DrawerExistsChoice1 "\" um sie durch die neue Version von "
		"von " #ProgName " zu ersetzen.\nKlicken Sie auf \"" #DrawerExistsChoice2 "\", um ein "
		"neues Zielverzeichnis auszuwählen.\n\n"
		"Wenn Sie \"" #DrawerExistsChoice1 "\" auswählen, sollten Sie "
		"von allen noch benötigten Dateien zunächst eine Kopie erstellen."
	)
)

(set #InstallChoice1 "Ja - Ersetzen")

(set #InstallChoice2 "Nein")

(set #OldASLLibraryMsg
	(cat "Die ASL.library existiert entweder nicht oder in der falschen Version. "
             " #ProgName benötigt mindestens Version 36 dieser "
	     "Bibliothek. Möchten Sie Version 38 jetzt installieren?"
	)
)
(set #OldASLLibraryHelp
	(cat #ProgName " benötigt zum Betrieb mind. Version 36 "
		"der ASL.library (Workbench 2.0 oder höher).\n\n"
		"Wählen Sie \"" #InstallChoice1 "\" , um Version 38 und "
		"anschließend " #ProgName " zu installieren.\n "
                "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
		"38 der ASL.library nicht installiert werden soll."
	)
)

(set #OldCommoditiesLibraryMsg
	(cat "Die Commodities.library liegt gar nicht oder in einer "
             "falschen Version vor. Benötigt wird mindestens Version "
	     "37. Möchten Sie jetzt Version 38 kopieren?"
	)
)

(set #OldCommoditiesLibraryHelp
	(cat #ProgName " benötigt zum Betrieb mindestens Version 37 "
		"der the Commodities library (Workbench 2.0 oder höher).\n\n"
		"Wählen Sie \"" #InstallChoice1 "\" um Version 38 der Bibliothek "
		"zu kopieren, und dann " #ProgName " zu installieren.\n "
                "Wählen Sie \"" #InstallChoice2 "\", wenn die Bibliothek "
		"in der Version 38 nicht installiert werden soll."
	)
)

(set #OldDiskFontLibraryMsg
	(cat  "Die diskfont.library existiert entweder nicht oder in der falschen Version. "
		#ProgName " benötigt mindestens Version 36 dieser "
		"Bibliothek. Möchten Sie Version 38 jetzt installieren?"
	)
)

(set #OldDiskFontLibraryHelp
	(cat #ProgName " benötigt zum Betrieb mind. Version 36 "
		"der diskfont.library (Workbench 2.04 oder höher).\n\n"
		"Wählen Sie \"" #InstallChoice1 "\" , um Version 38 und "
		"anschließend " #ProgName " zu installieren.\n "
                "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
		"38 der ASL.library nicht installiert werden soll und "
                "Sie die Installation abbrechen möchten."
	)
)

(set #OldAmigaGuideLibraryMsg
	(cat "Die amigaguide.library existiert entweder nicht oder in der falschen Version. "
	     #ProgName " benötigt mindestens Version 34.11 dieser "
	     "Bibliothek. Möchten Sie diese jetzt installieren?"
	)
)

(set #OldAmigaGuideLibraryHelp
	(cat #ProgName " benötigt zum Betrieb mind. Version 34.11 "
		"der amigaguide.library.\n\n"
		"Wählen Sie \"" #InstallChoice1 "\" , um Version 34.11 "
		"zu installieren.\n "
                "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
		"34.11 der amigaguide.library nicht installiert werden soll. "
	)
)

(set #OldLocaleLibraryMsg
	(cat "You either do not have an Locale library, or it is the wrong version. "
		#ProgName " requires you have at least version 38 of this "
		"library. Do you want to copy version 38 of the Locale library?"
	)
)

(set #OldLocaleLibraryHelp
	(cat #ProgName " benötigt zum Betrieb mind. Version 38 "
		"der locale.library.\n\n"
		"Wählen Sie \"" #InstallChoice1 "\" , um Version 38 "
		"zu installieren.\n "
                "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
		"38 der locale.library nicht installiert werden soll. "
	)
)

(set #OldParseLibraryMsg
	(cat "Die iffparse.library existiert entweder nicht oder in der falschen Version. "
		#ProgName " benötigt mindestens Version 33 dieser "
		"Bibliothek. Möchten Sie Version 34 jetzt installieren?"
	)
)

(set #OldParseLibraryHelp
	(cat #ProgName " benötigt zum Betrieb mind. Version 33 "
		"der iffparse.library.\n\n"
		"Wählen Sie \"" #InstallChoice1 "\" , um Version 34 "
		"zu installieren.\n "
                "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
		"34 der iffparse.library nicht installiert werden soll. "

	)
)

(set #InsertDiskMsg
	(cat "\nBitte folgende Diskette einlegen: \n\n")
)

(set #diskhelp
	(cat "\nWenn Sie sicher sind, daß sich die korrekte Diskette im Laufwerk "
		"befindet, ist deren Name evtl. falsch. \n"
		"Vergewissern Sie sich, daß dem Namen nicht das Präfix "
                " 'copy_of_'voransteht, und daß er keine Leerzeichen enthält.\n\n\n" @askdisk-help
	)
)

(set #Unpackmsg1 "Dateien werden entpackt ")
(set #Unpackmsg2 " nach ")
(set #Unpackmsg3 "\n\nEinen Moment, bitte...")

(set #ArchiveAbortMsg1
	(cat "Fehler beim Entpacken.")
)

(set #ArchiveAbortMsg2
	(cat "'. Versuchen Sie, das Programm in ein anderes Verzeichnis "
		"oder eine andere Partition zu installieren. Sollte auch "
                "dies fehlschlagen, wenden Sie sich bitte an den technischen "
                "Kundendienst. "
	)
)

(set #BlankDiskWarning
	(cat "\nLegen Sie eine Leerdiskette in das interne Laufwerk,\n"
		"und klicken Sie auf \"Weiter\"."
		"\n\nVORSICHT: Alle auf der Diskette vorhandenen Daten "
		"werden gelöscht."
	)
)

(set #FloppyWarningHelp
	(cat 	"\nBei diesem Vorgang wird die Diskette im internen "
                "Laufwerk formatiert und damit für den Gebraucht mit "
                "Organiser vorbereitet. "
                "\n\n Erstellen Sie vor der Installation unbedingt "
                "eine Kopie Ihrer Originaldisketten, und bewahren "
                "Sie sie an einem sicheren Ort auf. "
                "Außerdem sollten Sie den Schreibschutz setzen, bevor "
                "Sie auf \"Weiter\" klicken. "
	)
)

(set #NotBlankMsg1
	(cat "Sie haben die Diskette \"")
)

(set #NotBlankMsg2
	(cat "\" im internen Laufwerk.\n\nBitte ersetzen Sie "
		"diese Diskette durch eine Leerdiskette, bevor "
		"Sie auf \"Weiter\" klicken."
	)
)

(set #FormatWorkingMsg
	(cat "Einen Moment, bitte: Diskette wird formatiert.")
)

(set #FormatError
	(cat 	"\nBei dem Versuch, diese Diskette zu formatieren, "
                "ist ein Fehler aufgetreten. "
                "Bitte versuchen Sie es mit einer anderen Diskette "
                "erneut. "
	)
)

(set #FormatErrorHelp
	(cat "\nBeim Formatieren der Diskette ist ein Fehler "
                "aufgetreten. Die Anzahl möglicher Ursachen ist "
                "groß, meist handelt es sich jedoch um einen Defekt "
                "der Diskette oder des Laufwerks.\nBitte probieren "
                "Sie zunächst eine andere Diskette aus und prüfen "
                "Sie das Laufwerk auf einwandfreie Funktion, bevor "
                "Sie sich an unseren Kundendienst wenden. "
	)
)

(set #FormatCompleteMsg1
	(cat " erstell.\n\nNehmen Sie die Diskette aus dem "
		"internen Laufwerk, beschriftenn Sie sie mit \""
	)
)

(set #FormatCompleteMsg2
	(cat "\", und klicken Sie auf \"Weiter\".")
)

(set #FormatChoiceprompt
	(cat "\n" #ProgName " wird bei der Installation zwei Disketten "
                "formatieren und mit Namen versehen. "
		"Weitere Informationen unter 'Hilfe'. Möchten Sie:"
	)
)

(set #FormatChoicemsg1 "Einige Leerdisketten normal formatieren")

(set #FormatChoicemsg2 "Einige Leerdisketten schnell formatieren")

(set #FormatChoice-Help
	(cat "Dieses Installationsprogramm muß zur Installation von " #ProgName " "
             "zunächst zwei Disketten formatieren und mit Namen versehen. "
             "\n\n Wählen Sie '" #FormatChoicemsg1 "', um die Disketten normal "
             "zu formatieren, oder '" #FormatChoicemsg2 "', um Disketten, die "
	     "bereits mit dem Fast File System formatiert sind, schnell zu "
             "formatieren. "

	)
)

(set #FloppyFinishedMsg
	(cat "\nNach dem Anklicken von 'Weiter', legen Sie die \"" #MainDisk
		"\" -Diskette in das interne Diskettenlaufwerk, und starten "
             "Sie Ihren Amiga neu.\n "
	)
)

(set #WorkingMsg (cat "Bitte warten...\n\nInstalliere " #ProgName))

(set #CreateDiskPrompt1 "\n\nFolgende erstellen:\n\n'")
(set #CreateDiskPrompt2 "' diskette?")

(set #ChoiceContinue "Ja")

(set #ChoiceSkip "Diesen Teil überspringen")

(set #CreateMainDiskHelp
	(cat "\nDie Diskette '" #MainDisk "' enthält alle "
		#ProgName " Programmdateien. \n\nWenn Sie die Diskette "
		#MainDisk " erstellen möchten, klicken Sie auf '" #ChoiceContinue "'.\n "
                " Wenn Sie diese Diskette nicht erstellen möchten, klicken Sie auf '" #ChoiceSkip "'."
	)
)

(set #CreateFilesDiskHelp
	(cat "\nDie Diskette '" #FilesDisk "' enthält alle "
		#ProgName " Hilfs- und Datendateien. \n\nWenn Sie die Diskette "
		#FilesDisk " erstellen möchten, klicken Sie auf '" #ChoiceContinue "'.\n "
                "Wenn Sie diese Diskette nicht erstellen möchten, klicken Sie auf '" #ChoiceSkip "'."
	)
)

(set #AskLocaleCmd "Assign >NIL: LOCALE: SYS:Locale")

(set #AskLocaleMsg
	(cat "Es scheint, als sei der Locale-Voreinsteller auf Ihrer Festplatte "
             "nicht korrekt installiert. " #ProgName " benötigt das Locale-System "
             "jedoch zur korrekten Funktion.\n\n"
		 "Die Datei 'User-Startup' muß mit einem Assign versehen werden:\n\n "
		 "'" #AskLocaleCmd "'\n\nKlicken Sie auf Weiter, um fortzufahren."
	)
)

(set #AskLocaleHelp
	(cat "Damit die Datums- und Zeitfunktionen korrekt arbeiten, benötigt "
             "" #ProgName " das Programm Locale auf Ihrer Festplatte. Zu "
             "dessen Konfigurierung muß eine Zuweisung mit dem Befehl Assign "
             "in der Datei User-Startup existieren.\n\n. "
             "Klicken Sie auf Weiter, um diese automatisch erzeugen zu "
             "lassen, oder auf 'Diesen Teil überspringen', wenn die Datei "
             "nicht modifiziert werden soll. "
	)
)


(set #PrinterChoicePrompt
	(cat "\n\nMöchten Sie einen Druckertreiber installieren?"
	)
)

(set #PrinterChoicemsg1 "Ja")
(set #PrinterChoicemsg2 "Nein")

(set #PrinterChoice-Help
	(cat "Um in " #ProgName " gespeicherte Daten auch drucken zu können, "
             "müssen Sie einen geeigneten Treiber für Ihren Drucker auswählen. "
             "Klicken Sie auf '" #PrinterChoicemsg1 "', um jetzt einen Treiber "
             "auszuwählen, oder auf '" #PrinterChoicemsg2 "', wenn kein "
             "Druckertreiber installiert werden soll. "
	)
)



;------------------------------------------------------
; ### Procedure declarations

;------------------------------------------------------
;// routine to get disk specified in '#FileSourceDisk'
(procedure @GetDisk
	(
		(askdisk
			(prompt #InsertDiskMsg #FileSourceDisk)
			(help #diskhelp)
			(dest #FileSourceDisk)
		)
	)
)

;------------------------------------------------------
;// Procedure to decompress file set in '#UnpackFile' to '#UnpackDest'
(procedure @UnpackFiles
	(
  	(working #Unpackmsg1 #UnpackFile #Unpackmsg2 #UnpackDest #Unpackmsg3)
		(set ExpandName #UnpackFile)
		(set #ArchiveError 0)
		(set RunLhx
			(cat "OrgUtils:Lhx -I -m e \"" ExpandName "\" \"" #UnpackDest "\"")
		)
		(set #ArchiveError (run RunLhx))
		(if (> #ArchiveError 0)
			(
				(set #ArchiveAbortMsg (cat #ArchiveAbortMsg1 ExpandName #ArchiveAbortMsg2))
				(abort #ArchiveAbortMsg)
			)
		)
	)
)

;------------------------------------------------------
;// Initial Checks
(procedure @InitialChecks
	(
		;// Check OS version
		(working #CheckStartup)

		(set #OSVerNum (getversion))
		(set #OSVersion (/ #OSVerNum 65536))

		(if (< #OSVersion 37)
			(abort #BadKick)
		)

		;// Create temp file in ram: for files
		(if (not (exists #RamTempFile))
			(
				(makedir #RamTempFile (safe))
			)
		)
    (makeassign "OrgTemp" #RamTempFile (safe))

		;// Create temp file in ram: for utils
		(if (not (exists #RamUtils))
			(
				(makedir #RamUtils (safe))
			)
		)
    (makeassign "OrgUtils" #RamUtils (safe))

    ;// Set flag if novice user
    (set #UserNovice 0)
    (if (= @user-level 0)
      (
        (set #UserNovice 1)
      )
    )
	  (copyfiles
			(source (cat #InstallDisk ":Utils"))
			(dest "OrgUtils:")
			(all)
			(nogauge)
			(optional "nofail")
		)
	  ;// don't copy delete to OrgUtils, as it is used to delete OrgUtils!
	  (copyfiles
			(source (cat #InstallDisk ":c"))
			(dest "Ram:")
			(pattern "delete")
			(nogauge)
			(optional "nofail")
		)
	  (copyfiles
			(source (cat #InstallDisk ":System"))
			(dest "OrgUtils:")
			(pattern "format")
			(nogauge)
			(optional "nofail")
		)
	)
)

;------------------------------------------------------
;// Check that ASL library is at least v36 (if not replace)
(procedure @CheckASL
	(
		(set ASLVerNum (getversion (cat #LibsDefault ":ASL.library")))
		(set ASLVer (/ ASLVerNum 65536))
		(if (< ASLVer 36)
			(
        (if (= @user-level 2)
        	(
		        (set InstallASLLibrary
		          (askbool
   		        	(prompt #OldASLLibraryMsg)
     		      	(choices #InstallChoice1 #InstallChoice2)
       		    	(help #OldASLLibraryHelp)
         		  	(default 1)
		          )
   		     	)
		        (if (= InstallASLLibrary 1)
   		      	(
     		      	(@InstallASL)
		          )
		        )
		      )
		      (
		      	(@InstallASL)
		      )
		    )
		  )
		) ;endif
	)
)

;------------------------------------------------------
;// Procedure to install the asl library
(procedure @InstallASL
	(
    (set #UnpackFile (cat #ArchiveLocation #ASLArchiveName))
    (set #UnpackDest #LibsDest)

		(if (exists (cat #UnpackDest "asl.library"))
			(delete (cat #UnpackDest "asl.library")
				(optional "force")
			)
		)
    (@UnpackFiles)
	)
)

;------------------------------------------------------
;// Check that Locale library is at least v38 (if not replace)
(procedure @CheckLocale
	(
		(set LocaleVerNum (getversion (cat #LibsDefault ":Locale.library")))
		(set LocaleVer (/ LocaleVerNum 65536))
		(if (< LocaleVer 38)
			(
        (if (= @user-level 2)
        	(
		        (set InstallLocaleLibrary
		          (askbool
   		        	(prompt #OldLocaleLibraryMsg)
     		      	(choices #InstallChoice1 #InstallChoice2)
       		    	(help #OldLocaleLibraryHelp)
         		  	(default 1)
		          )
   		     	)
		        (if (= InstallLocaleLibrary 1)
   		      	(
     		      	(@InstallLocale)
		          )
		        )
		      )
		      (
		      	(@InstallLocale)
		      )
		    )
		  )
		) ;endif
	)
)

;------------------------------------------------------
;// Procedure to install the locale library
(procedure @InstallLocale
	(
		(if (exists (cat #LibsDefault ":locale.library"))
			(
				(delete (cat #LibsDefault ":locale.library")
					(optional "force")
				)
			)
		)

		(copyfiles
			(source #LibsSource)
			(dest (cat #LibsDefault ":"))
			(pattern "locale.library")
			(optional "force")
		)
	)
)


;------------------------------------------------------
;// Check that IFFParse library is at least v33 (if not replace)
(procedure @CheckParse
	(
		(set ParseVerNum (getversion (cat #LibsDefault ":iffparse.library")))
		(set ParseVer (/ ParseVerNum 65536))
		(if (< ParseVer 33)
			(
        (if (= @user-level 2)
        	(
		        (set InstallParseLibrary
		          (askbool
   		        	(prompt #OldParseLibraryMsg)
     		      	(choices #InstallChoice1 #InstallChoice2)
       		    	(help #OldParseLibraryHelp)
         		  	(default 1)
		          )
   		     	)
		        (if (= InstallParseLibrary 1)
   		      	(
     		      	(@InstallParse)
		          )
		        )
		      )
		      (
		      	(@InstallParse)
		      )
		    )
		  )
		) ;endif
	)
)

;------------------------------------------------------
;// Procedure to install the iffparse library
(procedure @InstallParse
	(
		(if (exists (cat #LibsDefault ":iffparse.library"))
			(
				(delete (cat #LibsDefault ":iffparse.library")
					(optional "force")
				)
			)
		)

		(copyfiles
			(source #LibsSource)
			(dest (cat #LibsDefault ":"))
			(pattern "iffparse.library")
			(optional "force")
		)
	)
)


;------------------------------------------------------
;// Check that diskfont library is at least v36 (if not replace)
(procedure @CheckDiskFont
	(
		(set DFVerNum (getversion (cat #LibsDefault ":diskfont.library")))
		(set DFVer (/ DFVerNum 65536))
		(if (< DFVer 36)
			(
        (if (= @user-level 2)
        	(
		        (set InstallDiskFontLibrary
		          (askbool
   		        	(prompt #OldDiskFontLibraryMsg)
     		      	(choices #InstallChoice1 #InstallChoice2)
       		    	(help #OldDiskFontLibraryHelp)
         		  	(default 1)
		          )
   		     	)
		        (if (= InstallDiskFontLibrary 1)
   		      	(
     		      	(@InstallDiskFont)
		          )
		        ) ;end if
		      )
		      (
		      	(@InstallDiskFont)
		      )
		    ) ;end if
		  )
		) ;endif
	)
)

;------------------------------------------------------
;// Procedure to install diskfont library
(procedure @InstallDiskFont
	(
    (set #UnpackFile (cat #ArchiveLocation #DiskfontArchiveName))
    (set #UnpackDest #LibsDest)
		(if (exists (cat #UnpackDest "diskfont.library"))
			(delete (cat #UnpackDest "diskfont.library")
				(optional "force")
			)
		)
    (@UnpackFiles)
  )
)

;------------------------------------------------------
;** Check that AmigaGuide library is at least version 34.11 (if not replace)
(procedure @CheckAmigaGuide
	(
		(set AGVerNum (getversion (cat #LibsDefault ":amigaguide.library")))
		(set AGVer (/ AGVerNum 65536))
		(set AGRev (- AGVerNum (* AGVer 65536)))
		(if (< AGVer 35)
			(
        (if (< AGRev 11)
        	(
		        (if (= @user-level 2)
		        	(
				        (set InstallAmigaGuideLibrary
				          (askbool
		   		        	(prompt #OldAmigaGuideLibraryMsg)
		     		      	(choices #InstallChoice1 #InstallChoice2)
		       		    	(help #OldAmigaGuideLibraryHelp)
		         		  	(default 1)
				          )
		   		     	)
				        (if (= InstallAmigaGuideLibrary 1)
		   		      	(
		     		      	(@InstallAmigaGuide)
				          )
				        );end if
				      )
				      (
				      	(@InstallAmigaGuide)
				      )
				    ) ;end if (user-level)
				  )
				) ;end if (revision)
		  )
		) ;end if (version)
	)
)

;------------------------------------------------------
;// Procedure to install amigaguide library
(procedure @InstallAmigaGuide
	(
    (set #UnpackFile (cat #ArchiveLocation #AmigaGuideArchiveName))
    (set #UnpackDest #LibsDest)
		(if (exists (cat #UnpackDest "amigaguide.library"))
			(delete (cat #UnpackDest "amigaguide.library")
				(optional "force")
			)
		)
    (@UnpackFiles)
  )
)

;------------------------------------------------------
;// Check that commodities library is at least v37 (if not replace)
(procedure @CheckCommodities
	(
		(set CommoditiesVerNum (getversion (cat #LibsDefault ":commodities.library")))
		(set CommoditiesVer (/ CommoditiesVerNum 65536))
		(if (< CommoditiesVer 37)
			(
        (if (= @user-level 2)
        	(
		        (set InstallCommoditiesLibrary
		          (askbool
   		        	(prompt #OldCommoditiesLibraryMsg)
     		      	(choices #InstallChoice1 #InstallChoice2)
       		    	(help #OldCommoditiesLibraryHelp)
         		  	(default 1)
		          )
   		     	)
		        (if (= InstallCommoditiesLibrary 1)
   		      	(
     		      	(@InstallCommodities)
		          )
		        )
		      )
		      (
		      	(@InstallCommodities)
		      )
		    )
		  )
		) ;endif
	)
)

;------------------------------------------------------
;// Procedure to install the commodities library
(procedure @InstallCommodities
	(
    (set #UnpackFile (cat #ArchiveLocation #CommoditiesArchiveName))
    (set #UnpackDest #LibsDest)

		(if (exists (cat #UnpackDest "commodities.library"))
			(delete (cat #UnpackDest "commodities.library")
				(optional "force")
			)
		)
    (@UnpackFiles)
	)
)

;------------------------------------------------------
;// Procedure to de-archive screen fonts
(procedure @DearchiveScreenFonts
	(
    (set #UnpackFile (cat #ArchiveLocation #SystemFontsArchiveName))
		(set #UnpackDest #SystemFontsDest)
		(@UnpackFiles)
  )
)

;------------------------------------------------------
;// Procedure to de-archive Env-Archive files
(procedure @DearchiveEnv-Archive
	(
    (set #UnpackFile (cat #ArchiveLocation #Env-ArchiveArchiveName))
		(set #UnpackDest #Env-ArchiveDest)
		(@UnpackFiles)
  )
)

;------------------------------------------------------
;// Procedure to de-archive Env files
(procedure @DearchiveEnv
	(
    (set #UnpackFile (cat #ArchiveLocation #Env-ArchiveArchiveName))
		(set #UnpackDest "ENV:")
		(@UnpackFiles)
  )
)


;------------------------------------------------------
;// Install to HD or Floppy ?
(procedure @CheckHDorFloppy
	(
		;// Floppy or HD ?
		(set #FullPath (expandpath "sys:"))
		(if (= #FullPath (cat #InstallDisk ":"))
			(set #DiskDefault 1)
			(set #DiskDefault 0)
		)


    ;** set novice user to expert briefly
    (set #UserNovice 0)
    (if (= @user-level 0)
      (
        (user 2)
        (set #UserNovice 1)
      )
    )
  	(set #DestinationType
      (askchoice
        (prompt #DestChoicePrompt)
        (choices #HardDiskChoiceMsg
             #FloppyChoiceMsg
        )
        (help #DestChoiceHelp)
        (default #DiskDefault)
      )
    )
    ;** set novice user back to novice
    (if (= #UserNovice 1)
      (user 0)
    )

    (if (= #DestinationType 0)
    	(set #DestinationType "Hard")
    	(set #DestinationType "Floppy")
    )
	)
)

;------------------------------------------------------
;// Choose hard disk destination for Organiser drawer
(procedure @ChooseHDDest
	(
		;** Find default drawer
		(set #DefaultDest (getassign "Work" "d"))
		(if (= #DefaultDest "")
			(
				(set #DefaultDest (getassign "HD3" "d"))
				(if (= #DefaultDest "")
					(
						(set #DefaultDest (getassign "HD2" "d"))
						(if (= #DefaultDest "")
            	(
                (set #DefaultDest (getassign "HD1" "d"))
                (if (= #DefaultDest "")
                  (
                    (set #DefaultDest (getassign "DH1" "d"))
                    (if (= #DefaultDest "")
                      (
                        (set #DefaultDest (getassign "HD0" "d"))
                        (if (= #DefaultDest "")
                          (
                            (set #DefaultDest "DH0:")
                            (if (= #UserNovice 1)
                              (user 2)
                            )
                          )
                        )
                      )
                    )
                  )
                )
              )
            )
          )
        )
			)
		)
		;** Ask for destination
		(set #DestDrawer
			(askdir
				(prompt #HardDiskDestChoiceMsg)
				(help #HardDiskDestChoiceHelp)
				(default #DefaultDest)
			)
		)
    (if (= #UserNovice 1)
      (user 0)
    )
	)
)


;------------------------------------------------------
;// Find HD Destination and check enough space
(procedure @FindHDDest
	(
		(set OrgExists 0)
    (while (= OrgExists 0)
			(
      	(@ChooseHDDest)
      	(while (< (getdiskspace #DestDrawer) #HDSpaceNeededBytes)
        	(
          	(if (< (getdiskspace #DestDrawer) #HDSpaceNeededBytes)
            	(
						    (if (= @user-level 0)
						      (
						        (user 2)
						        (set #UserNovice 1)
						      )
						    )
              	(message #NoDiskSpaceMsg1 (/ (/ #HDSpaceNeededBytes 1024) 1024) #NoDiskSpaceMsg2)
              	(@ChooseHDDest)
            	)
        	 	)
        	)
    		) ;end while
	    	(@CheckExistsAlready)
	    )
	  );end while
    (if (= #UserNovice 1)
      (user 0)
    )
	)
)

;------------------------------------------------------
;// Procedure to check if Organiser exists already in destination
;// Replace or choose again if so
(procedure @CheckExistsAlready
	(
    (if (exists (tackon #DestDrawer #DrawerName))
      (
        (set ChooseAgainAnswer
          (askbool
            (prompt #DrawerExistsMsg)
            (choices #DrawerExistsChoice1 #DrawerExistsChoice2)
            (help #DrawerExistsHelp)
            (default 1)
          )
        )
        (if (= ChooseAgainAnswer 0)
          (
            (set OrgExists 0)
          )
          (
            (set OrgExists 1)
          )
        )
      )
      (;else
        (set OrgExists 1)
      )
    );endif
	)
)

;------------------------------------------------------
;// Create Organiser drawers in chosen destination
(procedure @CreateDrawers
	(
		(working #WorkingMsg)
		(set #InsideHDDest (tackon #DestDrawer #DrawerName))
		;// Make the Organiser drawer
		(makedir #InsideHDDest (infos))

		;// Make the Supplements Storage drawer
		(set #HDSuppStorageDest (tackon #InsideHDDest #SuppStorageName))
		(makedir #HDSuppStorageDest (infos))

		;// Make the Supplements drawer
		(set #HDSupplementsDest (tackon #InsideHDDest #SupplementsName))
		(makedir #HDSupplementsDest (infos))

		;// Make the Files drawer
		(set #HDFilesDest (tackon #InsideHDDest #FilesName))
		(makedir #HDFilesDest)

		;// Make the Themes drawer
		(set #HDThemesDest (tackon #InsideHDDest #ThemesName))
		(makedir #HDThemesDest (infos))

		;// Make the Samples drawer
		(set #HDSamplesDest (tackon #InsideHDDest #SamplesName))
		(makedir #HDSamplesDest (infos))

		;// Make the Templates drawer
		(set #HDTemplatesDest (tackon #InsideHDDest #TemplatesName))
		(makedir #HDTemplatesDest (infos))

		;// Make the Catalogs drawer
		(set #HDCatalogsDest (tackon #InsideHDDest #CatalogsName))
		(makedir #HDCatalogsDest)
	)
)

;------------------------------------------------------
;// set up hard drive destinations
(procedure @SetUpHDProgDests
	(
		(working #WorkingMsg)
		(set #LibsDest (cat #LibsDefault ":"))
		(set #ProgDest (cat #InsideHDDest "/"))
		(set #SupplementsDest (cat #HDSupplementsDest "/"))
		(set #SuppStorageDest (cat #HDSuppStorageDest "/"))
		(set #FilesDest (cat #HDFilesDest "/"))
		(set #ThemesDest (cat #HDThemesDest "/"))
		(set #TemplatesDest (cat #HDTemplatesDest "/"))
	    (set #SystemFontsDest "Fonts:")
	    (set #Env-ArchiveDest "Sys:Prefs/Env-Archive/")
	    (set #SamplesDest (cat #HDSamplesDest "/"))
	    (set #HelpDest (cat #HDFilesDest "/"))
	    (set #OrgToolDest (cat #ProgDest #ProgName))
	)
)

;------------------------------------------------------
;// set up floppy disk destinations
(procedure @SetUpFloppyProgDests
	(
		(set #ProgDest (cat #MainDisk ":"))
		(set #SupplementsDest (cat #MainDisk ":" #SupplementsName "/"))
		(set #SuppStorageDest (cat #FilesDisk ":" #SuppStorageName "/"))
		(set #ThemesDest (cat #FilesDisk ":" #ThemesName "/"))
		(set #TemplatesDest (cat #FilesDisk ":" #TemplatesName "/"))
		(set #FilesDest (cat #MainDisk ":" #FilesName "/"))
	    (set #SystemFontsDest (cat #MainDisk ":" #FontsName "/"))
	    (set #Env-ArchiveDest (cat #MainDisk ":Prefs/Env-Archive/"))
        (set #LibsDest (cat #MainDisk ":Libs/"))
        (set #SamplesDest (cat #MainDisk ":" #SamplesName "/"))
        (set #HelpDest (cat #FilesDisk ":Help/"))
		(set #OrgToolDest (cat #MainDisk ":" #ProgName))
	)
)

;------------------------------------------------------
;// Check to make sure that none of the Organiser disks
;// are in the internal drive before creating blank ones.
(procedure @CheckDisks
	(
		(set #NumberDisks (+ #NumberInstallDisks #NumNewDisks))
		(set #DiskBlank 1)
		(set n 0)
		(until (OR (= n #NumberDisks) (= #DiskBlank 0))
			(
				(set #CheckMainDisk
					(select n
						#InstallDisk
						#MainDisk
						#FilesDisk
					)
				)
				(if (= (getassign "df0" "d") (cat #CheckMainDisk ":"))
					(	;disk is not blank
						(set #DiskBlank 0)
					)
				)
				(set n (+ n 1))
			)
		)
	)
)


;------------------------------------------------------
;// Format and name the disk given in #FormatMainDisk
(procedure @FormatDisk
	(
		(working #FormatWorkingMsg)
		;*** USE 2.0 FORMAT COMMAND ***
		(if (= #FormatChoice 0)
			(
				(set #FormatCheck
					(run ("OrgUtils:Format drive=df0: name=%s FFS NOICONS" #FormatMainDisk))
				)
			)
			(
				(set #FormatCheck
					(run ("OrgUtils:Format drive=df0: name=%s FFS QUICK NOICONS" #FormatMainDisk))
				)
			)
		)
    (if (OR (> #FormatCheck 0) (< #FormatCheck 0))
    	(set #NoError 1)
   		(set #NoError 0)
    )
		(if (= #NoError 0)
			(
				(if (= #FormatMainDisk #MainDisk)
					(run "OrgUtils:Install2.1 df0:")
				)
			)
		); endif
	)
)

;------------------------------------------------------
;// routine to check disk in drive ok and format it if so
(procedure @Makedisk
	(
    (set #NoError 1)
    (while (= #NoError 1)
    	(
		    ;** Make sure that the install disks are not in the drive
		    (run "OrgUtils:Wait 6")  ;Wait a bit for disk access to stop
		    (@CheckDisks)
  		  (if (= #DiskBlank 0)
  		    (
  		      (message #NotBlankMsg1 #CheckMainDisk #NotBlankMsg2)
  		    )
  		    (
        		(set #NoError 1)
        		(@FormatDisk)
        		(if (= #NoError 1)
          		(
            		(message #FormatError (help #FormatErrorHelp))
          		)
        		);endif
      		)
    		);endif
    	)
    );endwhile
  )
)

;------------------------------------------------------
;// Create floppy disk 1
(procedure @CreateDisk1
	(
    ;// Copy system files from install disk to Ram...
    (copyfiles
    	(source (cat #InstallDisk ":Libs"))
    	(dest "RAM:Libs")
    	(all)
    	(optional "force")
    )
    (copyfiles
    	(source (cat #InstallDisk ":c"))
    	(dest "RAM:c")
    	(all)
    	(optional "force")
    )
    (copyfiles
    	(source (cat #InstallDisk ":l"))
    	(dest "RAM:l")
    	(all)
    	(optional "force")
    )
    (copyfiles
    	(source (cat #InstallDisk ":system"))
    	(dest "RAM:system")
    	(all)
    	(optional "force")
   )
    (copyfiles
      (source (cat #InstallDisk ":Devs"))
      (dest "RAM:Devs")
      (all)
      (optional "force")
    )
    (copyfiles
      (source (cat #InstallDisk ":prefs"))
      (dest "RAM:prefs")
      (all)
      (optional "force")
    )
    (copyfiles
      (source (cat #InstallDisk ":s"))
      (dest "RAM:s")
      (all)
      (optional "force")
    )


		(copyfiles
		  (source (cat #InstallName ":Locale"))
		  (dest "RAM:Locale")
		  (all)
		  (optional "force")
		)


    ;// Now create the first disk
	  (message #BlankDiskWarning
	  	(help #FloppyWarningHelp)
	  )
  	(set #FormatMainDisk #MainDisk)
	  (@Makedisk)

	(message (cat "\n" #MainDisk #FormatCompleteMsg1 #MainDisk #FormatCompleteMsg2))


    ;// Now copy all files from RAM to disk 1, then delete them.
    (set #FileSourceDisk #MainDisk)
    (@GetDisk)

    (makedir (cat #MainDisk ":Prefs") (infos))				; make Prefs drawer

    (copyfiles
    	(source "RAM:Libs")
    	(dest (cat #MainDisk ":Libs"))
    	(all)
    	(optional "force")
    )
		(run "ram:delete RAM:Libs all" (safe))

    (copyfiles
    	(source "RAM:l")
    	(dest (cat #MainDisk ":l"))
    	(all)
    	(optional "force")
    )
		(run "ram:delete RAM:l all" (safe))

    (copyfiles
    	(source "RAM:s")
    	(dest (cat #MainDisk ":s"))
    	(all)
    	(optional "force")
    )
		(run "ram:delete RAM:s all" (safe))


(complete 20)

    (copyfiles
    	(source "RAM:c")
    	(dest (cat #MainDisk ":c"))
    	(all)
    	(optional "force")
    )
		(run "ram:delete RAM:c all" (safe))

    (copyfiles
    	(source "RAM:system")
    	(dest (cat #MainDisk ":system"))
    	(all)
    	(optional "force")
    )
		(run "ram:delete RAM:system all" (safe))

    (copyfiles
      (source "RAM:Devs")
      (dest (cat #MainDisk ":Devs"))
      (all)
      (optional "force")
    )
		(run "ram:delete RAM:Devs all" (safe))

    (copyfiles
      (source "RAM:prefs")
      (dest (cat #MainDisk ":prefs"))
      (all)
      (optional "force")
    )
		(run "ram:delete RAM:prefs all" (safe))

    (copyfiles
      (source "RAM:Locale")
      (dest (cat #MainDisk ":Locale"))
      (all)
      (optional "force")
    )
		(run "ram:delete RAM:Locale all" (safe))

(complete 30)

		;## Now install other devices
		;## DISK SWAP to get rest of archives
    (set #FileSourceDisk #InstallDisk)
    (@GetDisk)

    ;// ... some archives...
    (copyfiles
			(source (cat #InstallDisk ":Archive"))
			(dest "OrgTemp:")
			(pattern ("~(Supp_Storage.lha|Themes.lha|Organiser.lha|Templates.lha|Help.lha|Disk1Info.lha|Disk2Info.lha|HDInfo.lha|ProgramInfo.lha|DrawerInfo.lha)"))
			(optional "force")
		  (safe)
	)

    (copyfiles
			(source (cat #InstallDisk ":S"))
			(dest "OrgTemp:")
			(pattern ("(startup-sequence)"))
			(optional "force")
		  (safe)
	)



		;## DISK SWAP back again to dearchive to disk
    (set #FileSourceDisk #MainDisk)
    (@GetDisk)

    (makedir (cat #MainDisk ":" #SupplementsName) (infos))		; make Supplements drawer
    (makedir (cat #MainDisk ":WBStartup") (infos))				; make WBStartup drawer
    (makedir (cat #MainDisk ":" #SamplesName) (infos))			; make Samples drawer

		;// Make the Catalogs drawer
		(set #CatalogsDest (cat #MainDisk ":" #CatalogsName "/"))
		(makedir (cat #MainDisk ":" #CatalogsName))


    (set #UnpackFile (cat #ArchiveLocation #DevicesArchiveName))
    (set #UnpackDest (cat #MainDisk ":Devs/"))
    (@UnpackFiles)
		(run (cat "ram:delete " #ArchiveLocation #DevicesArchiveName) (safe))


(complete 40)


		(@DearchiveScreenFonts)
		(run (cat "ram:delete " #ArchiveLocation #SystemFontsArchiveName) (safe))

		(@DearchiveEnv-Archive)
		(@DearchiveEnv)
		(run (cat "ram:delete " #ArchiveLocation #Env-ArchiveArchiveName) (safe))

	    (set #UnpackFile (cat #ArchiveLocation #OtherPrefsArchiveName))
	    (set #UnpackDest (cat #MainDisk ":Prefs/Env-Archive/Sys/"))
	    (@UnpackFiles)
			(run (cat "ram:delete " #ArchiveLocation #OtherPrefsArchiveName) (safe))


	    (set #UnpackFile (cat #ArchiveLocation #AddMonitorArchiveName))
	    (set #UnpackDest (cat #MainDisk ":System/"))
	    (@UnpackFiles)
			(run (cat "ram:delete " #ArchiveLocation #AddMonitorArchiveName) (safe))



		(@InstallASL)
		(run (cat "ram:delete " #ArchiveLocation #ASLArchiveName) (safe))

		(@InstallCommodities)
		(run (cat "ram:delete " #ArchiveLocation #CommoditiesArchiveName) (safe))

		(@InstallAmigaGuide)
		(run (cat "ram:delete " #ArchiveLocation #AmigaGuideArchiveName) (safe))

		(@InstallDiskfont)
		(run (cat "ram:delete " #ArchiveLocation #DiskfontArchiveName) (safe))


(complete 50)

		(@InstallFiles)
		(run (cat "ram:delete " #ArchiveLocation #FilesArchiveName) (safe))

		(@InstallSupplements)
		(run (cat "ram:delete " #ArchiveLocation #SupplementsArchiveName) (safe))

		(@InstallHarp)
		(run (cat "ram:delete " #ArchiveLocation #HarpArchiveName) (safe))

		(set #UnpackFile (cat #ArchiveLocation #PrinterArchiveName))
		(set #UnpackDest (cat #MainDisk ":Prefs/"))
		(@UnpackFiles)
			(run (cat "ram:delete " #ArchiveLocation #PrinterArchiveName) (safe))

		(set #UnpackFile (cat #ArchiveLocation #SoundArchiveName))
		(set #UnpackDest (cat #MainDisk ":Prefs/"))
		(@UnpackFiles)
			(run (cat "ram:delete " #ArchiveLocation #SoundArchiveName) (safe))

		;// Install Catalogs
		(set #UnpackFile (cat #ArchiveLocation #CatalogsArchiveName))
		(set #UnpackDest #CatalogsDest)
		(@UnpackFiles)
			(run (cat "ram:delete " #ArchiveLocation #CatalogsArchiveName) (safe))


		;## DISK SWAP to get rest of archives
    (set #FileSourceDisk #InstallDisk)
    (@GetDisk)

    ;// ... some archives...
    (copyfiles
			(source (cat #InstallDisk ":Archive"))
			(dest "OrgTemp:")
			(pattern ("(Organiser.lha|Disk1Info.lha|ProgramInfo.lha)"))
			(optional "force")
		  (safe)
		)

(complete 60)


		;## DISK SWAP back again to dearchive to disk
    (set #FileSourceDisk #MainDisk)
    (@GetDisk)

		(@InstallProg)
		(run (cat "ram:delete " #ArchiveLocation #ProgArchiveName) (safe))

    (set #UnpackFile (cat #ArchiveLocation #Disk1InfoArchiveName))
    (set #UnpackDest (cat #MainDisk ":"))
    (@UnpackFiles)
		(run (cat "ram:delete " #ArchiveLocation #Disk1InfoArchiveName) (safe))

    (set #UnpackFile (cat #ArchiveLocation #ProgramInfoArchiveName))
    (set #UnpackDest (cat #MainDisk ":"))
    (@UnpackFiles)
		(run (cat "ram:delete " #ArchiveLocation #ProgramInfoArchiveName) (safe))

		(tooltype
			(dest #OrgToolDest)
			(settooltype #HelpTool "OrganiserExtras:Help/Organiser.guide")
		)

	)
)

;------------------------------------------------------
;// Create floppy disk 2
(procedure @CreateDisk2


	(
    	(set #FileSourceDisk #InstallDisk)
    	(@GetDisk)
    	(copyfiles
				(source (cat #InstallDisk ":Archive"))
				(dest "OrgTemp:")
				(pattern ("(Supp_Storage.lha|Themes.lha|Templates.lha|Help.lha|Disk2Info.lha)"))
				(optional "force")
			  (safe)
		)

		;// Now create the second disk
	(message #BlankDiskWarning
		(help #FloppyWarningHelp)
	)

(complete 70)

  	(set #FormatMainDisk #FilesDisk)
	  (@Makedisk)

	(message (cat "\n" #FilesDisk #FormatCompleteMsg1 #FilesDisk #FormatCompleteMsg2))

    (set #FileSourceDisk #FilesDisk)
    (@GetDisk)


		;// Create the drawers with icons.
    (makedir (cat #FilesDisk ":" #SuppStorageName) (infos))		; make Supplements Storage drawer
    (makedir (cat #FilesDisk ":" #ThemesName) (infos))			; make Themed diaries drawer
    (makedir (cat #FilesDisk ":" #TemplatesName) (infos))		; make Templates drawer
    (makedir (cat #FilesDisk ":Help"))							; make Help drawer



    ;// Now copy all files from RAM to disk 2, then delete them.
    (set #FileSourceDisk #FilesDisk)
    (@GetDisk)

		(@InstallSuppStorage)
		(run (cat "ram:delete " #ArchiveLocation #SuppStorageArchiveName) (safe))

(complete 80)


		(@InstallHelp)
		(run (cat "ram:delete " #ArchiveLocation #HelpArchiveName) (safe))

		(@InstallThemes)
		(run (cat "ram:delete " #ArchiveLocation #ThemesArchiveName) (safe))

		(@InstallTemplates)
		(run (cat "ram:delete " #ArchiveLocation #TemplatesArchiveName) (safe))

    (set #UnpackFile (cat #ArchiveLocation #Disk2InfoArchiveName))
    (set #UnpackDest (cat #FilesDisk ":"))
    (@UnpackFiles)
		(run (cat "ram:delete " #ArchiveLocation #Disk2InfoArchiveName) (safe))

	)
)

;------------------------------------------------------
;// Install program files
(procedure @InstallProg
	(
  	(working #WorkingMsg)
    (set #UnpackFile (cat #ArchiveLocation #ProgArchiveName))
    (set #UnpackDest #ProgDest)
    (@UnpackFiles)
  )
)

;------------------------------------------------------
;// Install Help files
(procedure @InstallHelp
	(
  	(working #WorkingMsg)
    (set #UnpackFile (cat #ArchiveLocation #HelpArchiveName))
    (set #UnpackDest #HelpDest)
    (@UnpackFiles)
  )
)

;------------------------------------------------------
;// Install Supplements Storage
(procedure @InstallSuppStorage
	(
		(working #WorkingMsg)
    (set #UnpackFile (cat #ArchiveLocation #SuppStorageArchiveName))
    (set #UnpackDest #SuppStorageDest)
    (@UnpackFiles)
	)
)

;------------------------------------------------------
;// Install Themes
(procedure @InstallThemes
	(
		(working #WorkingMsg)
    (set #UnpackFile (cat #ArchiveLocation #ThemesArchiveName))
    (set #UnpackDest #ThemesDest)
    (@UnpackFiles)
	)
)

;------------------------------------------------------
;// Install Templates
(procedure @InstallTemplates
	(
		(working #WorkingMsg)
    (set #UnpackFile (cat #ArchiveLocation #TemplatesArchiveName))
    (set #UnpackDest #TemplatesDest)
    (@UnpackFiles)
	)
)


;------------------------------------------------------
;// Install Files
(procedure @InstallFiles
	(
		(working #WorkingMsg)
    (set #UnpackFile (cat #ArchiveLocation #FilesArchiveName))
    (set #UnpackDest #FilesDest)
    (@UnpackFiles)
	)
)

;------------------------------------------------------
;// Install Supplements
(procedure @InstallSupplements
	(
		(working #WorkingMsg)
    (set #UnpackFile (cat #ArchiveLocation #SupplementsArchiveName))
    (set #UnpackDest #SupplementsDest)
    (@UnpackFiles)
	)
)

;------------------------------------------------------
;// Install Harp sample
(procedure @InstallHarp
	(
		(working #WorkingMsg)
    (set #UnpackFile (cat #ArchiveLocation #HarpArchiveName))
    (set #UnpackDest #SamplesDest)
    (@UnpackFiles)
	)
)


;------------------------------------------------------
;// Routine to install printer and fonts
(procedure @AddNewPrinter
	(
    (set #FileSourceDisk #InstallDisk)
    (@GetDisk)

    ;// Delete all in OrgTemp: first...
		(run (cat "ram:delete OrgTemp:#?" ) (safe))
    (set #ChosenDriver "Generic")
    (set #DriverSource (cat #InstallDisk ":Drivers"))
		(if (= #DestinationType "Floppy")
    	(
		    (set #DriverDest (cat #MainDisk ":Devs/Printers"))
		  )
		  (
		    (set #DriverDest "DEVS:Printers")
				(set #CheckGeneric (cat #DriverDest "/" #ChosenDriver))
				(if (exists #CheckGeneric)
				  (
				    (protect #CheckGeneric "+r+w+e+d")
				  )
				)
		  )
		)

    ;// Select printer (or driver) from list...
    (working #WorkingMsg)
    (set #SelectPrt
      (cat "OrgUtils:select OrgUtils:OrgPrinterList")
    )
    (run #SelectPrt (safe))
    (set #ChosenDriver (getenv "wwDriver"))
    (working #WorkingMsg)

    ;// driver chosen so copy it to ram...
    (copyfiles
      (source #DriverSource)
      (dest #RamTempFile)
      (pattern #ChosenDriver)
      (optional "force")
      (nogauge)
    )

    ;// Now decompress Driver 'ChosenDriver' to destination '#RamTempFile'...
    (set #UnpackFile (tackon #RamTempFile #ChosenDriver))
    (set #UnpackDest "OrgTemp:")
    (@UnpackFiles)
    (delete #UnpackFile)

    ;// get full uncompressed driver name...
    (run "c:List " #RamTempFile " LFORMAT %s >ENV:wwDriver")
    (set Driver (getenv "wwDriver"))
    (set DriverLen (strlen Driver))
    (set DriverLen (- DriverLen 1))
    (set #ChosenDriver
      (substr Driver 0 DriverLen)
    )
    ;// finally, copy driver to driver destination...
		(if (= #DestinationType "Floppy")
    	(
    		(set #FileSourceDisk #MainDisk)
    		(@GetDisk)
    	)
    )
    (copyfiles
      (source #RamTempFile)
      (dest #DriverDest)
      (pattern #ChosenDriver)
      (optional "force")
    )
  )
)

;------------------------------------------------------
;// Delete any files from Ram and temporary Ram Drawer
(procedure @CleanUp
	(
    (working #WorkingMsg)
    (makeassign "OrgTemp" (safe))
		(if (exists #RamTempFile)
    	(
				(set DeleteDrawer (cat "ram:delete " #RamTempFile " all force"))
				(Run DeleteDrawer)
			)
		)
    (makeassign "OrgUtils" (safe))
		(if (exists #RamUtils)
    	(
				(set DeleteDrawer (cat "ram:delete " #RamUtils " all force"))
				(Run DeleteDrawer)
			)
		)
	  (delete "Ram:delete"
	  	(optional "force")
	  )
	)
)

;------------------------------------------------------
; ### Main
(complete 0)
(welcome)
(complete 5)
(@InitialChecks) ;// Copies relevent files to ram also
(@CheckHDorFloppy)

(complete 10)

(if (= #DestinationType "Hard")
	(
		;// HD

	; Install to Hard-disk
	(if (= #FullPath (cat #InstallDisk ":"))
		(Abort #HDBootedFromFloppy)
	)


	  (set #ArchiveLocation (cat #InstallDisk ":Archive/"))
    (set #FileSourceDisk #InstallDisk)
    (@GetDisk)
    (@SetUpHDProgDests)


	;## if on Hard disk see if there's a Locale:Countries drawer

   	(if (not (exists "Sys:Locale"))
		(
			(makedir "Sys:Locale" (infos))

			(startup #ProgName
				(prompt #AskLocaleMsg)
				(help #AskLocaleHelp)
				(command #AskLocaleCmd)
			)

	   		(run ("Assign LOCALE: SYS:Locale"))		; Set Assign now


			(copyfiles
				(source (cat #InstallName ":Locale"))
				(dest "Sys:Locale/")
				(all)
				(optional "force")
			)
		)
	)


		(@CheckASL)
		(@CheckCommodities)
		(@CheckLocale)
	    (@CheckParse)
		(@CheckDiskFont)
		(@CheckAmigaGuide)


		(@FindHDDest)
		(@CreateDrawers)
    (@SetUpHDProgDests)
    (set @default-dest #DestDrawer)
(complete 20)
		(@DearchiveScreenFonts)
		(@DearchiveEnv-Archive)
		(@DearchiveEnv)
(complete 30)
		(@InstallProg)
		(@InstallSupplements)

		(if (not (exists "Sys:Prefs/Sound"))
			(
	  			(working #WorkingMsg)
				(set #UnpackFile (cat #ArchiveLocation #SoundArchiveName))
				(set #UnpackDest "Sys:Prefs/")
				(@UnpackFiles)
			)
		)
(complete 40)
		(@InstallSuppStorage)
(complete 50)

		(@InstallThemes)

		(if (not (exists (cat #SamplesDest "Harp")))
			(
				(@InstallHarp)
			)
		)
(complete 60)

		;// Install Catalogs
		(set #UnpackFile (cat #ArchiveLocation #CatalogsArchiveName))
		(set #UnpackDest (cat #HDCatalogsDest "/"))
		(@UnpackFiles)


		(@InstallFiles)
(complete 70)
		(@InstallTemplates)
		(@InstallHelp)


    (set #UnpackFile (cat #ArchiveLocation #DrawerInfoArchiveName))
    (set #UnpackDest (cat #ProgDest "/"))
    (@UnpackFiles)

(complete 80)

    (set #UnpackFile (cat #ArchiveLocation #HDInfoArchiveName))
    (set #UnpackDest #ProgDest)
    (@UnpackFiles)

    (set #UnpackFile (cat #ArchiveLocation #ProgramInfoArchiveName))
    (set #UnpackDest #ProgDest)
    (@UnpackFiles)


       	(
	        ;set default tool type for all Themed Diaries
	        (foreach #ThemesDest "#?"
	        	(
	        		(tooltype
	        			(dest (cat #ThemesDest @each-name))
	        			(setdefaulttool (cat #ProgDest #ProgName))
	        		)
	        	)
			)
		)


	)
	(
		;// Floppy
	  (set #ArchiveLocation "OrgTemp:")
    (@SetUpFloppyProgDests)
		(if (>= @user-level 2) ;expert only
			(
				(set #FormatChoice
					(askchoice
						(prompt #FormatChoiceprompt)
						(choices #FormatChoicemsg1 #FormatChoicemsg2)
						(help #FormatChoice-help)
						(default 0)
					)
				)
			)
		)

		;// if expert then check user wants to create disk 1
		(if (>= @user-level 2)
			(
				(set #CreateDiskChoice
					(askbool
						(prompt (cat #CreateDiskPrompt1 #MainDisk #CreateDiskPrompt2))
						(choices #ChoiceContinue #ChoiceSkip)
						(help #CreateDiskHelp)
						(default 1)
					)
				)
			)
		  (set #CreateDiskChoice 1)
		)

    (if (= @user-level 0)
      (
        (user 2)
        (set #UserNovice 1)
      )
    )
		(if (= #CreateDiskChoice 1)
			(@CreateDisk1)
		)
    (if (= #UserNovice 1)
      (user 0)
    )

		;// if expert then check user wants to create disk 2
		(if (>= @user-level 2)
			(
				(set #CreateDiskChoice
					(askbool
						(prompt (cat #CreateDiskPrompt1 #FilesDisk #CreateDiskPrompt2))
						(choices #ChoiceContinue #ChoiceSkip)
						(help #CreateFilesDiskHelp)
						(default 1)
					)
				)
			)
		  (set #CreateDiskChoice 1)
		)

    (if (= @user-level 0)
      (
        (user 2)
        (set #UserNovice 1)
      )
    )
		(if (= #CreateDiskChoice 1)
			(@CreateDisk2)
		)
    (if (= #UserNovice 1)
      (user 0)
    )

    (set @default-dest "")
	)
)

(complete 90)

	(set #InstallPrinter 1)

	(if (< #UserNovice 1) ; Intermediate or Expert only
		(
			(set #InstallPrinter
				(askbool
					(prompt #PrinterChoicePrompt)
					(choices #PrinterChoicemsg1 #PrinterChoicemsg2)
					(help #PrinterChoice-help)
					(default 0)
				)
			)
		)
	)

(if (= #InstallPrinter 1)
	(
		(@AddNewPrinter)
	)
)

(@CleanUp)
(complete 100)
(if (= #DestinationType "Hard")
	(exit)
	(exit #FloppyFinishedMsg)
)
