; $Id: Install-DeluxePaintV,v 1.7 94/08/10 15:58:27 lee Exp $
; $VER: Install-DeluxePaintV 1.7
;
; Copyright (c) 1994 Electronic Arts, Inc. All Rights Reserved.


(set app_prefix "DPaintV_")
(set app_disk1  "Install")
(set app_disk2  "Media")
(set app_disk3  "Examples")
(set app_disk4  "Extras")


(set app_volume1 (cat app_prefix app_disk1 ":"))
(set app_volume2 (cat app_prefix app_disk2 ":"))
(set app_volume3 (cat app_prefix app_disk3 ":"))
(set app_volume4 (cat app_prefix app_disk4 ":"))


(set expert_user_level 2)
(set orig_user_level @user-level)


; standard amiga error codes
(set RC_OK     0
     RC_WARN   5
     RC_ERROR 10
     RC_FATAL 20
     )


; program install options
(set INSTF_DPAINT  1
     INSTF_DPLAYER 2)

;
; determine AmigaDos version and revision numbers
;

(set AmigaDos_Number   (getversion))
(set AmigaDos_Version  (/ AmigaDos_Number 65536))
(set AmigaDos_Revision (- AmigaDos_Number (* AmigaDos_Version 65536)))

;
; set up some message strings
;

(set format_msg
   (cat
      "Veuillez insérer une disquette vide non protégée en "
      "écriture dans le lecteur et cliquer sur le bouton "
      ""Continuer". Ce sera la disquette de destination.\n\n"


      "A la demande du système, placez la disquette source "

      "( \"DPaintV_Install\") dans un lecteur autre que DF0.\n\n" 
   )
)


(set format_help
   (cat
      format_msg

      "Attention : toutes les données de la disquette non "
      "protégée en écriture seront écrasées !\n\n"

      "Avant de continuer, vérifiez que toutes les disquettes "
      "source de DeluxePaintV sont protégées en écriture !!"
   )
)


; --------------------------------------------------------------------
; format_disk:
;   standard floppy format procedure.
;   if an error occurs during the format, a message will be put up
;   and the user re-prompted.
;
; inputs:
;   <DstDiskName> : The name to use when formatting the disk.
;
; outputs:
;   <fmt_error>  will be set to 0 if disk was formatted successfully,
;                or some value <= RC_WARN if the user cancelled the format.
;
(procedure format_disk
   (run "echo >ram:newline <nil: \"\"")
   (run ("assign \"%s\" remove" (cat DstDisName ":")))
   (user expert_user_level)
   (set fmt_error RC_FATAL)
   (until (<= fmt_error RC_WARN)
     ((set fmt_error
           (run  ("sys:system/format DRIVE DF0: NAME \"%s\" FFS NOICONS >NIL: <ram:newline" DstDiskName)
                 (help format_help)
                 (prompt (cat ("Création de la disquette \"%s\"...\n\n" DstDiskName) format_msg))
                 (confirm)
                 )
            )
       (transcript "format_result = " fmt_error)
       (if (> fmt_error RC_WARN)
           (message ("Erreur de formattage de la disquette \"%s\"" DstDiskName)))
       
       ))
    (user orig_user_level)
    (delete ram:newline)
)



; --------------------------------------------------------------------
(procedure setup_floppy_install
  (user expert_user_level)
  (message "L'installation complète sur disquettes nécessite "
           "quatre disquettes inutilisées. Veuillez les préparer.\n\n"
           "Attention : cette procédure d'installation suppose "
           "que vous disposez d'au moins deux lecteurs."
           )
  (user orig_user_level)
)

; --------------------------------------------------------------------
(procedure setup_hd_install
   (message 
      "\nCet exemplaire de DeluxePaintV va être installé dans un nouveau "
      "tiroir appelé \"DPaintV\". Vous allez devoir indiquer l'emplacement du "
      "disque dur (ou du dispositif de stockage) où vous voulez que soit créé "
      "ce tiroir.\n\n")

   (set app_locate
      (askdir
         (prompt "Veuillez indiquer où vous voulez créer le tiroir "
                 "de DPaintV.")
         (help @askdir-help)
         (default @default-dest)
         ))


   (set app_path (tackon app_locate "DPaintV"))
   (makedir app_path (infos))
)



; --------------------------------------------------------------------
; copy_volume1 
;    copies files from <app_volume1> into the user's preselected 
;    destination directory. If we're doing a <hd_install> this procedure
;    assumes <app_path> has already been set.  If we're doing a 
;    floppy install, the files will be copied to the newly formatted
;    'DPaintV' disk.
;
;    if either dpaint or dplayer are installed and catalogs directory
;    will be created. This assumes that app_volume1 contains an empty
;    catalogs directory and that the user will be prompted for language
;    installation later.
;
(procedure copy_volume1
  (complete 5)
  (set program_options 
      (askoptions
         (prompt "Quelles applications souhaitez-vous installer ?")
         (choices "DPaint" "DPlayer")
         (help  "  DPaint  -- installe DPaint et ses fichiers annexes\n"
                "  DPlayer -- installe l'utilitaire DPaint Player\n\n"
                @askoptions-help)
         )
      )
  (if (not hd_install)
      ((set DstDiskName "DPaintV")
       (set app_path    (cat DstDiskName ":"))
       (if program_options
           ((format_disk) 
            (if fmt_error (set program_options 0))))))
  (if (bitand INSTF_DPAINT program_options)
      (copyfiles
         (prompt "Copie de DPaint et de ses fichiers annexes...")
         (source app_volume1)
         (dest   app_path)
         (choices "DPaint" "Libs" "Fonts")
         (help @copyfiles-help)
         (infos)
         (fonts)
         ))
  (complete 10)
  (if (bitand INSTF_DPLAYER program_options)
      (copyfiles
         (prompt "Copie de DPlayer...")
         (source app_volume1)
         (dest   app_path)
         (choices "DPlayer")
         (infos)
         (help @copyfiles-help)
         ))
  (set @default-dest app_path)
)

; --------------------------------------------------------------------
(procedure copy_dir
  (copyfiles 
      (prompt  ("Copie de \"%s\"..." app_dir))
      (source  app_volume)
      (dest    app_path)
      (choices app_dir)
      (help    @copyfiles-help)
      (infos)
      (fonts)
      (optional)
      )
)

; --------------------------------------------------------------------
; copy_volume2 
;    copies files from <app_volume2> into the user's preselected 
;    destination directory. If we're doing a <hd_install> this procedure
;    assumes <app_path> has already been set.  If we're doing a 
;    floppy install, the files will be copied to the newly formatted
;    <app_disk2> disk.
;

(procedure copy_volume2
  (complete 15)
  (set options 
      (askoptions 
          (prompt "Quels répertoires souhaitez-vous installer ?")
          (choices "Media" "Textures" "Patterns" "Brush" "Move" "Colours")
          (help "  Media    -- exemples de matières (craie, huile, etc.)\n"
                "  Textures -- exemples de textures de support\n"
                "  Patterns -- exemples de motifs de remplissage\n"
                "  Brush    -- exemples de brosses\n"
                "  Move     -- exemples de modèles de déplacements\n"
                "  Colours  -- exemples de couleurs/de palettes\n"
                "\n"
                @askoptions-help)
          )
      )
  (if options
      (if (not hd_install)
          ((set DstDiskName app_disk2)
           (set app_path (cat DstDiskName ":"))
           (format_disk)
           (if fmt_error (set options 0)))))
  (set app_volume app_volume2)
  (if (bitand 1 options)
      ((set app_dir "Media") (copy_dir)))
  (complete 20)
  (if (bitand 2 options)
      ((set app_dir "Textures") (copy_dir)))
  (complete 25)
  (if (bitand 4 options)
      ((set app_dir "Patterns") (copy_dir)))
  (complete 30)
  (if (bitand 8 options)
      ((set app_dir "Brush") (copy_dir)))
  (complete 35)
  (if (bitand 16 options)
      ((set app_dir "Move") (copy_dir)))
  (complete 40)
  (if (bitand 32 options)
      ((set app_dir "Colours") (copy_dir)))
)


; --------------------------------------------------------------------
; copy_volume3 
;    copies files from <app_volume3> into the user's preselected 
;    destination directory. If we're doing a <hd_install> this procedure
;    assumes <app_path> has already been set.  If we're doing a 
;    floppy install, the files will be copied to the newly formatted
;    <app_disk3> disk.
;

(procedure copy_volume3
  (complete 45)
  (set options 
      (askoptions 
          (prompt "Quels répertoires souhaitez-vous créer ?")
          (choices "Picture" "Anim" "Animbrush" "Karafonts")
          (help "  Picture   -- exemples d'images\n"
                "  Anim      -- exemples d'animations\n"
                "  AnimBrush -- exemples de brosses animées\n"
                "  Karafonts -- exemples de polices de caractères en couleurs\n"
                "\n"
                @askoptions-help)
          )
      )
  (if options
      (if (not hd_install)
          ((set DstDiskName app_disk3)
           (set app_path (cat DstDiskName ":"))
           (format_disk)
           (if fmt_error (set options 0)))))
  (set app_volume app_volume3)
  (if (bitand 1 options)
      ((set app_dir "Picture") (copy_dir)))
  (complete 50)
  (if (bitand 2 options)
      ((set app_dir "Anim") (copy_dir)))
  (complete 55)
  (if (bitand 4 options)
      ((set app_dir "Animbrush") (copy_dir)))
  (complete 60)
  (if (bitand 8 options)
      ((set app_dir "Karafonts") (copy_dir)))
)

; --------------------------------------------------------------------
; do_register
;   asks the user if he/she wishs to run and register their
;   copy of dpaint now. if the answer is yes, launches the program...
;

(procedure do_register
  (working "Lancement de DeluxePaintV...")
 (run ("run >NIL: <NIL: \"%s\"" (tackon @default-dest "DPaint"))
       (prompt "Voulez-vous enregistrer maintenant cet exemplaire de DeluxePaintV ?")
       (help "DeluxePaintV doit être enregistré avant la première utilisation. "
             "Si vous sélectionnez \"Continuer\", le programme d'installation va "
             "lancer DeluxePaintV pour que vous puissiez saisir les informations "
             "relatives à l'enregistrement. Préparez la carte d'enregistrement. "
             "En cliquant sur \"Interrompre\", vous pouvez lancer et "
             "enregistrer le programme ultérieurement."
             )
       (confirm)
       )
)

; --------------------------------------------------------------------
; update_asl:
;   updates asl.library to v38; asks expert users for confirmation.
;
;                             WARNING
;   The installer WILL COPY the supplied library over the user's
;   current library WITHOUT REGARD to the current library's version
;   number!!! This procedure should NOT be called if the library
;   version is v38 or better.
; 

(procedure update_asl
  (working "Vérification du numéro de version \"asl.library\" ...")
  (copylib (prompt "Mise à jour de \"asl.library\"...")
           (help "Pour que DeluxePaintV fonctionne correctement, vous "
                 "aurez besoin de \"asl.library\" version 38 (ou une version "
                 "plus récente). Cette bibliothèque ne doit être mise à jour "
                 "que si le numéro de version est inférieur au numéro de la "
                 "version minimum nécessaire pour DeluxePaintV.\n\n"
                 @copylib-help
                 )
           (source (tackon app_volume4 "v38_libs/asl.library"))
           (dest "libs:")
           (confirm))
)


; --------------------------------------------------------------------
; copy_volume4
;    copies files from <app_volume4> into the user's preselected 
;    destination directory. If we're doing a <hd_install> this procedure
;    assumes <app_path> has already been set.  If we're doing a 
;    floppy install, the files will be copied to the newly formatted
;    <app_disk4> disk.
;
;    Updates the asl.library if necessary.
;
(procedure copy_volume4
  (complete 65)
  (set options 
      (askoptions 
          (prompt "Quels répertoires souhaitez-vous installer ?")
          (choices "Gallery" "Macros" "AGA_Art" "Icons")
          (help  "  Gallery -- gallerie d'art\n"
                 "  Macros  -- exemple de macros arexx\n"
                 "  AGA_Art -- exemples d'images AGA\n"
                 "  Icons   -- exemples de fichiers d'icône\n"
                 "\n"
                 @askoptions-help)
          )
      )
  (if options
      (if (not hd_install)
          ((set DstDiskName app_disk4)
           (set app_path (cat DstDiskName ":"))
           (format_disk)
           (if fmt_error (set options 0)))))
  (set app_volume app_volume4)
  (complete 70)
  (if (bitand 1 options)
      ((set app_dir "Gallery") (copy_dir)))
  (complete 75)
  (if (bitand 2 options)
      ((set app_dir "Macros") (copy_dir)))
  (complete 80)
  (if (bitand 4 options)
      ((set app_dir "AGA_Art") (copy_dir)))
  (complete 85)
  (if (bitand 8 options)
      ((set app_dir "Icons") (copy_dir)))
  (complete 90)

  (set asl_version (/ (getversion "libs:asl.library") 65535))
  (transcript "asl_version = " asl_version)
  (if (< asl_version 38)
      (update_asl))
  
)

; --------------------------------------------------------------------
; do_exit
;   does the language installation
;   does the program registrations if requested
;   puts up regcard reminder and says thanks...
;
(procedure do_exit
  (complete 95)
  (set options 
      (askoptions 
          (prompt "Quelle langue souhaitez-vous installer ?")
          (choices "Français" "Deutsch")
          (help  "Français -- installe les catalogues en français dans DPaintV:Catalogs/Français\n\n"
                 "Deutsch  -- installe les catalogues en allemand dans DPaintV:Catalogs/Deutsch\n\n"
                 @askoptions-help)
          )
      )
  (set app_volume (tackon app_volume4 "Catalogs"))
  (set app_path   (tackon @default-dest "Catalogs"))
  (if (bitand 1 options)
      ((set app_dir "Français") (copy_dir)))
  (if (bitand 2 options)
      ((set app_dir "Deutsch") (copy_dir)))

  (complete 98)
  (if hd_install
      (startup @app-name
        (prompt "\nAjouter l'affectation DPaintV: à s:user-startup?")
         (help   "Toutes les icônes installées par DeluxePaintV indiqueront "
                 "par défaut DPaintV:DPaint. L'ajoût de l'affectation ci- "
                 "dessus au fichier de paramètres permet de charger ces fichiers "
                 "tout en lançant DeluxePaintV en cliquant deux fois sur l'icône.\n\n"

                 @startup-help
                 )
         (command ("Assign DPaintV: \"%s\" defer" @default-dest))
         ))

  (if hd_install
      (run ("assign DPaintV: \"%s\"" @default-dest)
           (prompt ("\nAffecter DPaintV: à \"%s\" ?" @default-dest))
           (help "DeluxePaintV recherche les images, les brosses et les textures "
                 "dans les sous-répertoires de l'affectation logique "
                 "\"DPaintV:\" par défaut.\n\n"
                 "Cette affectation n'est nécessaire que si vous voulez lancer "
                 "DeluxePaintV avant de relancer l'ordinateur et d'utiliser "
                 "s:user-startup. "
                 )
           (confirm)))
             
  (complete 99)
  (do_register)

  (complete 100)
  (user expert_user_level)
  (message "\nN'oubliez pas de remplir et de poster la carte "
           "d'enregistrement de DeluxePaintV dès que possible.\n\n"
           "Merci d'avoir choisi DeluxePaintV !"
           )
  (exit)
)


; --------------------------------------------------------------------
;                   This is the actual Install Script
; --------------------------------------------------------------------
;
; tell the user that DPaintV requires AmigaDos 2.04
;
(if (< AmigaDos_Version 37)
    (
      (abort
         "DeluxePaintV ne peut fonctionner avec cette version de l'AmigaDOS. "
         "DeluxePaintV nécessite au minimum l'AmigaDOS 2.04"
         )
    )
)
;
; ask the user if this is a floppy or harddisk installation
; and set the value of <hd_install>
;
(user expert_user_level)
(set hd_install 
   (= 0
     (askchoice
           (prompt "\nSélectionnez la méthode d'installation :")
           (help
               "DeluxePaintV doit être enregistré avant toute utilisation. Vous "
               "pouvez le faire lors de l'installation du programme sur le disque "
               "dur (ou tout autre dispositif de stockage), ou sur une copie des "
               "disquettes de DeluxePaintV.\n"
               "  Sélectionnez \"Disque dur\" pour installer DeluxePaintV sur disque dur.\n"
               "  Sélectionnez \"Disquettes\" pour installer DeluxePaintV sur disquettes.\n"
               "\n"
               @askchoice-help
               )
           (choices "Disque dur" "Disquettes")
           (default 0)
           )
      )
)
(user orig_user_level)

(if hd_install
    (setup_hd_install)
    (setup_floppy_install))

(copy_volume1)
(copy_volume2)
(copy_volume3)
(copy_volume4)
(do_exit)
