; $VER: Install_PMPro V1.4 (4.11.96)
; J. Schaefer / Andreas R. Kleinert
; Modified to use LHA by Florian Zeiler

; 4.11.96 : Anpassung an PMPro 4 , J. Schaefer
;           LHA nach PM/system und GIF aktivieren (nur deutsche version)

(set @app-name "Picture Manager Professional")

;Diskettennamen definieren

(set #PMDsk1 "PMPRO_DISK1")
(set #PMDsk2 "PMPRO_DISK2")
(set #PMDisk1 (cat #PMDsk1 ":"))
(set #PMDisk2 (cat #PMDsk2 ":"))

; Sicherheitsabfragen
; OS-Version

(set #OS_VER (/ (getversion) 65536) )

(if(< #OS_VER 37)
  (abort "Sie benoetigen mindestens Kickstart/OS V2.04 mit WB 2.1!")
)

; Installations-Pfad erfragen

(set #PMProDir (askdir
                  (prompt "Wohin soll installiert werden ?"
                          "\n(Eine Schublade PicManager wird darin erzeugt)")
                  (help @askdir-help)
                  (newpath)
                  (default "Work:")
                )
)

; Ueberpruefen, ob versucht wird, in die Ram-Disk zu installieren

(if(= (getdevice #PMProDir) "RAM")
    (abort "Es würde keinen Sinn machen, in die RAM-Disk zu installieren!")
)


; freien HD-Speicher ueberpruefen

(set #dskspace (getdiskspace #PMProDir))

(if(<> #dskspace -1)
 (if(< #dskspace 4000000)
     (abort "Im Datenpfad sind weniger als 4 MB frei ("dskspace") !")
 )
)

(set #dskspace (getdiskspace "SYS:"))

(if(<> #dskspace -1)
 (if(< #dskspace 500000)
     (abort "Im der Systempartition (Workbench) sind weniger als 500kB frei ("dskspace") !")
 )
)  

; Verzeichnis PicManager anlegen

(set #PMProPath (tackon #PMProDir "PicManager"))
(makedir (#PMProPath))

; Pfad setzen

(set @default-dest #PMProPath)

; Welche Anzeigemodule installieren (NEU: schon zu Beginn fragen)

(set #viewinstall 255)
(set #viewinstall (askoptions
              (prompt "Welchen Grafikkartentreiber möchten sie installieren?")
              (choices "PicassoII" "Retina Z2/Z3" "Merlin" "CyberGraphX" "EGS" "OpalVision")
              (default 0)
              (help (cat "Falls sie eine der angegebenen Grafikarten besitzen,\n"
                         "wählen sie bitte das entsprechende Modul aus\n"
                         "Falls sie keine Grafikkarte besitzen, wählen sie\n"
                         "bitte keines der Module aus!"
                    )
              )
             )
)

; alte Files loeschen, falls welche vorhanden sind

(delete (tackon #PMProPath "Autostart.prefs"       ) (optional "force"))
(delete (tackon #PMProPath "Autostart.prefs.info"  ) (optional "force"))

(delete (tackon #PMProPath "PV.config"             ) (optional "force"))
(delete (tackon #PMProPath "PV.config.info"        ) (optional "force"))

(delete (tackon #PMProPath "PhotoView"             ) (optional "force"))
(delete (tackon #PMProPath "PhotoView.info"        ) (optional "force"))

(delete (tackon #PMProPath "PicManager.guide"      ) (optional "force"))
(delete (tackon #PMProPath "PicManager.guide.info" ) (optional "force"))

(delete (tackon #PMProPath "Graphics.log"          ) (optional "force"))
(delete (tackon #PMProPath "Graphics.log.info"     ) (optional "force"))

; NEU: temporäres Verzeichnis anlegen, in das die System-Dateien entpackt werden

(set #TempPath (tackon #PMProPath ".tempinstall"))
(makedir (#TempPath))

; Aufräumprozedur für temp. Verzeichnis deklarieren

; Routine, die im Fehlerfall aufgerufen wird

(onerror (P_CLEANUP))

(procedure P_CLEANUP
   (delete #TempPath (all) (optional "force"))
)

; ...................Diskette 1

(askdisk 
  (prompt (cat "Bitte " #PMDisk1 " einlegen:"))
  (help @askdisk-help)
  (dest #PMDsk1)
  (assigns)
)

; LHA-Dearchivierprogramm ins Temp-Kopieren
; JÜRGEN: zusätzlich/stattdessen in Picture-Manager-Verzeichnis kopieren

(copyfiles
  (source (tackon #PMDisk1 "lha"))
  (dest (#TempPath))
)

; Dearchivier-Routine deklarieren

(procedure P_EXPAND #exp_path #exp_archive #exp_dest
  (set #exp_srcpath (tackon #exp_path #exp_archive))

  (if(= (exists #exp_srcpath) TRUE)
    (
     (working ("Entpacke '%s'" #exp_srcpath))
     ; JÜRGEN: evtl. #TempPath in wirklichen Pfad von LHA ändern
     (set #exp_call ("%s X \"%s\" \"%s/\"" (tackon #TempPath "LHA") #exp_srcpath #exp_dest))
     (run #exp_call)
    )
    (
     (abort (cat "Auf Ihrer Installationsdiskette" #exp_path "fehlt die Datei " #exp_archive))
    )
  )
)

; Archive PM_1 und PM_2 ins PM-Hauptverzeichnis

(P_EXPAND #PMDisk1 "PM_1.lha" #PMProPath)
(P_EXPAND #PMDisk1 "PM_2.lha" #PMProPath)

; Piktogramm kopieren

(copyfiles
  (source (tackon #PMDisk1 "PicManager.inf"))
  (dest #PMProDir)
  (newname "PicManager.info")
  (files)
) 

; LHA ins PMPro-Systemverzeichnis kopieren


(copyfiles
  (source (tackon #PMDisk1 "lha"))
   (dest (tackon #PMProPath "System"))
) 

; ........................Diskette 2

(askdisk 
  (prompt (cat "Bitte " #PMDisk2 " einlegen:"))
  (help @askdisk-help)
  (dest #PMDsk2)
  (assigns)
)

; Archive Examples und Help_Docs ins PM-Hauptverzeichnis

(P_EXPAND #PMDisk2 "Examples.lha" #PMProPath)
(P_EXPAND #PMDisk2 "Help_Docs.lha" #PMProPath)

; Archive Library und Drivers ins Tempverzeichnis

(P_EXPAND #PMDisk2 "Library.lha" #TempPath)
(P_EXPAND #PMDisk2 "Drivers.lha" #TempPath)


; Libraries installieren
; ----------------------
; evtl. vorhandene SuperView Installation umbenennen
; (Treiber, Objekte und Operatoren und Library in .bak)

(delete "libs:svobjects.bak" (all) (optional "force"))
(rename "libs:svobjects" "libs:svobjects.bak")

(delete "libs:svoperators.bak" (all) (optional "force"))
(rename "libs:svoperators" "libs:svoperators.bak")

(delete "libs:svdrivers.bak" (all) (optional "force"))
(rename "libs:svdrivers" "libs:svdrivers.bak")

(delete "libs:superview.library.bak" (optional "force"))
(rename "libs:superview.library" "libs:superview.library.bak")

(delete "libs:superviewsupport.library.bak" (optional "force"))
(rename "libs:superviewsupport.library" "libs:superviewsupport.library.bak")

; Neue SuperView kopieren

(makedir "LIBS:svobjects")
(makedir "LIBS:svoperators")
(makedir "LIBS:svdrivers")


(copyfiles
  (source (tackon #TempPath "libs/svobjects"))
  (dest "libs:svobjects")
  (all)
)

(copyfiles
  (source (tackon #TempPath "libs/svoperators"))
  (dest "libs:svoperators")
  (all)
)

(copyfiles
  (source (tackon #TempPath "libs/svdrivers"))
  (dest "libs:svdrivers")
  (all)
)

(copyfiles
  (source (tackon #TempPath "libs/superview.library"))
  (dest "libs:")
)

(copyfiles
  (source (tackon #TempPath "libs/superviewsupport.library"))
  (dest "libs:")
)

(copyfiles
  (source (tackon #TempPath "libs/pmoperator.library"))
  (dest "libs:")
  (optional "force")
)

; Locale und Prefs kopieren

(copyfiles
  (source (tackon #TempPath "locale"))
  (dest "sys:locale")
  (all)
)

; Verzeichnisse für Superview anlegen

(makedir "ENV:SuperView-Library")
(makedir "ENVARC:SuperView-Library")

(copyfiles
  (source (tackon #TempPath "prefs"))
  (dest "sys:prefs")
  (all)
)

; Diese Standard-Library besonders behandeln:
; Benutzer muß bestätigen

(copylib
  (source (tackon #TempPath "libs/reqtools.library"))
  (dest "libs:")
  (prompt "Die reqtools.library wird durch eine neuere Version ersetzt.")
  (help @copylib-help)
)


; Anzeige-Module installieren

; PICASSO II
; ----------
(if (IN #viewinstall 0)
(
 (copyfiles
   (source (tackon #TempPath "PicassoII.svdriver"))
   (dest "sys:libs/svdrivers")
 )
 (copyfiles
   (source (tackon #TempPath "PicassoII.controlpad"))
   (dest "envarc:superview-library")
 )
 (copyfiles
   (source (tackon #TempPath "PicassoII.controlpad"))
   (dest (tackon #PMProPath "Env"))
 )
))

; RETINA
; ------
(if (IN #viewinstall 1)
(
 (copyfiles
   (source (tackon #TempPath "Retina.svdriver"))
   (dest "sys:libs/svdrivers")
 )
 (copyfiles
   (source (tackon #TempPath "Retina.controlpad"))
   (dest "envarc:superview-library")
 )
 (copyfiles
   (source (tackon #TempPath "Retina.controlpad"))
   (dest (tackon #PMProPath "Env"))
 )
))  

; MERLIN
; ------
(if (IN #viewinstall 2)
(
 (copyfiles
   (source (tackon #TempPath "MERLIN.svdriver"))
   (dest "sys:libs/svdrivers")
 )
))  


; CYBERGRAPHX
; -----------
(if (IN #viewinstall 3)
(
 (copyfiles
   (source (tackon #TempPath "CyberGraphics.svdriver"))
   (dest "sys:libs/svdrivers")
 )
 (copyfiles
   (source (tackon #TempPath "CyberGraphics.controlpad"))
   (dest "envarc:superview-library")
 )
 (copyfiles
   (source (tackon #TempPath "CyberGraphics.controlpad"))
   (dest (tackon #PMProPath "Env"))
 )
))  

; EGS
; ---
(if (IN #viewinstall 4)
(
 (copyfiles
   (source (tackon #TempPath "EGS7.svdriver"))
   (dest "sys:libs/svdrivers")
 )
))  

; OPAL
; ----
(if (IN #viewinstall 5)
(
 (copyfiles
   (source (tackon #TempPath "OPAL.svdriver"))
   (dest "sys:libs/svdrivers")
 )
))  


; Pfad um Schublade PicManager erweitern und Assign in User-Startup einfügen 

(startup "Picture Manager Professional"
  (prompt "Modifiziere S:User-Startup für PIC_MANAGER:-Assign-Eintrag")
  (help @startup-help)
  (command "Assign PIC_MANAGER: \"" #PMProPath "\"\n")
  (command "Assign VMEM: PIC_MANAGER:Temp\n")
)

; GIF Aktivieren (NUR FUER DEUSTCHE VERSION

(
   (textfile
       (dest "ENV:SuperView-Library/LEGAL.controlpad")
       (append "LZW=ENABLED\n")
   )
   (copyfiles
       (source "ENV:SuperView-Library/LEGAL.controlpad")
       (dest "ENVARC:SuperView-Library")
   )
)      


(P_CLEANUP)
(exit "Picture Manager Professional ist nun installiert.\nBitte starten Sie Ihren Rechner jetzt neu!")

