;=============================================================================;
;
; $VER: DT_Install 2.14 (26.04.1995)
;
; Installation script for DeliTracker II
; (c) Copyright 1994-95 by Frank Riffel and Peter Kunath
;
;=============================================================================;
;=============================================================================;
;=============================================================================;
;
; This is a quick description how this script works:
;
; 1.INIT_STUFF
;
; 2.CHECK_INSTALLED_VERSION:
;	NO_VERSION  => CHOOSE_DESTINATION
;		       (suggestion Work: or SYS:)
;	OLD_VERSION => UNINSTALL_OLD
;	NEW_VERSION => EXIT
;
; 3.MAIN							~ 80K
;
; 4.PLAYERS (default players, ask further players to install)	~350K
; 
; 5.ASK PLAYSID							~ 20K
;
; 6.ASK DELIAY							~ 30K
;
; 7.GENIES (default genies, ask further genies to install)	~250K
;
; 8.AREXX (ask user)						~ 15K
;
; 9.LIBS (ask user, suggested)					~ 40K
;
; 10.DOCS (depending on language)				~110k
;
; 11.DEVELOPER_DOCS (ask only ADVANCED)				~160K
;								======
;							TOTAL  ~1000K
;=============================================================================;
;=============================================================================;
;=============================================================================;
;
; Some initial stuff like kick version check, lanugage selection, ...

(if (= @LANGUAGE "english")
 (
  (set def_pat "#?.doc#?")

  (set #bad-kick
  (cat "DeliTracker 2.0 will only run under Kickstart 2.04 or above!"
  ))

  (set #abort-t
  (cat "Make sure that T: is big enough to hold 500KB."
  ))

  (set #invalid-env
  (cat "\nENV:DeliConfig doesn't point to a valid directory. It has been deleted.\n\n If you want to install DeliTracker you can run this script again."
  ))
 
  (set #abort-no-space
  (cat "You need at least 850.000 Bytes of free store to install DeliTracker II"
  ))

  (set #choose-text
  (cat "Please choose a directory where DeliTracker should be installed! A drawer will be created there."
  ))

  (set #choose-help
  (cat "In this location a drawer will be created. All files exept the libraries will be installed inside this drawer. The complete installation will require about 1MB of free harddisk space."
  ))

  (set #create-maindir
  (cat "Creating DeliTracker directory"
  ))

  (set #create-configdir
  (cat "Creating Config directory"
  ))

  (set #set-path
  (cat "Setting up configuration path"
  ))

  (set #inst-main
  (cat "Installing main program."
  ))

  (set #create-docsdir
  (cat "Creating Docs dir"
  ))

  (set #inst-docs
  (cat "Installing program documentation"
  ))

  (set #ask-xpk
  (cat "Do you whish to install the decompression libraries?"
  ))

  (set #xpk-help
  (cat "It's suggested that you install the decompression libraries, even if you currently don't have packed modules!"
  ))

  (set #create-comressorsdir
  (cat "Creating Libs:Compressors dir"
  ))

  (set #create-playerdir
  (cat "Creating Player dir"
  ))

  (set #create-playerstore
  (cat "Creating PlayerStore"
  ))

  (set #ask-players
  (cat "Which Players should be activated?"
  ))

  (set #ask-additional-players
  (cat "Activate further players ? These players that are not widespread. The average user won't need them to be activated. We suggest that you select 'NO'!"
  ))

  (set #ask-players-2
  (cat "Which additional Players should be activated? Think twice before selecting!"
  ))

  (set #ask-playsid
  (cat "Would you like to install the PlaySID deliplayer?\nNote: This deliplayer uses the playsid.library, which is SHAREWARE!. Please read the supplied documentation for further information."
  ))

  (set #ask-deliay
  (cat "Would you like to install the DeliAY deliplayer?\n(This player emulates the AY soundchip of the ZX Spectrum)"
  ))

  (set #player-help
  (cat "Select those players you want to be loaded at startup. Please choose only those players you REALY need and you have modules for. All others will be installed in the PlayerStore directory so you may load them later."
  ))

  (set #create-geniedir
  (cat "Creating Genie dir"
  ))

  (set #create-geniestore
  (cat "Creating GenieStore"
  ))

  (set #ask-genies
  (cat "Which genies should be activated?"
  ))

  (set #ask-xmas
  (cat "Do you want to install the X-Mas '94 genie?"
  ))

  (set #genie-help
  (cat "All genies that are not activated will be installed in the GenieStore directory. For the further informations about particular genies read genie.doc."
  ))

  (set #ask-arexx
  (cat "Do you whish to install ARexx scripts?"
  ))

  (set #help-arexx
  (cat "Only choose if you realy use Rexx!"
  ))

  (set #create-arexx
  (cat "Creating Arexx dir"
  ))

  (set #ask-pdocs
  (cat "Do you whish to install Programming documentation?"
  ))

  (set #help-pdocs
  (cat "Only choose if you plan to write your own players or genies."
  ))

  (set #create-pdocs
  (cat "Creating Developer dir"
  ))

  (set #extract-players
  (cat "Extracting Players"
  ))

  (set #extract-genies
  (cat "Extracting Genies"
  ))

  (set #extract-arexx
  (cat "Extracting Arexx Scrips"
  ))

  (set #extract-docs
  (cat "Extracting Docs"
  ))

  (set #extract-libs
  (cat "Extracting Libs"
  ))

  (set #extract-pdocs
  (cat "Extracting development stuff"
  ))
   
  (set #final-msg
  (cat "To configure the genies repeat the following steps for each genie:\n\n1. Open the genie GUI with the 'Show' function.\n\n2. Activate the window and move it to the position where it should pop up.\n\n3. Set your defaults. You will find various options in the 'Settings' Menu. In particular: If you want the window to be opened every time DeliTracker is started turn 'Popup' on.\n\n4. Select 'Save Prefs' form the 'Project' Menu.\n"
  ))

  ; Update Strings

  (set #remove-old
  (cat "All old files will be removed."
  ))

  (set #proceed
  (cat "Proceed"
  ))

  (set #abort
  (cat "Abort"
  ))

  (set #remove-old-help
  (cat "If you like to keep your current installation you have to delete ENV:DELICONFIG and run this script again. Make sure that you select a different location for the new installation."
  ))

  (set #removeing-dt
  (cat "Removeing old files."
  ))

  (set #already-newer-installed
  (cat "The installation was aborted beacuse this or a newer version is already installed."
  ))

  (set #update-msg
  (cat "\n\nDeliTracker is SHAREWARE.\n\nIt seems that you use DeliTracker frequently. If you have not registered yet, please register now."
  ))
 )
)

; german strings

(if (= @LANGUAGE "deutsch")
 (
  (set def_pat "#?.dok#?")

  (set #bad-kick
  (cat "DeliTracker 2.0 bentigt mindenstens Kickstart 2.04!"
  ))

  (set #abort-t
  (cat "Das T: Verzeichnis mu mindestens 500KB Platz zum Entpacken verschiedener Dateien bieten."
  ))

  (set #invalid-env
  (cat "\nENV:DeliConfig enthlt eine ungltige Pfandangabe und wurde gelscht.\n\n Starten Sie dieses Skript nochmal, um DeliTracker neu zu installieren."
  ))

  (set #abort-no-space
  (cat "Sie bentigen mindestens 850.000 Bytes freien Plattenplatz um DeliTracker zu installieren."
  ))

  (set #choose-text
  (cat "Bitte whlen Sie das Verzeichniss wohin DeliTracker installiert werden soll. Dieses Installationsscript legt dort selbst eine Schublade an."
  ))

  (set #choose-help
  (cat "Bei der Installation werden alle Dateien, bis auf die Libraries, in dieses Verzeichniss installiert. Die vollstndige Installation von DeliTracker belegt auf der Festplatte etwa 1MB."
  ))

  (set #create-maindir
  (cat "Erstelle DeliTracker-Verzeichniss"
  ))

  (set #create-configdir
  (cat "Erstelle Konfigurations-Verzeichniss"
  ))

  (set #set-path
  (cat "Erstelle Pfad-Variable"
  ))

  (set #inst-main
  (cat "Installiere Hauptprogramm."
  ))

  (set #create-docsdir
  (cat "Erstelle Docs-Verzeichniss"
  ))

  (set #inst-docs
  (cat "Installiere Programm Dokumentation"
  ))

  (set #ask-xpk
  (cat "Wollen Sie die XPK Packer-Libraries installieren?"
  ))

  (set #xpk-help
  (cat "Sie sollenten die Packer-Libraries auch dann installieren, wenn Sie (noch) keine gepackten Module besitzen!"
  ))

  (set #create-comressorsdir
  (cat "Erstelle Libs:Compressors Unterverzeichniss"
  ))

  (set #create-playerdir
  (cat "Erstelle Player-Verzeichniss"
  ))

  (set #create-playerstore
  (cat "Erstelle PlayerStore"
  ))

  (set #ask-players
  (cat "Welche Player sollen aktiviert werden werden?"
  ))

  (set #ask-additional-players
  (cat "Sollen zustzliche Player aktiviert werden? Hierbei handelt es sich um Player die nicht sehr Verbreitet sind. Der normale Benutzer wird diese Player nicht bentigen. Wir schlagen deshalb vor, das Sie mit 'NEIN' fortfahren."
  ))   

  (set #ask-players-2
  (cat "Welche zustzlichen Player sollen bei Programmstart geladen werden?"
  ))

  (set #ask-playsid
  (cat "Wollen sie den PlaySID Player fr DeliTracker installieren ?\nHinweis: Dieser DeliPlayer benutzt die playsid.library. Diese Library ist SHAREWARE! Fr weitere Informationen lesen sie bitte die zugehrige Dokumentation."
  ))

  (set #ask-deliay
  (cat "Wollen Sie den DeliAY Player installieren?\n(Dieser Player emuliert den AY Soundchip des ZX Spectrum)"
  ))

  (set #player-help
  (cat "Bitte whlen Sie nur Player fr die Sie auch Module besitzen. Nicht angewhlete Player werden im Playerstore installiert. Sie knnen diese Player bei Bedarf spter immer noch nachladen."
  ))

  (set #create-geniedir
  (cat "Erstelle Genie Verzeichniss"
  ))

  (set #create-geniestore
  (cat "Erstelle GenieStore"
  ))

  (set #ask-genies
  (cat "Welche zustzlichen Genies sollen bei Programmstart geladen werden?"
  ))

  (set #ask-xmas
  (cat "Soll das '94 Weihnachts Genie installiert werden?"
  ))

  (set #genie-help
  (cat "Alle Genies die nicht aktiviert werden sind im GenieStore zu finden. Weitere Informationen finden Sie in Genies.dok."
  ))

  (set #ask-arexx
  (cat "Wollen Sie die ARexx scripts installieren?"
  ))

  (set #help-arexx
  (cat "Whlen Sie diese Option nur wenn Sie Arexx auch benutzen."
  ))

  (set #create-arexx
  (cat "Erstelle Arexx-Verzeichniss"
  ))

  (set #ask-pdocs
  (cat "Wollen Sie die Programmierdokumentation installieren?"
  ))

  (set #help-pdocs
  (cat "Whlen Sie diese Option nur, wenn Sie eigene Player oder Genies schreiben wollen. Hinweis: Die Entwicklerdokumentation ist fr Assemblerprogramierer gedacht und ist nur in Englisch verfgbar!"
  ))

  (set #create-pdocs
  (cat "Erstelle Developer-Verzeichniss"
  ))

  (set #extract-players
  (cat "Entpacke Player"
  ))

  (set #extract-genies
  (cat "Entpacke Genies"
  ))

  (set #extract-arexx
  (cat "Entpacke Arexx Scrips"
  ))

  (set #extract-docs
  (cat "Entpacke Dokumentation"
  ))

  (set #extract-libs
  (cat "Entpacke Libraries"
  ))

  (set #extract-pdocs
  (cat "Entpacke Entwicklungspaket"
  ))

  (set #final-msg
  (cat "Um die Genies zu konfigurieren, wiederholen Sie folgende Schritte fr jedes Genie:\n\n1. ffnen Sie die zugehrige GUI mit der 'Show' Funktion.\n2. Aktivieren Sie das Fenster und positionieren Sie es an der gewnschten Stelle.\n3. Stellen Sie die Optionen nach Bedarf ein. Sie finden die Einstellungen im 'Settings' Men. Wenn Sie wnschen, da dieses Fenster bei jedem Start von DeliTracker geffnet wird, schalten Sie 'Popup' an.\n4. Whlen Sie den Menpunkt 'Save Prefs' aus dem 'Project' Men."
  ))

  ; Update Strings

  (set #remove-old
  (cat "Es werden jetzt alle alten Dateien gelscht."
  ))
  
  (set #proceed
  (cat "Weiter"
  ))

  (set #abort
  (cat "Abbrechen"
  ))

  (set #remove-old-help
  (cat "Wenn Sie Ihre alte Installation behalten wollen mssen Sie ENV:DELICONFIG lschen und dieses Script erneut starten. Installieren Sie die neue Version unbedingt in einem anderen Directory."
  ))

  (set #removeing-dt
  (cat "Entferne alte Dateien."
  ))

  (set #already-newer-installed
  (cat "Die Installation wurde abgebrochen, da bereits eine neuere Version installiert ist!"
  ))

  (set #update-msg
  (cat "\n\nDeliTracker ist SHAREWARE.\n\nDa Sie scheinbar DeliTracker fter benutzen, sollten Sie sich, falls Sie das noch nicht getan haben, registrieren!"
  ))
 )
)

; check kick version

(if (< (/ (getversion) 65536) 37) (abort #bad-kick))

; say hi 
(welcome)
(complete 0)

;=============================================================================;
; Choose directory where DeliTracker is/will be installed.
; (Check for enough room)
;
(if (exists "ENV:DELICONFIG" (noreq))
 (
  (set @default-dest (getenv "DELICONFIG"))
  (set @default-dest (substr @default-dest 0 (- (strlen @default-dest) 11)))

  ; check ENV Variable
  (if (NOT (exists @default-dest (noreq)))
   (
    (delete "ENV:DELICONFIG")
    (abort #invalid-env)
   )
  )

  ; check installed version
  (if (> (BITAND 65535 (getversion ("DeliTracker2"))) (BITAND 65535 (getversion (tackon @default-dest "DeliTracker2"))))
   (    
    (if (= 1 (askbool (prompt #remove-old) (help #remove-old-help) (choices #proceed #abort)))
     (
      (working #removeing-dt)
      (if (= 2 (exists @default-dest))
       (; delete all files in the DeliTracker2 drawer
        (foreach (tackon @default-dest "DeliPlayers/PlayerStore") "#?" (delete (tackon (tackon @default-dest "DeliPlayers/PlayerStore") @each-name)))
        (foreach (tackon @default-dest "DeliPlayers") "#?" (delete (tackon (tackon @default-dest "DeliPlayers") @each-name)))
        (foreach (tackon @default-dest "DeliGenies/GenieStore") "#?" (delete (tackon (tackon @default-dest "DeliGenies/GenieStore") @each-name)))
        (foreach (tackon @default-dest "DeliGenies") "#?" (delete (tackon (tackon @default-dest "DeliGenies") @each-name)))
        (foreach (tackon @default-dest "Docs") "#?" (delete (tackon (tackon @default-dest "Docs") @each-name)))
        (if (= 2 (exists (tackon @default-dest "Arexx")))
         (
          (foreach (tackon @default-dest "ARexx") "#?" (delete (tackon (tackon @default-dest "ARexx") @each-name)))
          (delete (tackon @default-dest "ARexx.info"))
          (delete (tackon @default-dest "ARexx"))
         )
        )
        (if (= 2 (exists (tackon @default-dest "Developer")))
         (
          (foreach (tackon @default-dest "Developer/Include/Misc") "#?" (delete (tackon (tackon @default-dest "Developer/Include/Misc") @each-name)))
          (foreach (tackon @default-dest "Developer/Include") "#?" (delete (tackon (tackon @default-dest "Developer/Include") @each-name)))
          (foreach (tackon @default-dest "Developer/Examples/Custom") "#?" (delete (tackon (tackon @default-dest "Developer/Examples/Custom") @each-name)))
          (foreach (tackon @default-dest "Developer/Examples") "#?" (delete (tackon (tackon @default-dest "Developer/Examples") @each-name)))
          (foreach (tackon @default-dest "Developer") "#?" (delete (tackon (tackon @default-dest "Developer") @each-name)))
          (delete (tackon @default-dest "Developer.info"))
          (delete (tackon @default-dest "Developer"))
         )
        )
       )
      )

      ; for those who have moved DeliTracker into the WBStartUp drawer
      (delete "SYS:WBStartUp/DeliTracker2")
      (delete "SYS:WBStartUp/DeliTracker2.info")
      ; remind shareware
      (message #update-msg)
     )
     (exit "Bye Bye ...")
    )
   )
   (abort #already-newer-installed)
  )
 )

 ; CHOOSE_DESTINATION

 (
  (if (= "RAM" (getdevice "T:"))
   (set freespace (+ (database "total-mem")))
   (set freespace (getdiskspace ("%s:" (getdevice "T:"))))
  )
  (if (< freespace 500000)
    (abort #abort-t))
  
  (set @default-dest (getassign "Work" "dva"))
  (if (= @default-dest "")
   (set @default-dest "SYS:"))
  
  (set @default-dest (askdir
    (prompt #choose-text)
    (help #choose-help)
    (default @default-dest))
  ) 
  
  (set @default-dest (tackon @default-dest "DeliTracker_II"))
  
  (if (NOT (= "RAM" (getdevice @default-dest)))
   (if (> 850000 (getdiskspace ("%s:" (getdevice @default-dest))))
    (abort #abort-no-space)
   )
  )
 )
)

(complete 5)

;=============================================================================;
; Install procedure for DeliTracker itself

(copyfiles (source "c/LhX") (dest "T:"))

(makedir @default-dest (prompt #create-maindir)(infos))
(makedir (tackon @default-dest "DeliConfig") (prompt #create-configdir))
(copyfiles (prompt #inst-main)
 (source "DeliTracker2")
 (dest @default-dest)
 (optional "fail")
 (infos)
)

(complete 10)

;=============================================================================;
; Installation procedure for players
; 

(makedir (tackon @default-dest "DeliPlayers")
 (prompt #create-playerdir)
 (infos)
)

(makedir (tackon @default-dest "DeliPlayers/PlayerStore")
 (prompt #create-playerstore)
 (infos)
)

(working #extract-players)
(run "T:LhX -x x Files/players.lha T:")

(
 (copyfiles (prompt #ask-players)
  (help #player-help)
  (source "T:DeliPlayers/")
  (dest (tackon @default-dest "DeliPlayers"))
  (optional "nofail")
  (confirm "average")
  (files)
  (all)
 )
)

(if (= 1 (askbool (prompt #ask-additional-players) (help @help-askbool)))
 (
  (
   (copyfiles (prompt #ask-players-2)
   (help #player-help)
   (source "T:DeliPlayers/Playerstore")
   (dest (tackon @default-dest "DeliPlayers"))
   (optional "nofail")
   (confirm "average")
   (files)
   (all)
   )
  )
 )
)

(foreach (tackon @default-dest "DeliPlayers") "#?" (delete (tackon "T:DeliPlayers/" (fileonly @each-name))))
(foreach (tackon @default-dest "DeliPlayers") "#?" (delete (tackon "T:DeliPlayers/PlayerStore/" (fileonly @each-name))))
(copyfiles (source "T:DeliPlayers/Playerstore")
	   (dest (tackon @default-dest "DeliPlayers/PlayerStore"))
	   (files)
	   (all)
)
(foreach "T:DeliPlayers/Playerstore" "#?" (delete (tackon "T:DeliPlayers/PlayerStore/" (fileonly @each-name))))
(delete "T:DeliPlayers/Playerstore")
(copyfiles (source "T:DeliPlayers") 
	   (dest (tackon @default-dest "DeliPlayers/PlayerStore"))
	   (files)
	   (all)
)
(foreach "T:DeliPlayers" "#?" (delete (tackon "T:DeliPlayers/" (fileonly @each-name))))
(delete "T:DeliPlayers")

(complete 60)

;=============================================================================;
; Installation procedure for PlaySID
; 

(if (= 1 (askbool (prompt #ask-playsid) (help @help-askbool)))
 (
  (
   (working #extract-players)
   (run "T:LhX x Bonus/DeliSID.lha DeliSID T:")
   (run "T:LhX x Bonus/playsid3.lha PlaySID3.0/PlaySID.doc PlaySID3.0/PlaySID.doc.info PlaySID3.0/libs/playsid.library T:")

   (copyfiles (help #player-help)
    (source "T:DeliSID")
    (dest (tackon @default-dest "DeliPlayers"))
   )

   (copyfiles (help #player-help)
    (source "T:PlaySID3.0/PlaySID.doc.info")
    (dest (tackon @default-dest "Docs"))
   )

   (copyfiles (help #player-help)
    (source "T:PlaySID3.0/PlaySID.doc")
    (dest (tackon @default-dest "Docs"))
   )

   (copylib (prompt "The playsid.library is required for DeliSID")
    (source "T:PlaySID3.0/libs/playsid.library")
    (dest "libs:")
    (help @copylib-help)
   )
   (delete "T:DeliSID")
   (delete "T:PlaySID3.0/PlaySID.doc.info")
   (delete "T:PlaySID3.0/PlaySid.doc")
   (delete "T:PlaySID3.0/libs/playsid.library")
   (delete "T:PlaySID3.0/libs")
   (delete "T:PlaySID3.0")
  )
 )
)

(complete 65)

;=============================================================================;
; Installation procedure for DeliAY
; 

(if (= 1 (askbool (prompt #ask-deliay) (help @help-askbool)))
 (	
  (
   (working #extract-players)
   (run "T:LhX x Bonus/deliay.lha DeliAY/#?readme#? DeliAY/AYPlayers/#? DeliAY/DeliPlayers/#? T:")

   ; copy docs 
   (copyfiles (help #player-help)
    (source "T:DeliAY/DeliAY.readme.info")
    (dest (tackon @default-dest "Docs"))
   )   
   (copyfiles (help #player-help)
    (source "T:DeliAY/DeliAY.readme")
    (dest (tackon @default-dest "Docs"))
    (files)
   )

   ; copy DeliAY player
   (copyfiles (help #player-help)
    (source "T:DeliAY/DeliPlayers/DeliAY")
    (dest (tackon @default-dest "DeliPlayers"))
   )

   ; let's make a new sub-player directory
   (makedir (tackon @default-dest "AYPlayers")
   (prompt #create-playerdir)
   )
 
   ; copy sub-players
   (copyfiles (help #player-help)
    (source "T:DeliAY/AYPlayers")
    (dest (tackon @default-dest "AYPlayers"))
    (files)
    (all)
   )

   ; delete temporary files 
   (foreach "T:DeliAY/AYPlayers/" "#?" (delete (tackon "T:DeliAY/AYPlayers/" @each-name) (optional force)))
   (foreach "T:DeliAY/DeliPlayers/" "#?" (delete (tackon "T:DeliAY/DeliPlayers/" @each-name) (optional force)))
   (foreach "T:DeliAY/" "#?" (delete "T:DeliAY/" (tackon "T:DeliAY/" @each-name) (optional force)))
   (delete "T:DeliAY")

  )
 )
)

(complete 66)

;=============================================================================;
; Installation procedure for genies
; Install default genies
; Average, Expert: ask optional genies

(makedir (tackon @default-dest "DeliGenies")
 (prompt #create-geniedir)
 (infos)
)

(makedir (tackon @default-dest "DeliGenies/GenieStore")
 (prompt #create-geniestore)
 (infos)
)

(working #extract-genies)
(run ("T:LhX -x x Files/genies.lha \"%s/\"" @default-dest))

(if (OR (= "68000" (database "cpu") (= "68010" (database "cpu"))))
 ; remove NotePlayers on 68000er Systems that require at least a '020
 (
  (delete (tackon @default-dest "DeliGenies/GenieStore/14Bit-NotePlayer"))
  (delete (tackon @default-dest "DeliGenies/GenieStore/32Voc-NotePlayer"))
  (delete (tackon @default-dest "DeliGenies/GenieStore/32Voc-NotePlayerPlus"))
  (delete (tackon @default-dest "DeliGenies/GenieStore/ModSave-NotePlayer"))
 )
 ; remove obsolete NotePlayers for 68020+ Systems
 (
  (delete (tackon @default-dest "DeliGenies/8Voc-NotePlayer"))
 )
)

(
 (copyfiles (prompt #ask-genies)
  (help #genie-help)
  (source (tackon @default-dest "DeliGenies/Geniestore"))
  (dest (tackon @default-dest "DeliGenies"))
  (optional "nofail")
  (confirm "average")
  (files)
  (all)
 )
)

(foreach (tackon @default-dest "DeliGenies") "#?" (delete (tackon (tackon @default-dest "DeliGenies/GenieStore/") (fileonly @each-name))))

(complete 75)

;=============================================================================;
; Installation procedure for X-Mas Genie
; 

(if (= 1 (askbool (prompt #ask-xmas) (help @help-askbool)))
 (	
  (
   (working #extract-genies)
   (run "T:LhX x Bonus/X-Mas.lha Xmas-Genie T:")
   
   (copyfiles (help #genies-help)
    (source "T:Xmas-Genie")
    (dest (tackon @default-dest "DeliGenies"))
   )

   (delete "T:Xmas-Genie")
  )
 )
)

(complete 76)

;=============================================================================
; Installation procedure for Arexx Scripts

(if (< 0 @user-level)
 (if (= 1 (askbool (prompt #ask-arexx) (help #help-arexx)))
  (
   (makedir (tackon @default-dest "Arexx")
    (prompt #create-arexx)
    (infos)
   )
   (working #extract-arexx)
   (run ("T:LhX -x x Files/arexx.lha \"%s/\"" @default-dest))
  )
 )
)

(complete 80)

;=============================================================================;
; Install procedure for the decompression libraries

(if (OR (= 0 @user-level) (if (< 0 @user-level) (askbool (prompt #ask-xpk) (help #xpk-help))))
 (
  (makedir "Libs:Compressors" (prompt #create-comressorsdir))
  (working #extract-libs)
  (run "T:LhX -x x Files/libs.lha >NIL: <NIL: T:")  
  (run "T:LhX x Files/xpkSMPL.lha xpkSMPL.library >NIL: <NIL: T:libs/compressors/")
  (run "T:LhX x Files/xpkSHRI.lha xpkSHRI.library >NIL: <NIL: T:libs/compressors/")
  (run "T:LhX x Files/xpkSQSH.lha >NIL: <NIL: T:libs/")

  (copylib (prompt "Install xpkmaster.library")
  (source "T:libs/xpkmaster.library")
  (dest "libs:")
  (confirm)
  (optional nofail askuser)
  (help @copylib-help)
  )

  (copylib (prompt "Install powerpacker.library")
  (source "T:libs/powerpacker.library")
  (dest "libs:")
  (confirm)
  (optional nofail askuser)
  (help @copylib-help)
  )

  ; xpk sub lib's
  
  (copylib (prompt "Install compressors/xpkNUKE.library")
  (source "T:libs/compressors/xpkNUKE.library")
  (dest "libs:compressors/")
  (confirm)
  (optional nofail askuser)
  (help @copylib-help)
  )

  (copylib (prompt "Install compressors/xpkSMPL.library")
  (source "T:libs/compressors/xpkSMPL.library")
  (dest "libs:compressors/")
  (confirm)
  (optional nofail askuser)
  (help @copylib-help)
  )

  (copylib (prompt "Install compressors/xpkSHRI.library")
  (source "T:libs/compressors/xpkSHRI.library")
  (dest "libs:compressors/")
  (confirm)
  (optional nofail askuser)
  (help @copylib-help)
  )

  ; install right version for 680x0 cpu
  (if (OR (= "68000" (database "cpu") (= "68010" (database "cpu"))))
   (copylib (prompt "Install compressors/xpkSQSH.library")
    (source "T:libs/68000/xpkSQSH.library")
    (dest "libs:compressors/")
    (confirm)
    (optional nofail askuser)
    (help @copylib-help)
   )
   (copylib (prompt "Install compressors/xpkSQSH.library")
    (source "T:libs/68020/xpkSQSH.library")
    (dest "libs:compressors/")
    (confirm)
    (optional nofail askuser)
    (help @copylib-help)
   )
  )

  ; cleanup temp dir

  (foreach "T:libs/compressors" "#?" (delete (tackon "T:libs/compressors/" @each-name) (optional force)))
  (foreach "T:libs/" "#?" (delete (tackon "T:libs/" @each-name) (optional force)))
  (delete "T:libs/68000/xpkSQSH.library")
  (delete "T:libs/68020/xpkSQSH.library")
  (delete "T:libs/68000")
  (delete "T:libs/68020")
  (delete "T:libs")

 )
)

(complete 90)

;=============================================================================;
; Install procedure for the documentation files

(makedir (tackon @default-dest "Docs")
 (prompt #create-docsdir)
 (infos)
)

(working #extract-docs)
(run "T:LhX -x x Files/docs.lha >NIL: <NIL: -x T:")

(copyfiles (prompt #inst-docs)
 (source "T:Docs/")
 (dest (tackon @default-dest "Docs"))
 (pattern def_pat)
 (optional "nofail")
 (infos)
 (files)
)

; cleanup temp dir

(foreach "T:Docs/" "#?" (delete (tackon "T:Docs/" @each-name) (optional force)))
(delete "T:Docs" (optional force))

(complete 95)

;=============================================================================;
; Installation procedure for Development Documentation

(if (= 2 @user-level)
 (if (= 1 (askbool (prompt #ask-pdocs) (help #help-pdocs)))
  (
   (makedir (tackon @default-dest "Developer")
    (prompt #create-pdocs)
    (infos)
   )
   (makedir (tackon @default-dest "Developer/Examples")
    (prompt #create-pdocs)
    (infos)
   )
   (makedir (tackon @default-dest "Developer/Includes")
    (prompt #create-pdocs)
    (infos)
   )

   (working #extract-pdocs)
   (run ("T:LhX -x x Files/developer.lha \"%s/\"" @default-dest))

   (if (= @language "english")
    (
    (delete (tackon @default-dest "Developer/Developer.dok"))
    (delete (tackon @default-dest "Developer/Developer.dok.info"))
    )
    (
    (delete (tackon @default-dest "Developer/Developer.doc"))
    (delete (tackon @default-dest "Developer/Developer.doc.info"))
    )
   )
  )
 )
)

;=============================================================================;
; Set environment variables for configuration path

(complete 98)

(textfile (prompt #set-path) (dest "ENV:DeliConfig") (append (expandpath (tackon @default-dest "DeliConfig")))) 

; this makes testing easier...
(if (NOT (= "RAM" (getdevice @default-dest)))
 (textfile (prompt #set-path) (dest "ENVARC:DeliConfig") (append (expandpath (tackon @default-dest "DeliConfig")))) 
)

;=============================================================================;
; Cleanup & tell some important things!

(delete "T:LhX")
(complete 99)
(message #final-msg)
(complete 100)

;=============================================================================;
