;=============================================================================;
;
; $VER: DT_Install 2.0 (15.04.1994)
;
; Installation script for DeliTracker 2.0
; (c) Copyright 1994 by Frank Riffel and Peter Kunath
;
;=============================================================================;
;=============================================================================;
;=============================================================================;
;
; This is a quick description how this script works:
;
; 1.INIT_STUFF
;
; 2.CHOOSE_DESTINATION
; 	NOVICE: Work:, if mounted, or SYS: if not.
; 	AVERAGE, ADVANCED: ask (Work: suggested)
;
; 3.MAIN 						~ 80K
;
; 4.PLAYERS						~300K
; 	NOVICE: default players, other in playerstore
; 	AVERAGE, ADVANCED: ask further players to install
;
; 5.GENIES						~140K
; 	NOVICE: default genies, other in geniestore
; 	AVERAGE, ADVANCED: ask further genies to install
;
; 6.AREXX						~ 15K
; 	NOVICE: no
; 	AVERAGE, ADVANCED: ask user
;
; 7.LIBS						~ 40K
; 	NOVICE: install decompression libs
; 	AVERAGE: ask user (suggested)
; 	ADVANCED: ask (may keep older lib versions)
;
; 8.DOCS ALL: depending on language			~100k
;
; 9.DEVELOPER_DOCS					~160K
; 	NOVICE, AVERAGE: no
; 	ADVANCED: ask user
;							======
;						TOTAL	 850K
;=============================================================================;
; 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 #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' 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 #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 #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 "When you start DeliTracker the first time a lot of windows will pop up. Don't close them at the moment! Move them around as you like. Repeat the following steps for each window:\n\n1) Activate the window\n\n2) Set your defaults. You will find various options in the 'Settings' Menu. In particular: If you don't want the window to be opened every time DeliTracker is started turn 'Popup' off (no checkmark).\n\n3) Select 'Save Prefs' form the 'Project' Menu.\n"
  ))
 )
)

; german strings

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

  (set #bad-kick
  (cat "DeliTracker 2.0 benötigt mindenstens Kickstart 2.04!"
  ))

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

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

  (set #choose-text
  (cat "Bitte wählen 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 vollständige 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 zusätzliche Player aktiviert werden? Hierbei handelt es sich um Player die nicht sehr Verbreitet sind. Der normale Benutzer wird diese Player nicht benötigen. Wir schlagen deshalb vor, das sie mit 'NEIN' fortfahren."
  ))   

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

  (set #player-help
  (cat "Bitte wählen Sie nur Player für die sie auch Module besitzen. Nicht angewählete Player werden im Playerstore installiert. Sie können diese Player bei Bedarf später immer noch nachladen."
  ))

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

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

  (set #ask-genies
  (cat "Welche zusätzlichen Genies sollen bei Programmstart geladen 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 "Wählen 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 "Wählen sie diese Option nur, wenn sie eigene Player oder Genies schreiben wollen. Hinweis: Die Entwicklerdokumentation ist für Assemblerprogramierer gedacht und ist nur in Englisch verfügbar!"
  ))

  (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	"Wenn Sie DeliTracker das erste mal starten, werden viele Fenster geöffnet. Verschieben Sie die Windows an eine Position Ihrer Wahl und wiederholen sie folgende Schritte für jedes Fenster:\n\n1) Aktivieren sie das Fenster\n2) Stellen sie die Optionen nach Bedarf ein. Sie finden die Einstellungen im 'Settings' Menü. Wenn sie wünschen, das dieses Fenster nicht bei jedem Start von DeliTracker geöfnet werden soll, schalten sie 'Popup' ab.\n3) Wählen sie den Menüpunkt 'Save Prefs' aus dem 'Project' Menü."
  ))

 )
)

; check kick version

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

; say hi 
(welcome)
(complete 0)

;=============================================================================;
; Choose directory where DeliTracker will be installed.
; (Check for enough room)
;
;(if (exists "ENV:DELICONFIG" (noreq))
; (abort "The update script ist not finished yet!")
;)

(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 65)

;=============================================================================;
; 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))

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

(
 (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 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")))) 
(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)
;=============================================================================;
