netsurf/amiga/dist/Install
Chris Young d5018b862d libsvgtiny is shared object now, tweak percent complete values in install to allow
this shared object and space for future ones (such as libDOM), without value jumping
backwards.

svn path=/trunk/netsurf/; revision=9438
2009-08-24 21:14:46 +00:00

406 lines
8.7 KiB
Plaintext
Executable File

; Installation script for NetSurf
(procedure p_setmimetype #type #mimetype
(transcript "Setting MIME Type " #mimetype " for default " #type " icon")
(set #fullpath (cat "ENVARC:Sys/def_" #type))
(tooltype
(prompt "Setting MIME type")
(help @tooltype-help)
(dest #fullpath)
(settooltype "MIMETYPE" #mimetype)
)
)
(procedure p_failedsobjs
(if #failedsobjs
(message "The following shared objects failed to copy. These will be updated on next reboot.\n\n" #failedsobjs)
)
)
(procedure p_schedulesobj #sobj
(transcript "Scheduling update of " #sobj " for next reboot")
(set #failedsobjs (cat #failedsobjs "\n" #sobj))
(makedir "SObjs:so-installer")
(copyfiles
(source (tackon "SObjs" #sobj))
(dest "SObjs:so-installer")
)
(startup "Shared object installer"
(prompt "Adding commands to user-startup to schedule copy of " #sobj " on next reboot")
(help @startup-help)
(command "if EXISTS SObjs:so-installer\n")
(command " copy SObjs:so-installer SObjs: CLONE FORCE QUIET\n")
(command " delete SObjs:so-installer ALL FORCE QUIET\n")
(command "endif\n")
)
)
(procedure p_comparesobj #sobj
(set #same 0)
(set #sobj-version (getversion (tackon "SObjs/" #sobj)))
(if (= #sobj-version 0)
(
(if (exists (tackon "SObjs:" #sobj))
(
(set #file-newer (earlier (tackon "SObjs:" #sobj) (tackon "SObjs/" #sobj)))
(set #old-size (getsize (tackon "SObjs:" #sobj)))
(set #new-size (getsize (tackon "SObjs/" #sobj)))
(if (AND (= #old-size #new-size) (= #file-newer 0)) (set #same 1))
)
)
)
; else if version info is available
(
(set #sobj-oldversion (getversion (tackon "SObjs:" #sobj)))
(if (<= #sobj-version #sobj-oldversion) (set #same 1))
)
)
)
(procedure p_copysobj #sobj
(set #sobj-version (getversion (tackon "SObjs/" #sobj)))
(if (= #sobj-version 0)
(
(transcript "Date compare " #sobj)
(if (exists (tackon "SObjs:" #sobj))
(
(set #file-newer (earlier (tackon "SObjs:" #sobj) (tackon "SObjs/" #sobj)))
(if (= #file-newer 0)
(
(set #newer-text "has an older datestamp")
)
;else
(
(set #newer-text "has a newer datestamp")
)
)
(set #old-size (getsize (tackon "SObjs:" #sobj)))
(set #new-size (getsize (tackon "SObjs/" #sobj)))
(if (AND (= #old-size #new-size) (= #file-newer 0))
(
(set #copy 0)
)
;else
(
(if (OR (= @user-level 2) (AND (= @user-level 1) (<> #file-newer 0)))
; Expert users are always prompted
; Average users are prompted if the file trying to be copied is newer
; Novice users are never prompted
; This is roughly equivalent to (copylib (confirm))
; No prompting occurs if the destination does not exist (silent copy)
; or the files are the same size and the one being copied isn't newer (don't copy)
(
(set #copy
(askbool
(prompt "Copying " #sobj "...\n\n"
"Version to install: " #new-size " bytes\n"
"Version currently installed: " #old-size " bytes\n\n"
"The file to copy " #newer-text)
(help @askbool-help)
(default #file-newer)
(choices "Proceed with copy" "Skip this part")
)
)
)
;else
(
(set #copy #file-newer)
)
)
)
)
)
; else if dest file does not exist
(
(set #copy 1)
)
)
(if (<> #copy 0)
(
(if (<> #AutoInstall 1)
(
(copyfiles
(prompt "Copying " #sobj "...")
(help @copyfiles-help)
(source (tackon "SObjs/" #sobj))
(dest "SObjs:")
(optional "nofail" "force")
)
)
;else
(
(run "CopyStore SObjs/" #sobj " SObjs:")
)
)
(p_comparesobj #sobj)
(if (= #same 0)
(
(p_schedulesobj #sobj)
)
)
)
)
)
; else if version info is available
(
(if (<> #AutoInstall 1)
(
(copylib
(prompt "Copying " #sobj "...")
(help @copylib-help)
(source (tackon "SObjs/" #sobj))
(dest "SObjs:")
(optional "nofail" "force")
(confirm "expert")
)
)
;else
(
(run "CopyStore SObjs/" #sobj " SObjs:")
)
)
(p_comparesobj #sobj)
(if (= #same 0)
(
(p_schedulesobj #sobj)
)
)
)
)
)
(if (= @app-name "NetSurfAutoInstall") (set #AutoInstall 1))
(if (<> #AutoInstall 1) (welcome))
(complete 0)
(set @default-dest (getenv "AppPaths/NetSurf"))
(set @default-dest
(askdir
(prompt "Where would you like to install NetSurf?\n"
"(a drawer will not be created)")
(help @askdir-help)
(default @default-dest)
)
)
(complete 5)
(working "Checking existing installation...")
(set #icon-exists (exists (tackon @default-dest "NetSurf.info")))
(set osver (getversion))
(set osver (/ osver 65536))
(if (>= osver 53)
(
(if (= #AutoInstall 0)
(
(set #cairo-name "Shared objects/part-Cairo")
)
;else
(
(set #cairo-name "")
)
)
(set #cairo-version 1)
(set #netsurf-exists (exists (tackon @default-dest "NetSurf")))
(if (<> #netsurf-exists 0)
(
; Guess if the installed version is static, if it
; is bigger than 5MB then it probably is!
(set #netsurf-size (getsize (tackon @default-dest "NetSurf")))
(if (> #netsurf-size 5000000) (set #cairo-version 0))
)
)
)
; else
(
(set #cairo-version 0)
(set #cairo-name "")
)
)
(complete 10)
(if (AND (> @user-level 0) (<> #cairo-name ""))
(
(set #cairo-version
(askchoice
(prompt "Which version of NetSurf would you like to install?")
(help "The Cairo/shared objects version has better rendering "
"of some graphical elements, and supports SVG. However, "
"some users report problems with the use of shared objects.\n\n"
@askchoice-help)
(choices "Static/graphics.library" #cairo-name)
(default #cairo-version)
)
)
)
)
(complete 15)
(set #options-exist (exists (tackon @default-dest "Resources/Options")))
(set #aiss-theme "")
(if (= #options-exist 0)
(
(if (exists "TBimages:" (noreq))
(set #aiss-theme "AISS")
)
(set #themename
(askchoice
(prompt "Please select theme")
(help "AISS theme requires AISS (and def_pointers for 32-bit "
"pointers), and will only be shown as an option if "
"AISS is installed.\n\n"
@askchoice-help)
(choices "Default" #aiss-theme)
(default 0)
)
)
(select #themename
(set #theme "Resources/Themes/Default")
(set #theme "Resources/Themes/AISS")
)
)
)
(complete 20)
(set #netsurf-name (select #cairo-version "NetSurf" "NetSurf_Cairo"))
(if (= #AutoInstall 0)
(
(copylib
(prompt "Please check the version of NetSurf you are copying against "
"any which might already be installed.")
(help @copylib-help)
(source #netsurf-name)
(dest @default-dest)
(newname "NetSurf")
(optional "askuser" "force" "oknodelete")
(confirm "expert")
)
)
;else
(
(copyfiles
(prompt "Please check the version of NetSurf you are copying against "
"any which might already be installed.")
(help @copyfiles-help)
(source #netsurf-name)
(dest "T:")
(newname "NetSurf")
(optional "force" "oknodelete")
)
(run "CopyStore T:NetSurf" @default-dest)
(delete "T:NetSurf")
)
)
(complete 30)
(copyfiles
(prompt "Copying files")
(source "")
(choices "Resources" "Rexx" "NetSurf.guide" "NetSurf.readme" "COPYING")
(help @copyfiles-help)
(dest @default-dest)
(infos)
; (all)
)
(set #complete 40)
(if (= #cairo-version 1)
(
(working "Copying Shared Objects")
(foreach "SObjs" "#?"
(complete #complete)
(p_copysobj @each-name)
(set #complete (+ #complete 3))
)
)
)
(complete 90)
(if #theme
(
(set #theme-icon (tackon @default-dest (tackon #theme "NetSurf.info")))
(set #icon-exists (exists #theme-icon))
(if #icon-exists
(
(copyfiles
(prompt "Copying theme icon")
(source #theme-icon)
(help @copyfiles-help)
(dest @default-dest)
)
)
)
(textfile
(prompt "Setting default options")
(help @textfile-help)
(dest (tackon @default-dest "Resources/Options"))
(append "theme:" #theme "\n")
(append "use_pubscreen:Workbench\n")
)
)
)
(complete 95)
(working "Setting MIME types")
(p_setmimetype "css" "text/css")
(p_setmimetype "html" "text/html")
(p_setmimetype "ascii" "text/plain")
(p_setmimetype "jpeg" "image/jpeg")
(p_setmimetype "gif" "image/gif")
(p_setmimetype "png" "image/png")
(p_setmimetype "jng" "image/jng")
(p_setmimetype "mng" "image/mng")
(p_setmimetype "svg" "image/svg")
(p_setmimetype "bmp" "image/bmp")
(p_setmimetype "ico" "image/ico")
(p_setmimetype "sprite" "image/x-riscos-sprite")
(p_setmimetype "lha" "application/x-lha")
(p_setmimetype "zip" "application/x-zip")
(complete 100)
(if (= #AutoInstall 1)
(
(exit (quiet))
)
(
(p_failedsobjs)
(exit)
)
)