40 lines
1.1 KiB
Bash
40 lines
1.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
set -e
|
||
|
|
||
|
INSTALL_DIRECTORY=$1
|
||
|
NEW_APP_DIRECTORY=$2
|
||
|
APP_PID=$3
|
||
|
APP_ARGUMENTS="${@:4}"
|
||
|
|
||
|
error_handler() {
|
||
|
local lineno="$1"
|
||
|
|
||
|
script="""
|
||
|
set alertTitle to \"Ryujinx - Updater error\"
|
||
|
set alertMessage to \"An error occurred during Ryujinx update (updater.sh:$lineno)\n\nPlease download the update manually from our website if the problem persists.\"
|
||
|
display dialog alertMessage with icon caution with title alertTitle buttons {\"Open Download Page\", \"Exit\"}
|
||
|
set the button_pressed to the button returned of the result
|
||
|
|
||
|
if the button_pressed is \"Open Download Page\" then
|
||
|
open location \"https://ryujinx.org/download\"
|
||
|
end if
|
||
|
"""
|
||
|
|
||
|
osascript -e "$script"
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
trap 'error_handler ${LINENO}' ERR
|
||
|
|
||
|
# Wait for Ryujinx to exit
|
||
|
# NOTE: in case no fds are open, lsof could be returning with a process still living.
|
||
|
# We wait 1s and assume the process stopped after that
|
||
|
lsof -p $APP_PID +r 1 &>/dev/null
|
||
|
sleep 1
|
||
|
|
||
|
# Now replace and reopen.
|
||
|
rm -rf "$INSTALL_DIRECTORY"
|
||
|
mv "$NEW_APP_DIRECTORY" "$INSTALL_DIRECTORY"
|
||
|
open -a "$INSTALL_DIRECTORY" --args "$APP_ARGUMENTS"
|