(set @default-dest "")      ;vi behöver ingen default-katalog
(set DISK_NAME "DMZ09")     ;Ä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 MWB 1)
(set prg_1 "")
(set MWB_SIZE 875659)

(set TI 2)
(set prg_2 "")
(set TI_size 489861)

(set BP 4)
(set prg_3 "")
(set BP_SIZE 74982)

(set DSD 8)
(set prg_4 "")
(set DSD_SIZE 40268)

(set AN 16)
(set prg_5 "")
(set AN_SIZE 230593)

; 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. Du "
                    "behöver inte skapa en låda för programmet. Det görs automatiskt.")
            (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. Du "
                        "behöver inte skapa en låda för programmet. Det görs automatiskt.")
      			(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 programet %s\nDet tar en liten stund..." prg_name))
            (run ("%s:c/lha x %s:program/%s.lha \"%s\"" DISK_NAME DISK_NAME prg_name directory))
        )

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

; main

(set prgbitmap
  (askoptions
    (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 "MagicWorkbench"
             "TauIcons"
             "BootPic"
             "DiskSpareDevice"
             "Annotade")
    (default 0) ; inga program förbockade från början
  )
)

(if (BITAND prgbitmap MWB)
    (
		(set prg_name "MagicWB")
		(set prg_1 (cat prg_name "\n"))
      (set prg_size MWB_SIZE)
	  	(UnPackLHA)
    )
)

(if (BITAND prgbitmap TI)
	(
		(set prg_name "TauIcons")
      (set prg_2 (cat prg_name "\n"))
      (set prg_size TI_SIZE)
	   (UnPackLHA)
   )
)

(if (BITAND prgbitmap BP)
	(
  		(set prg_name "BootPic")
  		(set prg_3 (cat prg_name "\n"))
  		(set prg_size BP_SIZE)
   	(UnPackLHA)
  	)
)

(if (BITAND prgbitmap DSD)
	(
   		(set prg_name "DiskSpare")
   		(set prg_4 (cat prg_name "\n"))
   		(set prg_size DSD_SIZE)
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap AN)
	(
   		(set prg_name "Annotade")
   		(set prg_4 (cat prg_name "\n"))
   		(set prg_size AN_SIZE)
	   	(UnPackLHA)
   	)
)

(message ("Följande program blev installerade:\n\n%s%s%s%s%s" prg_1 prg_2 prg_3 prg_4 prg_5))
(exit (quiet))