; $VER: FinalWrapper.install 3.21 (03.01.98) by NDY's

;--------------------- procedures: ------------------------

(PROCEDURE _copy
  (IF (= @user-level 2)
    (IF (= (ASKBOOL (PROMPT (#copy #file #destdr)) (HELP @askbool-help) (DEFAULT 1) (CHOICES (CAT #no #yes))) 1)
      (
        (IF (NOT (EXISTS #destdr)) (MAKEDIR #destdr))
        (COPYFILES (SOURCE #file) (DEST #destdr))
      )
    )
    (
      (IF (NOT (EXISTS #destdr)) (MAKEDIR #destdr))
      (COPYFILES (SOURCE #file) (DEST #destdr))
    )
  )
)

(PROCEDURE _del
  (IF (EXISTS #file (NOREQ))
    (IF (= @user-level 2)
      (IF (= (ASKBOOL (PROMPT (#del #file)) (HELP @askbool-help) (DEFAULT 1) (CHOICES (CAT #no #yes))) 1)
        (DELETE #file)
      )
      (DELETE #file)
    )
  )
)

;------------------------ main: ---------------------------

;* FinalWrapper version:
(SET #ver "3.21")
(SET #year "1998")

;* set language:
(IF (AND (AND (AND (<> @language "english") (<> @language "deutsch")) (AND (<> @language "italiano") (<> @language "dansk"))) (<> @language "norsk"))
  (
    (SET #lang (ASKCHOICE (PROMPT "Which language do you want to use?") (CHOICES "English" "Deutsch" "Italiano" "Dansk" "Norsk (installation in English)") (DEFAULT 0) (HELP @askchoice-help)))
    (IF (= #lang 0) ((SET @language "english")))
    (IF (= #lang 1) ((SET @language "deutsch")))
    (IF (= #lang 2) ((SET @language "italiano")))
    (IF (= #lang 3) ((SET @language "dansk")))
    (IF (= #lang 4) ((SET @language "norsk")))
  )
)
(IF (= @language "deutsch")
  (
    (SET #defdest "FinalWriter_D/FWMacros")
    (SET #hi "\nWilkommen zum Installer-Skript von\nFinalWrapper %s!\n\n(c) %s by Andreas Weiss")
    (SET #kick "Sorry, FinalWrapper benötigt mindestens OS2.0!")
    (SET #macro "Wählen Sie Ihr Final Writer Makroverzeichnis:\n(FWMacros)")
    (SET #macrohelp "Ein Verzeichnis FinalWrapper wird im\nausgewählten Verzeichnis erzeugt.")
    (SET #nosuchdir "Verzeichnis nicht gefunden:")
    (SET #alreadynewer "Eine neuere Version ist bereits installiert:\n\n")
    (SET #manual "FinalWrapperSmallD.Guide")
    (SET #userstartup "User-startup modifizieren?\nAssign FinalWriter: wird benötigt!")
    (SET #delold "Alte Version von FinalWrapper löschen?")
    (SET #yes "Ja")
    (SET #no "Nein")
    (SET #copy "%s nach \n%s kopieren?")
    (SET #del "%s löschen?")
    (SET #done "FinalWrapper %s wurde\nerfolgreich installiert!\n\n%s")
    (SET #regend "Vielen Dank für die Registration!")
    (SET #noregend "Dieses Programm ist SHAREWARE!\n(siehe Anleitung)")
    (SET #reg "Wählen Sie Ihr FinalWrapper Keyfile an (FWKeyfile).\nWenn Sie keines besitzen, klicken sie auf \"Weiter\".")
    (SET #regonly "Extra-Dateien für registrierte\nBenutzer nach FinalWrapper: installieren?")
  )
  (IF (= @language "italiano")
    (
      (SET #defdest "FinalWriter/FWMacros")
      (SET #hi "\nBenvenuti all'installazione di\nFinalWrapper %s!\n\n(c) %s by Andreas Weiss")
      (SET #kick "Spiacente, è necessario almeno OS2.0!")
      (SET #macro "Scegliere la directory delle macro di Final Writer:\n(FWMacros)")
      (SET #macrohelp "Una directory FinalWrapper sarà installato\nin questa directory.")
      (SET #nosuchdir "Directory non trovata:")
      (SET #alreadynewer "Già presente una versione più recente di FW:\n\n")
      (SET #manual "FinalWrapperSmallI.Guide")
      (SET #userstartup "User-startup:\nAssign FinalWriter: e necessario!")
      (SET #delold "Eliminare la versione vecchia di FinalWrapper?")
      (SET #yes "Si")
      (SET #no "No")
      (SET #copy "Copio %s\nin %s ?")
      (SET #del "Cancella %s ?")
      (SET #done "FinalWrapper %s è stato\ninstallato con successo!\n\n%s")
      (SET #regend "Mille grazie per registrare!")
      (SET #noregend "Il programma è SHAREWARE!\n(vedi manuale)")
      (SET #reg "Scegliere il vostro Keyfile di FinalWrapper (FWKeyfile).\n(Se ne ha nessuno, scegliere \"Procedi\".)")
      (SET #regonly "Vuole installare i files addizionali per\ngli uttenti registrati in FinalWrapper:?")
    )
    (IF (= @language "dansk")
      (
        (SET #defdest "FinalWriter/FWMacros")
        (SET #hi "\nVelkommen til FinalWrapper %s's\nInstaller-script\n\n(c) %s by Andreas Weiss")
        (SET #kick "Desværre, FinalWrapper skal bruge mindst OS2.0!")
        (SET #macro "Vælg skuffen med Final Writer's macroer:\n(FWMacros)")
        (SET #macrohelp "FinalWrapper bliver installeret til dette\ndirectory, de nødvendige libraries til LIBS:")
        (SET #nosuchdir "Directory ikke fundet:")
        (SET #alreadynewer "En nyere version er allerede installeret:\n\n")
        (SET #manual "FinalWrapperSmall.Guide")
        (SET #userstartup "User-startup:\nAssign FinalWriter: er nødvendigt!")
        (SET #delold "Delete old version of FinalWrapper?")
        (SET #yes "Ja")
        (SET #no "Nej")
        (SET #copy "Kopier %s\ntil %s ?")
        (SET #del "Slette %s ?")
        (SET #done "FinalWrapper %s er blevet\ninstalleret som de skal!\n\n%s")
        (SET #regend "Thank you for registering!")
        (SET #noregend "Programmet er SHAREWARE!\n(se manualen)")
        (SET #reg "Select your FinalWrapper keyfile (FWKeyfile).\n(If you don't own one, click on \"Proceed\"\n(Fortsætte).)")
        (SET #regonly "Install extra files for\nregistred-users to FinalWrapper:?")
      )
      (
        (SET #defdest "FinalWriter/FWMacros")
        (SET #hi "\nWelcome to the Installer script of\nFinalWrapper %s!\n\n(c) %s by Andreas Weiss")
        (SET #kick "Sorry, FinalWrapper needs at least OS2.0!")
        (SET #macro "Select your Final Writer macro directory:\n(FWMacros)")
        (SET #macrohelp "FinalWrapper will be installed to this\ndirectory and the needed libraries to LIBS:")
        (SET #nosuchdir "Directory not found:")
        (SET #alreadynewer "A newer version is already installed:\n\n")
        (SET #manual "FinalWrapperSmall.Guide")
        (SET #userstartup "Modify User-startup?\nAssign FinalWriter: is needed!")
        (SET #delold "Delete old version of FinalWrapper?")
        (SET #yes "Yes")
        (SET #no "No")
        (SET #copy "Copy %s\nto %s ?")
        (SET #del "Delete %s ?")
        (SET #done "FinalWrapper %s has been\nsuccessfully installed!\n\n%s")
        (SET #regend "Thank you for registering!")
        (SET #noregend "This program is SHAREWARE!\n(see manual)")
        (SET #reg "Select your FinalWrapper keyfile (FWKeyfile).\n(If you don't own one, click on \"Proceed\".)")
        (SET #regonly "Install extra files for\nregistred-users to FinalWrapper:?")
      )
    )
  )
)

;* check kickstart and user level:
(IF (< (SHIFTRIGHT (GETVERSION) 16) 37) (EXIT #kick))
(MESSAGE (#hi #ver #year))
(IF (= (USER 1) 2) (USER 2)) ; Minimal user level is 1

;* set destination directory:
(IF (NOT (EXISTS "FinalWrapper:" (NOREQ)))
  (
    (SET @default-dest (TACKON @default-dest #defdest))
    (SET #path (ASKDIR (PROMPT #macro) (DEFAULT @default-dest) (HELP #macrohelp)))
    (IF (NOT (EXISTS #path (NOREQ))) (EXIT #nosuchdir #path))
    (SET #destdr (TACKON #path "FinalWrapper"))
    (IF (NOT (EXISTS #destdr)) (MAKEDIR #destdr))
    (STARTUP "FinalWrapper" (COMMAND (CAT "Assign DEFER FinalWrapper: \"" #destdr "\"")) (PROMPT #userstartup) (HELP @startup-help))
    (MAKEASSIGN "FinalWrapper" #destdr)
  )
  (
    (SET #path "")
    (SET #destdr "FinalWrapper:")
  )
)
(SET @default-dest #destdr)

;* copy files:
(SET #file "Installation/FinalWrapper.rexx")
(SET #destname (TACKON #destdr #file))
(IF (EXISTS #destname (NOREQ)) ; version check
  (
    (SET #env "FWInstall.temp")
    (RUN (CAT "Version >ENV:" #env " \"" #file "\""))
    (SET #sourcever (GETENV #env))
    (RUN (CAT "Version >ENV:" #env " \"" #destname "\""))
    (SET #destver (GETENV #env))
    (DELETE (TACKON "ENV:" #env))
    (IF (> #destver #sourcever) (EXIT #alreadynewer #destver))
  )
)
(_copy)
(FOREACH "Installation/FW_Macros" "FW_#?.rexx"
  (
    (SET #file (TACKON "Installation/FW_Macros" @each-name))
    (_copy)
  )
)
(SET #destdr (TACKON #destdr "Files"))
(IF (NOT (EXISTS #destdr)) (MAKEDIR #destdr))
(SET #file (TACKON "Installation/" #manual))
(_copy)
(SET #file "Installation/FWbugreport.rexx")
(_copy)
(SET #file "Installation/SetLanguage")
(_copy)
(IF (<> @language "english")
  (
    (SET #file (TACKON "Installation/Translations" (CAT "FinalWrapper." @language)))
    (_copy)
  )
)

;* copy keyfile if present:
(SET #keyfile (TACKON #destdr "FWKeyfile"))
(IF (NOT (EXISTS #keyfile (NOREQ))) ; no keyfile installed
  (
    (SET #file "/FWKeyfile/FWKeyfile") ; installation from registred-user disk
    (IF (EXISTS #file (NOREQ))
      (_copy)
      (
        (SET #file  "ENVARC:FinalWrapper/FWKeyfile") ; keyfile from old version
        (IF (EXISTS #file (NOREQ))
          (_copy)
          (
            (IF (NOT (EXISTS #keyfile (NOREQ)))
              (
                (SET #file (TACKON (PATHONLY (ASKFILE (PROMPT #reg) (DEFAULT @default-dest) (HELP @askdir-help))) "FWKeyfile"))
                (IF (EXISTS #file (NOREQ)) (_copy))
              )
            )
          )
        )
      )
    )
  )
)

;* install regonly stuff:
(SET #reguser (EXISTS #keyfile (NOREQ)))
(IF (= #reguser 1)
  (
    (IF (= @user-level 2)
      (SET #regf (ASKBOOL (PROMPT #regonly) (HELP @askbool-help) (DEFAULT 1) (CHOICES (CAT #no #yes))))
      (SET #regf 1)
    )
    (IF (= #regf 1)
      (
        (WORKING)
        (SET #ro "t:RegOnly.run")
        (SET #file "Installation/RegOnly.crypt")
        (RUN (CAT "Installation/DecryptRegOnly " #file " " #ro " \"" #keyfile "\""))
        (SET @execute-dir "FinalWrapper:")
        (RUN #ro)
        (RUN (CAT "Delete " #ro))
      )
    )
  )
)

;* set language:
(TEXTFILE (DEST (TACKON #destdr "FWLanguage")) (APPEND @language))

;* install libs:
(SET #destdr "LIBS:")
(FOREACH "Installation/libs" "#?.library"
  (
    (SET #file (TACKON "Installation/libs" @each-name))
    (_copy)
  )
)

;* remove files created by obsolete versions:
(SET #dodel (OR (AND (<> #path "") (EXISTS (TACKON #path "FinalWrapper.rexx"))) (EXISTS "ENVARC:FinalWrapper" (NOREQ))))
(IF (AND (= @user-level 2) (= #dodel 1))
  (SET #dodel (ASKBOOL (PROMPT #delold) (HELP @askbool-help) (DEFAULT 1) (CHOICES (CAT #no #yes))))
)
(IF (= #dodel 1)
  (
    (SET #file (TACKON #path "FinalWrapper.rexx"))
    (_del)
    (FOREACH #path "FW_#?.rexx"
      (
        (SET #file (TACKON #path @each-name))
        (_del)
      )
    )
    (IF (EXISTS "HELP:" (NOREQ))
      (
        (FOREACH "HELP:" "#?"
          (
            (SET #dir (TACKON "HELP:" @each-name))
            (FOREACH #dir "FinalWrapper#?.Guide"
              (
                (SET #file (TACKON #dir @each-name))
                (_del)
              )
            )
          )
        )
      )
    )
    (SET #path "ENVARC:FinalWrapper")
    (IF (EXISTS #path (NOREQ))
      (
        (FOREACH #path "#?"
          (
            (SET #file (TACKON #path @each-name))
            (_del)
          )
        )
      )
    )
    (SET #file "ENVARC:FinalWrapper")
    (_del)
    (SET #file "ENVARC:FinalWrapper.def")
    (_del)
  )
)

;* done:
(SET @app-name "FinalWrapper")
(IF (= #reguser 1)
  (EXIT (#done #ver #regend))
  (EXIT (#done #ver #noregend))
)
