; FlashMandel 0.700 Utility d'istallazione. Claudio Pucci 1997
; :$VER FlashMandel Installation Script 1.1 Claudio Pucci 1997

; Istallazione o de-istallazione
(set @user-level 2)
(if  (= (askchoice
          (prompt "Vuoi istallare o deistallare FlashMandel?")
          (default 0)
          (help " Ti viene chiesto di scegliere tra le due basiche operazioni di questo script d'istallazione: l'Istallazione e la Deistallazione.\n\n Se scegli \"ISTALLA\" il programma verrà istalleto (esattamente come negli altri programmi d'istallazione).\n\n Se scegli \"DEISTALLA\" il programma FlashMandel (che, si presume, tu abbia già istallato) verrà rimosso (si spera) dal tuo sistema.")
          (choices "Istalla" "Deistalla")
        ) ; askchoice
        1
     ) ; =
  (
    (transcript "Deistallazione di FlashMandel V0.700...")
    (set @default-dest
      (askdir
        (prompt "Indica il cassetto in cui FlashMandel è stato precedentemente istallato" )
        (help "Ho bisogno del path d'istallazione di FlashMandel. La directory verrà cancellata.")
        (default ("SYS:"))
        (disk)
      ) ; askdir
    ) ; set
    (message "Cancello la directory " @default-dest)
    (if (= (exists @default-dest) 2)
      (
       (delete
         @default-dest
         (optional force)
         (all)
       ) ; delete
       (delete
         (cat @default-dest ".info")
         (optional force)
       ) ; delete .info
      )
;else
      (message "Mi spiace la directory \"%s\" non esiste..." @default-dest (all))
    ) ; if
    (exit "Deistallazione completa." (quiet))
  )
) ; if

; Alcune informazioni per il logfile e l'utente...
(welcome "Benvenuto nell'utility di (de)istallazione di FlashMandel V0.700\n        Claudio Pucci")
(transcript "Istallazione di FlashMandel V0.700...")

;Decidiamo la directory d'istallazione...
(if (= @user-level 0)
  (if (> (exists "Work:" (noreq)) 0)
    (
      (set @default-dest "Work:")
      (if (exists "Work:FlashMandel/" (noreq))
        (delete "Work:FlashMandel/" (optional force) (all))
      ) ; if
    )
    (
      (set @default-dest "SYS:")
      (if (exists "SYS:FlashMandel/" (noreq))
        (delete "SYS:FlashMandel/" (optional force) (all))
      ) ; if
    )
  )
;else
  (set @default-dest
    (askdir
      (prompt "Scegliere la directory per l'istallazione\n (una directory di nome \"FlashMandel\" verrà creata all'interno)")
      (help "Necessito del percorso d'istallazione. Una directory di nome \"FlashMandel\" sarà creata.Tutti i file relativi a FlasMandel verranno copiati dentro quest'ultima.")
      (if (exists "Work:" (noreq))
        (default ("Work:"))
        (
         (default ("SYS:"))
         (disk)
        )
      ) ; if
    ) ; askdir
  ) ; else
) ; if @user-level

; Creazione della directory destinazione...
(transcript ("Creazione della directory destinazione %s." (tackon @default-dest "FlashMandel")))
(if (> (exists (tackon @default-dest "FlashMandel") (noreq)) 0)
  (if (= (askchoice
           (prompt ("La directory \"%s\" esiste già.\n\n Vuoi rimpiazzarla?" (tackon @default-dest "FlashMandel")))
           (help " Lo script d'istallazione ha trovato una vecchia directory chiamata FlashMandel.\n Se scegli di continuare, premendo \"Rimpiazza\", la vecchia directory (con i contenuti) sarà RIMOSSA.\n Se scegli \"Esci\" lo script d'istallazione non toccherà questa directory e terminerà senza fare ulteriori azioni.")
           (choices "Rimpiazza" "Esci")
           (default 0)
         )
         0
      ) ; =
    (
     (transcript "Cancello la vecchia directory di FlashMandel.")
     (delete
       (tackon @default-dest "FlashMandel")
       (optional force)
       (all)
     ) ; delete
    )
    (exit "La vecchia istallazione non è stata toccata.")
  )
) ; if exists

(makedir (tackon @default-dest "FlashMandel") (infos))
(makedir (tackon @default-dest "FlashMandel/Docs") (infos))

; Quale è la CPU corrente?
; 0 - 68000 68010
; 1 - 68020 68030 680LC40
; 2 - 68020 68030 + 68881 68882
; 3 - 68040 68060
(set #Cpu_Set (if (not (patmatch "68040|68060" (database "cpu")))
                (if (not (patmatch "FPU40" (database "fpu")))
                  3
                  1
                ) ; if
                (if (not (patmatch "68020|68030" (database "cpu")))
                  (if (not (patmatch "68881|68882" (database "fpu")))
                    2
                    1
                  ) ; if
                  0
                ) ; if
              ) ; if
) ; set
(transcript ("La versione di FlashMandel ottimizzata per %s verrà copiata." (select #Cpu_Set "68000" "68020" "68020+68881" "68040")))

; copia dell'eseguibile
(copyfiles
  (prompt ("Copia del programma in %s." (tackon @default-dest "FlashMandel")))
  (source (tackon "Prog" (cat "FlashMandel" (select #Cpu_Set "000" "020" "021" "040"))))
  (dest (tackon @default-dest "FlashMandel"))
  (newname "FlashMandel")
  (infos)
) ; copyfiles

; determinazione del linguaggio della localizzazione
(set #Language_Set (if (= @language "italiano")
                       1
                       0
                   ) ; if
) ; set
(transcript ("Adattamento della documentazione per il linguaggio %s." (select #Language_Set "English" "Italiano")))

; copia della documentazione
(copyfiles
  (prompt (if (= @user-level 2)
            ("Copia della documentazione in %s.\nScegliere le documentazioni da copiare." (tackon @default-dest "FlashMandel/Docs"))
            ("Copia della documentazione in %s." (tackon @default-dest "FlashMandel/Docs"))
          ) ; if
  ) ; prompt
  (help "Qui puoi scegliere il tuo preferito linguaggio per la documentazione.\n A questo momento sono disponibili solo due versioni della documentazione:\n\n  FlashMandel_Eng -> Inglese\n  FlashMandel_Ita -> Italiano\n\n I file \"Madelbrot.Brush\" e \"Bar.Brush\" sono immagini IFF necessarie a tutti i file .Guide.")
  (source "Docs")
  (if (= @user-level 2)
    (choices "FlashMandel_Eng.Guide" "FlashMandel_Ita.Guide" "Mandelbrot.Brush" "Bar.Brush")
    (choices
      (cat "FlashMandel" (select #Language_Set "_Eng" "_Ita") ".guide")
      "Mandelbrot.Brush"
      "Bar.Brush"
    ) ; choices
  ) ; if
  (dest (tackon @default-dest "FlashMandel/Docs"))
  (if (= @user-level 2) (confirm))
  (infos)
) ; copyfiles

; se c'è solo una Guide rinominarla in FlashMandel.Guide
(set #Path_Guide (tackon @default-dest "FlashMandel/Docs"))
(set #OldName
  (select (+ (* (exists (tackon #Path_Guide "FlashMandel_Eng.Guide")) 2)
             (exists (tackon #Path_Guide "FlashMandel_Ita.Guide"))
          ) ; +
    0
    "FlashMandel_Ita.Guide"
    "FlashMandel_Eng.Guide"
    0
  ) ; select
) ; set
(if (> #OldName 0)
  (
   (rename (tackon #Path_Guide #OldName) (tackon #Path_Guide "FlashMandel.Guide"))
   (rename (tackon #Path_Guide (cat #OldName ".info")) (tackon #Path_Guide "FlashMandel.Guide.info"))
  )
) ; if

;Di quale tipo di icone abbiamo bisogno?
(set #Icon_Type
  (if (or
        (> (exists "C:NewIcons" (noreq)) 0)
        (> (exists "ENV:NewIcons.prefs" (noreq)) 0)
      ) ; or
    2
    (if (> (exists "env:MagicWB" (noreq)) 0)
      1
      0
    ) ; if
  ) ; if
) ; set
(if (> @user-level 0)
  ; advanced+
  (set #Icon_Type
    (askchoice
      (prompt "Scegliere il tipo di icone")
      (help " Tre tipi d'icone sono disponibili.\n\n -Normali-\nIcone standard in 4 colori, utili per gli Amiga (ultra) standard.\n\n -MagicWB-\nIcone in stile MagicWB ad 8 colori.\n\n -NewIcons-\nIcone in standard NewIcons, 16 e più colori. Necessita del patch NewIcons.")
      (choices "Normali" "MagicWB" "NewIcons")
      (default #Icon_Type)
    ) ; askchoice
  ) ; set
) ; if
(transcript ("Copia delle icone (%s)." (select #Icon_Type "Normali" "MagicWB" "NewIcons")))
(copyfiles
  (source (select #Icon_Type "Icons/4Col/FM.info" "Icons/MWB/FM.info" "Icons/NewIcons/FM.info"))
  (dest (tackon @default-dest "FlashMandel"))
  (newname "FlashMandel.info")
) ; copyfiles
(foreach (tackon @default-dest "FlashMandel/Docs") "#?.Guide"
  (copyfiles
    (source (select #Icon_Type "Icons/4Col/Guide.info" "Icons/MWB/Guide.info" "Icons/NewIcons/Guide.info"))
    (dest (tackon @default-dest "FlashMandel/Docs"))
    (newname (cat @each-name ".info"))
  ) ; copyfiles
) ; foreach

;Hai bisogno delle sorgenti?
;  Novice  NO
;  Average SI
;  Expert  CHIEDERE
(set #SDK
  (if (> @user-level 1)
    (askbool
      (prompt "Vuoi che le sorgenti siano istallate?")
      (help "Rispondi \"SI\" se hai bisogno (o semplicemente vuoi leggere, modificare, distruggere, utilizzare in rituali arcani) delle sorgenti. Una directory con i sorgenti verrà piazzata nella directory principale di FlashMandel.\nSe rispondi \"NO\" nessuna linea di codice sorgente riempirà ulteriormente il device d'istallazione.")
      (choices "Si" "No")
    ) ; askbool
    @user-level
  ) ; if
) ; set

(transcript ("Le sorgent%s saranno istallate." (select #SDK "i NON" "i")))

(if (= #SDK 1)
  (
   (makedir (tackon @default-dest "FlashMandel/Sources") (infos))
   (copyfiles
     (source "Sources")
     (dest (tackon @default-dest "FlashMandel/Sources"))
     (all)
     (infos)
   ) ; copyfiles
   (transcript ("Copia delle icone per i sorgenti (%s)." (select #Icon_Type "Normali" "MagicWB" "NewIcons")))
   (copyfiles
     (source (select #Icon_Type "Icons/4Col/Build.info" "Icons/MWB/Build.info" "Icons/NewIcons/Build.info"))
     (dest (tackon @default-dest "FlashMandel/Sources"))
     (newname "Build.info")
   ) ; copyfiles
   (copyfiles
     (source (select #Icon_Type "Icons/4Col/SCoptions.info" "Icons/MWB/SCoptions.info" "Icons/NewIcons/SCoptions.info"))
     (dest (tackon @default-dest "FlashMandel/Sources"))
     (newname "SCoptions.info")
   ) ; copyfiles
   (copyfiles
     (source (select #Icon_Type "Icons/4Col/FM.GST.info" "Icons/MWB/FM.GST.info" "Icons/NewIcons/FM.GST.info"))
     (dest (tackon @default-dest "FlashMandel/Sources"))
     (newname "FlashMandel.GST.info")
   ) ; copyfiles
   (copyfiles
     (source (select #Icon_Type "Icons/4Col/Source.info" "Icons/MWB/Source.info" "Icons/NewIcons/Source.info"))
     (dest (tackon @default-dest "FlashMandel/Sources"))
     (newname "FlashMandel.c.info")
   ) ; copyfiles
   (copyfiles
     (source (select #Icon_Type "Icons/4Col/Source.info" "Icons/MWB/Source.info" "Icons/NewIcons/Source.info"))
     (dest (tackon @default-dest "FlashMandel/Sources/Modules"))
     (newname "Cycle.c.info")
   ) ; copyfiles
   (copyfiles
     (source (select #Icon_Type "Icons/4Col/Source.info" "Icons/MWB/Source.info" "Icons/NewIcons/Source.info"))
     (dest (tackon @default-dest "FlashMandel/Sources/Modules"))
     (newname "ColorWindow.c.info")
   ) ; copyfiles
   (copyfiles
     (source (select #Icon_Type "Icons/4Col/Source.info" "Icons/MWB/Source.info" "Icons/NewIcons/Source.info"))
     (dest (tackon @default-dest "FlashMandel/Sources/Modules"))
     (newname "Iff.c.info")
   ) ; copyfiles
   (copyfiles
     (source (select #Icon_Type "Icons/4Col/MI.S.info" "Icons/MWB/MI.S.info" "Icons/NewIcons/MI.S.info"))
     (dest (tackon @default-dest "FlashMandel/Sources/Modules"))
     (newname "MandInt.S.info")
   ) ; copyfiles
  )
) ; if

;Hai bisogno delle palette?
;  Novice  SI
;  Average SI
;  Expert  CHIEDERE
(set #PALE
  (if (> @user-level 1)
    (askbool
      (prompt "Vuoi che le palette siano istallate?")
      (help "Rispondi \"SI\" se vuoi che varie palette sia per ECS che per AGA vengano aggiunte in un'apposita directory.\nSe rispondi \"NO\" nessuna palette riempirà ulteriormente il device d'istallazione.")
      (choices "Si" "No")
    ) ; askbool
    1
  ) ; if
) ; set

(transcript ("Le palett%s saranno istallate." (select #PALE "e NON" "e")))

(if (= #PALE 1)
  (
   (makedir (tackon @default-dest "FlashMandel/Palettes") (infos))
   (copyfiles
     (source "Palettes")
     (dest (tackon @default-dest "FlashMandel/Palettes"))
     (all)
     (infos)
   ) ; copyfiles
  )
) ; if

;Hai bisogno delle immagini?
;  Novice  SI
;  Average CHIEDERE
;  Expert  CHIEDERE
(set #IMMA
  (if (> @user-level 0)
    (askbool
      (prompt "Vuoi che alcune immagini calcolate con FlashMandel vengano istallate?")
      (help "Rispondi \"SI\" se desideri vedere le potenzialità di FlashMandel. Una directory con alcune immagini verrà piazzata nella directory principale di FlashMandel.\nSe rispondi \"NO\" nessuna immagine riempirà ulteriormente il device d'istallazione.")
      (choices "Si" "No")
    ) ; askbool
    1
  ) ; if
) ; set

(transcript ("Le immagin%s saranno istallate." (select #IMMA "i NON" "i")))

(if (= #IMMA 1)
  (
   (makedir (tackon @default-dest "FlashMandel/Pictures") (infos))
   (copyfiles
     (source "Pictures")
     (dest (tackon @default-dest "FlashMandel/Pictures"))
     (all)
     (infos)
   ) ; copyfiles
  )
) ; if

;La versione dell'Installer è migliore di quella presente in C:?
(set #Inst_Ver (getversion "C:Installer"))
(set #This_Ver (getversion "Installer"))
(set #Old_ver (/ #Inst_Ver 65536))
(set #Old_rev (- #Inst_Ver (* #Old_ver 65536)))
(set #New_ver (/ #This_Ver 65536))
(set #New_rev (- #This_Ver (* #New_ver 65536)))

(if (> #This_Ver #Inst_Ver)
  (
   (set #Copy
     (if (< @user-level 2)
         1
         (askbool
           (prompt ("La versione dell'Installer che sto utilizzando è migliore di quella correntemente installata in C:\n\n Nuovo Installer %ld.%ld\n Vecchio Installer %ld.%ld\n\n Vuoi rimpiazzarla?" #New_ver #New_rev #Old_ver #Old_rev))
           (help " La versione dell'Installer presente in questo archivio è migliore di quella già istallata nel tuo sistema.\n E' fortemente racomandato di rimpiazzare il vecchio Installer con il nuovo.")
           (default 1)
           (choices "Rimpiazza" "Tieni il vecchio")
         )
     ) ; if
   ) ; set
   (if (= #Copy 1)
     (
      (transcript ("Aggiornamento dell'Installer %ld.%ld -> %ld.%ld" #Old_ver #Old_rev #New_ver #New_rev))
      (message "Installer and Installer project icon\n(c) Copyright 1995-96 Escom AG. All Rights Reserved.\n\nINSTALLER SOFTWARE IS PROVIDED \"AS-IS\" AND SUBJECT TO CHANGE;\nNO WARRANTIES ARE MADE. ALL USE IS AT YOUR OWN RISK.\nNO LIABILITY OR RESPONSIBILITY IS ASSUMED.")
      (copyfiles
        (source "Installer")
        (dest "C:")
      ) ; copyfiles
     )
   ) ; if
  )
) ; if

(transcript "Istallazione terminata. Enjoy FlashMandel!")


