;
;CD-Write installation script - $VER: Install_CD-Write 2.1 (04.8.96)
;Copyright © 1995/96 by Ralph Babel
;all rights reserved
;

(if (>= (getversion) $00250084)
 (
  (complete 0)
  (welcome)
  (set oldlevel @user-level)
  (set ro-help
   "Der einzugebende DOS-Gerätename legt fest, mit welchem vorhandenen Gerät CD-Write zusammenarbeiten soll. Dies ist üblicherweise der Name Ihres CD-ROM-Laufwerks, meist »CD0:« genannt. Der DOS-Gerätename muß mit einem Doppelpunkt enden.\n\n")

  (until ok
   (set ro-dev
    (askdir
     (default "CD0:")
     (prompt "Bitte geben Sie den DOS-Gerätenamen Ihres CD-ROM-Laufwerks ein:")
     (help ro-help @askdir-help)
     (disk)
    )
   )
   (set tmp (getdevice ro-dev))
   (set ok (<> tmp ""))
   (if ok
    (
     (set ro-dev (cat tmp ":"))
     (set ok
      (askbool
       (choices "Ja" "Nein")
       (default 1)
       (prompt "CD-Write soll also mit dem Gerät ...\n\n»" ro-dev "«\n\n... zusammenarbeiten?")
       (help ro-help)
      )
     )
    )
    (
     (message "Dem von Ihnen angegebenen Namen ...\n\n»" ro-dev "«\n\n... ist kein gültiger Gerätename zuordenbar.\n\nBitte prüfen Sie, ob Ihr CD-ROM-Laufwerk angemeldet ist, oder berichtigen Sie Ihre Eingabe.")
     (if (= @user-level 0)
      (user 1)
     )
    )
   )
  )
  (user 1)
  (set rw-help "Der einzugebende Verzeichnisname legt fest, in welchem Verzeichnis CD-Write die Änderungsdaten ablegen soll. Dieses Verzeichnis muß sich auf einem ständig beschreibbaren Medium befinden.\n\n")
  (set ok false)
  (until ok
   (set rw-dir
    (askdir
     (default (tackon @default-dest "cdwdata"))
     (prompt "Bitte legen Sie das Änderungsdatenverzeichnis für CD-Write fest:")
     (help rw-help @askdir-help)
     (newpath)
    )
   )
   (set ok (exists rw-dir (noreq)))
   (if ok
    (
     (if (not (patmatch "#?:#?" rw-dir))
      (set rw-dir (expandpath rw-dir))
     )
     (set ok
      (askbool
       (choices "Ja" "Nein")
       (default 1)
       (prompt "CD-Write soll also seine Änderungsdaten im Verzeichnis ...\n\n»" rw-dir "«\n\n... ablegen?")
       (help rw-help)
      )
     )
    )
    (message "Das von Ihnen angegebene Verzeichnis ...\n\n»" rw-dir "«\n\n... existiert nicht.\n\nBitte legen Sie es erst an, oder berichtigen Sie Ihre Eingabe.")
   )
  )
  (user oldlevel)
  (set ok false)
  (until ok
   (set cdw-name
    (askstring
     (default "CDW0")
     (prompt "Unter welchem DOS-Gerätenamen soll CD-Write angemeldet werden?")
     (help "Der DOS-Gerätename von CD-Write muß ohne Doppelpunkt spezifiziert werden und darf noch nicht vergeben sein.\n\n" @askstring-help)
    )
   )
   (set ok (not (patmatch "#?:#?" cdw-name)))
   (if ok
    (
     (exists (cat cdw-name ":") (noreq))
     (set ok (= (getassign cdw-name "d") ""))
     (if (not ok)
      (
       (message "Der DOS-Gerätename ...\n\n»" cdw-name "«\n\n... ist bereits vergeben.\n\nBitte berichtigen Sie Ihre Eingabe.")
       (if (= @user-level 0)
        (user 1)
       )
      )
     )
    )
    (message "Der DOS-Gerätename darf keinen Doppelpunkt enthalten.\n\nBitte berichtigen Sie Ihre Eingabe.")
   )
  )
  (user oldlevel)
  (set l-dir
   (askdir
    (default "L:")
    (prompt "In welches Verzeichnis soll das Dateisystem kopiert werden?")
    (help @askdir-help)
   )
  )
  (if (not (patmatch "#?:#?" l-dir))
   (set l-dir (expandpath l-dir))
  )
  (set c-dir
   (askdir
    (default "C:")
    (prompt "In welches Verzeichnis sollen die Zusatzprogramme kopiert werden?")
    (help @askdir-help)
   )
  )
  (set base-dir (pathonly @icon))
  (copyfiles
   (source (tackon base-dir "l/BabelCDWriteFS"))
   (dest l-dir)
  )
  (complete 20)
  (copyfiles
   (prompt "Kopieren der Zusatzprogramme")
   (source (tackon base-dir "c"))
   (choices "BabelCDWriteCtrl" "BabelCDWriteUnDelete")
   (dest c-dir)
   (help "Die Zusatzprogramme ermöglichen die Steuerung bestimmter Optionen und das Wiederherstellen gelöschter Dateien. Sie sind nicht zwingend notwendig. Details hierzu entnehmen Sie bitte Ihrem Handbuch.\n\n" @copyfiles-help)
   (optional)
   (confirm)
  )
  (complete 40)
  (if (< (shiftright (getversion "libs:version.library") 16) 38)
   (
    (set ml-file
     (askfile
      (default "DEVS:MountList")
      (prompt "In welche MountList-Datei soll der MountList-Eintrag eingefügt werden?")
      (help "Der MountList-Eintrag wird benötigt, um CD-Write automatisch anmelden zu können.\n\n" @askfile-help)
     )
    )
    (set tmp (cat "T:MountList." cdw-name ".tmp"))
    (set entry (cat "\n" cdw-name ": Handler   = " (tackon l-dir "BabelCDWriteFS") "\n      Startup   = " ro-dev "|" rw-dir "\n      StackSize = 4096\n      Priority  = 10\n      GlobVec   = -1\n      Mount     = 1\n#\n\n"))
    (if (exists ml-file)
     (textfile
      (dest tmp)
      (append entry)
      (include ml-file)
      (safe)
     )
     (textfile
      (dest tmp)
      (append entry)
      (safe)
     )
    )
    (copyfiles
     (source tmp)
     (dest (pathonly ml-file))
     (newname (fileonly ml-file))
     (optional "fail" "force" "askuser")
    )
    (delete tmp (safe))
    (complete 60)
    (if (= ml-file "DEVS:MountList")
     (set mount-cmd (cat "Mount " cdw-name ":"))
     (set mount-cmd (cat "Mount " cdw-name ": From " ml-file))
    )
    (startup @app-name
     (command mount-cmd)
     (prompt "Das folgende Kommando ...\n\n" mount-cmd "\n\n... muß in Ihre User-Startup-Datei eingefügt werden.")
     (help "Dieses Kommando meldet CD-Write bei jedem Systemstart an.\n\n" @startup-help)
    )
   )
   (
    (set dd-dir
     (askdir
      (default "DEVS:DOSDrivers")
      (prompt "In welchem Verzeichnis soll der DOSDrivers-Eintrag angelegt werden?")
      (help "Geräte mit zugehörigem DOSDrivers-Eintrag werden bei jedem Systemstart automatisch angemeldet. Das Verzeichnis, in dem diese Einträge liegen, muß bereits existieren; es wird nicht automatisch angelegt.\n\n" @askdir-help)
      (newpath)
     )
    )
    (set tmp (tackon dd-dir cdw-name))
    (textfile
     (dest tmp)
     (append cdwname "Handler   = " (tackon l-dir "BabelCDWriteFS") "\nStartup   = " ro-dev "|" rw-dir "\nStackSize = 4096\nPriority  = 10\nGlobVec   = -2\nMount     = 1\n")
    )
    (set mount-cmd (cat "Mount " tmp))
   )
  )
  (complete 80)
  (run mount-cmd
   (prompt "Soll »" cdw-name "« bereits jetzt durch den Befehl ...\n\n»" mount-cmd "«\n\n... angemeldet werden?")
   (help "Wird " cdw-name " jetzt nicht angemeldet, so wird CD-Write erst nach einem Neustart aktiv.")
   (confirm)
  )
  (complete 100)
  (set @default-dest "")
  (exit "Die Installation von CD-Write ist beendet.\n\n\nViel Spaß!")
 )
 (abort "Installation nicht möglich.\n\nCD-Write setzt zumindest Kickstart 2.04 voraus.")
)
