Hang on, there *is* something odd in the script.
Some variables that are being set are prefixed with @
These are variables which are created by the installer
before the script actually starts to run, and are used to tell the script
certain things about the environment. These symbols always begin with an
'@' sign.
You can set @variables, (and should, if @default-dest is changed) but I'm not sure you should create them like is being done in this script? That might be completely wrong though

First port of call: change all non-system-defined @variables to remove the @...
system-defined variables:
@abort-button
@app-name
@icon
@execute-dir
@default-dest
@language
@pretend
@user-level
@error-msg
@special-msg
@ioerr
@each-name
@each-type
@askoptions-help
@askchoice-help
@asknumber-help
@askstring-help
@askdisk-help
@askfile-help
@askdir-help
@copylib-help
@copyfiles-help
@makedir-help
@startup-help