(set @default-dest "")      ;vi behöver ingen default-katalog
(set DISK_NAME "DMZ10")     ;Ändras för varje diskett
(set NO_HELP "")            ;Finns med temporärt

;följande används för avslutningstexten och checken om det finns plats för att packa upp programmet.
;En variabel för varje program.

(set E_HD 0)
(set prg_1 "")
(set E_HD_SIZE 1631930)

(set E_DISK 1)
(set prg_2 "")
(set E_DISK_SIZE 100000)

; Packar upp ett LHa-arkiv till ett ställe användaren bestämmer själv

(procedure UnPackLHA
	(message (cat ("Nu ska programmet %s packas upp. I nästa steg kommer " prg_name)
			  "installationsprogrammet att fråga dig efter ett lämpligt ställe att packa upp till. "
			  ("Installationsprogrammet kontrollerar även om det finns plats för %s.\n\n" prg_name)
			  "OBS! Väljer du RAM-disken kan programmet inte kontrollera om det finns plats "
			  "Du får själv se till att utrymmet är tillräckligt.\n\n"
			  ("%s behöver ca. %ld Bytes" prg_name prg_size)))
    (set directory
        (askdir
            (prompt "Välj ett ställe där det färdigt uppackde programmet ska hamna. OBS! Du "
                    "MÅSTE skapa en låda för programmet. Det gör du genom att klicka på knappen Make New Drawer...")
            (help "Här ska du välja ett ställe som programmet ska packas upp till. "
                  "Om det inte finns plats nog för detta meddelar installationsprogrammet detta "
                  "och ger dig möjlighet att välja ett annat ställe.")
            (default "RAM:")
        );askdir
    )

	(if (<> (getdevice directory) "RAM")
    (while (> prg_size (getdiskspace directory))(
        (message (Cat ("Det finns inte tillräckligt med plats på enhet %s: för att " (getdevice directory))
                      ("installera %s. Det lediga utrymmet på enheten är %ld Bytes " prg_name (getdiskspace directory))
                      ("Programmet behöver ca. %ld Bytes. Klicka på proceed och försök med ett annat ställe." prg_size)))

        (set directory
            (askdir
	            (prompt "Välj ett ställe där det färdigt uppackde programmet ska hamna. OBS! Du "
    	                "MÅSTE skapa en låda för programmet. Det gör du genom att klicka på knappen Make New Drawer...")
      			(help 	"Här ska du välja ett ställe som programmet ska packas upp till. "
                  		"Om det inte finns plats nog för detta meddelar installationsprogrammet detta "
                  		"och ger dig möjlighet att välja ett annat ställe.")
                (default "RAM:")
            );askdir
        );set directory
        (if (= directory "RAM:")
        	(set prg_size 0))
        )
    );while
	);if ram:

    (if (<> directory "")
        (   ; Lha vill ha ett '/'-tecken bakom en sökväg som inte är rooten till ett device
            (set space (getdiskspace directory))
            (if (<> (getdevice directory) "RAM")
                (if (< space prg_size)
                    (message "Här borde man ha kod för att välja ett annat ställe")
                )
            )

            (set str_len (strlen directory))
            (set last_letter (substr directory (- str_len 1)))
            (if (<> last_letter ":") (set directory (cat directory "/")))

            (working "Packar upp kompilatorn och modulerna...")
            (complete 20)
            (run ("DMZ10:c/lha x DMZ10:AmigaE01.lha \"%s\"" directory))
            (working "Packar upp dokumentationen...")
            (complete 40)
            (run ("DMZ10:c/lha x DMZ10:AmigaE02.lha \"%s\"" directory))
            (working "Packar upp källkoder och tillbehör...")
            (complete 60)
            (run ("DMZ10:c/lha x DMZ10:AmigaE03.lha \"%s\"" directory))

        )

        (abort ("Hoppar över programmet %s" prg_name))
    )
)


(procedure UnPack2Disk

(set diskbitmap
  (askoptions
    (prompt "Vilken diskett vill du installera?")
    (help   "Vill du bara packa upp ett program så bockar du bara för just det "
            "programmet. Det går naturligtvis att packa upp alla på en gång. "
            "Var beredd på att du behöver två eller tre tomma disketter för "
            "att få plats med allt.")
    (choices   "Kompilatorn och moduler"
               "Dokumentationen"
               "Källkoder och tillbehör")
    (default 7)
    )
)

(if (BITAND diskbitmap 1)
   (
	(copyfiles
		(source "DMZ10:AmigaE01.lha")
		(dest "ram:")
		)
	(complete 10)
	(working "Packar upp kompilatorn och modulerna till disketten AmigaE01...\nDet kommer att ta en stund "
				"eftersom det är många filer. Ni som enbart har en diskettstation och ingen hårddisk "
				"får leva med en del diskettbyten.")
	(run ("DMZ10:c/lha x ram:AmigaE01.lha AmigaE01:"))
	(complete 33)
	(delete "ram:AmigaE01.lha")
   )
)

(if (BITAND diskbitmap 2)
   (
	(copyfiles
		(source "DMZ10:AmigaE02.lha")
		(dest "ram:")
		)
	(complete 43)
	(working "Packar upp dokumentationen till disketten AmigaE02...\nDet kommer att ta en stund.")
	(run ("DMZ10:c/lha x ram:AmigaE02.lha AmigaE02:"))
	(rename "AmigaE02:docs/Beginner.guide" "AmigaE02:Beginner.guide")
	(rename "AmigaE02:docs/Beginner.guide.info" "AmigaE02:Beginner.guide.info")
	(rename "AmigaE02:docs/E.guide" "AmigaE02:E.guide")
	(rename "AmigaE02:docs/E.guide.info" "AmigaE02:E.guide.info")
	(delete "AmigaE02:docs")
	(delete "AmigaE02:docs.info")
	(delete "ram:AmigaE02.lha")
	(complete 66)
   )
)

(if (BITAND diskbitmap 4)
   (
	(copyfiles
		(source "DMZ10:AmigaE03.lha")
		(dest "ram:")
		)
	(complete 76)
	(working "Packar upp källkoder och tillbehör till disketten AmigaE03...\nDet kommer att ta en stund "
				"eftersom det är många filer. Ni som enbart har en diskettstation och ingen hårddisk "
				"får leva med en del diskettbyten.")
	(run "DMZ10:c/lha x ram:AmigaE03.lha AmigaE03:")
	(complete 99)
	(delete "ram:AmigaE03.lha")
   )
)

);UnPack2Disk

; main

(set prgbitmap
  (askchoice
    (prompt "Vilket/Vilka program vill du packa upp?")
    (help   "Vill du bara packa upp ett program så bockar du bara för just det "
            "programmet. Det går naturligtvis att packa upp alla på en gång. "
            "Var beredd på att du behöver två eller tre tomma disketter för "
            "att få plats med allt.")
    (choices   "Installera E på hårddisken"
               "Installera E på disketter")
    (default 0)
    )
)

(if (= prgbitmap E_HD)
    (
		(set prg_name "Amiga_E")
		(set prg_1 (cat prg_name "\n"))
   	(set prg_size E_HD_SIZE)
   	(complete 10)
   	(UnPackLHA)
   	(complete 80)
   	(set desti (cat directory "Assign_E"))
   	(textfile
   		(prompt "Skapar startfilen Assign_E. Se filen Läs_Mig_Först för en förklaring...")
   		(help NO_HELP)
   		(dest desti)
   		(append "assign emodules: modules\n")
   		)
   	(startup "Amiga_E"
  			(prompt "För att använda E måste en assign utföras. Detta kan göras automatiskt vid varje start av datorn. "
  					  "Vill du att installationsprogrmmet lägger följande till filen s:user-startup?\n\n"
  					  "assign emodules: " (cat directory "modules"))
  			(help	"Väljer du Skip this part måste du göra assignen manuellt varenda gång du vill programmera i E. Det kan du göra "
  					"genom att dubbelklicka på symbolen Assign_E i lådan Amiga_E. Men jag rekommenderar att du permanentar assignen "
  					"genom att välja Proceed.")
  			(command (cat (cat "assign emodules: " (cat directory "modules")) (cat "\npath " (cat directory "bin add"))))
  			)
	   	(complete 99)
  		)
	);if E_HD

(if (= prgbitmap E_DISK)
	(
  		(message	"För att kunna installera Amiga_E på ett diskettbaserat system behövs det tre tomma disketter. "
  					"Om du vill formatera disketter så kan du göra det nu och fortsätta installationen efter det. "
  					"Om du är osäker är det bäst att du avbryter installationen med Abort install och börjar om när "
  					"du har formaterat tre disketter.\nDe tre disketterna MÅSTE heta AmigaE01, AmigaE02 och AmigaE03.")
   	(set prg_name "Amiga_E")
   	(UnPack2Disk)
	)
)

(complete 100)
(message "Installationen av Amiga E är klar nu. Jag kan bara rekommendera att du läser artiklarna kring E i Datormagazin "
			"och kastar en blick i dokumentationen. Jag tycker även att texten Beginners.guide är mycket bra. Den är "
			"visserliggen på engelska men är en utmärkt introduktion för alla som inte har programmerat tidigare.\n\n"
			"Mycket nöje med E!")

(exit (quiet))
