# save args and first parameter
$ARGS = $args
$ARG1 = $args[0]
-# parent dir of this script (should be the getdown app dir)
-$DIR = Split-Path $MyInvocation.MyCommand.Path -Parent
+# parent dir of this script (should be the getdown app dir). Follow symlinks.
+$TARGET = ( Get-Item $MyInvocation.MyCommand.Path ).Target
+$DIR = ( $TARGET -eq $null ) ? ( Split-Path $MyInvocation.MyCommand.Path -Parent ) : ( Split-Path $TARGET -Parent )
# insert an "-open" parameter to Jalview's ARGS if ARG1 is non-zero-length, and not "open" or starts with a "-"
if ( $ARG1.length -gt 0 -and ( -not $ARG1.StartsWith("-") ) -and $ARG1 -cne "open" ) {
$JAVA = Join-Path -Path $APPDIR -ChildPath ( "jre/" + ( $IsMacOs ? "Contents/Home/" : "" ) + "bin/${JAVAEXE}" )
$GETDOWNTXT = Join-Path -Path $APPDIR -ChildPath "getdown.txt"
-Write-Host "JAVA=$JAVA"
# look for getdown.txt -- needed to create classpath
if ( -not ( Test-Path -Path "${GETDOWNTXT}" ) ) {
throw "Cannot find getdown.txt"