forked from CastroFidel/PortWINE
113 lines
4.2 KiB
Bash
Executable File
113 lines
4.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Author: linux-gaming.ru
|
|
# shellcheck disable=SC2317
|
|
export INSTALLING_PORT=1
|
|
# shellcheck source=./start.sh
|
|
source "$(dirname "$(readlink -f "$0")")/start.sh"
|
|
|
|
if check_flatpak
|
|
then PW_EXEC="flatpak run ru.linux_gaming.PortProton"
|
|
else PW_EXEC="env \"${PORT_SCRIPTS_PATH}/start.sh\" %F"
|
|
fi
|
|
|
|
cat << EOF > "${PORT_WINE_PATH}/PortProton.desktop"
|
|
[Desktop Entry]
|
|
Name=PortProton
|
|
Version=${install_ver}
|
|
Exec=$PW_EXEC
|
|
Type=Application
|
|
Terminal=False
|
|
Categories=Game
|
|
StartupNotify=true
|
|
MimeType=application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi;application/x-msdos-program
|
|
Path=${PORT_SCRIPTS_PATH}
|
|
Icon=${PORT_WINE_PATH}/data/img/w.png
|
|
EOF
|
|
chmod u+x "${PORT_WINE_PATH}/PortProton.desktop"
|
|
|
|
if [[ ! -f /usr/bin/portproton ]] \
|
|
&& ! check_flatpak
|
|
then
|
|
cp -f "${PORT_WINE_PATH}/PortProton.desktop" "${HOME}/.local/share/applications/"
|
|
fi
|
|
|
|
if grep "SteamOS" "/etc/os-release" &>/dev/null \
|
|
|| check_flatpak
|
|
then
|
|
cp -f "${PORT_WINE_PATH}/PortProton.desktop" "$(xdg-user-dir DESKTOP)"
|
|
fi
|
|
|
|
if ! check_flatpak ; then
|
|
update-desktop-database -q "${HOME}/.local/share/applications"
|
|
xdg-mime default PortProton.desktop "application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi;application/x-msdos-program"
|
|
fi
|
|
|
|
if [[ -f /usr/bin/portproton ]] \
|
|
&& [[ -f "${HOME}/.local/share/applications/PortProton.desktop" ]]
|
|
then
|
|
try_remove_file "${HOME}/.local/share/applications/PortProton.desktop"
|
|
fi
|
|
|
|
if check_flatpak \
|
|
&& [[ ! -f /usr/bin/portproton ]] \
|
|
&& [[ -f "${HOME}/.local/share/applications/PortProton.desktop" ]] ; then
|
|
PORT_WINE_OLD_PATH="$(grep "Exec=" "${HOME}/.local/share/applications/PortProton.desktop" | awk -F'env ' '{print $2}' | awk -F'/data/scripts/' '{print $1}')"
|
|
if [[ -d "$PORT_WINE_OLD_PATH" ]] \
|
|
&& yad_question "$(gettext "PortProton installed by script has been detected. Do you want to transfer all the data from it to the new flatpak version of PortProton?")"
|
|
then
|
|
pw_start_progress_bar_block "$(gettext "Please wait...")"
|
|
|
|
try_remove_file "${HOME}/.local/share/applications/PortProton.desktop"
|
|
try_remove_file "${PORT_WINE_OLD_PATH}"/PortProton.desktop
|
|
try_remove_file "${PORT_WINE_OLD_PATH}"/readme.desktop
|
|
|
|
try_remove_dir "${PORT_WINE_PATH}/data/dist"
|
|
mv -f "${PORT_WINE_OLD_PATH}"/data/dist "${PORT_WINE_PATH}/data/"
|
|
|
|
try_remove_dir "${PORT_WINE_PATH}/data/prefixes"
|
|
mv -f "${PORT_WINE_OLD_PATH}"/data/prefixes "${PORT_WINE_PATH}/data/"
|
|
|
|
try_remove_dir "${PORT_WINE_PATH}/data/tmp/mono"
|
|
mv -f "${PORT_WINE_OLD_PATH}"/data/tmp/mono "${PORT_WINE_PATH}/data/tmp/"
|
|
|
|
try_remove_dir "${PORT_WINE_PATH}/data/tmp/gecko"
|
|
mv -f "${PORT_WINE_OLD_PATH}"/data/tmp/gecko "${PORT_WINE_PATH}/data/tmp/"
|
|
|
|
cp -f "${PORT_WINE_OLD_PATH}"/data/img/*.png "${PORT_WINE_PATH}"/data/img/
|
|
|
|
cp -f "${PORT_WINE_OLD_PATH}"/*.desktop "${PORT_WINE_PATH}"/
|
|
|
|
sed -i "s|env \"${PORT_WINE_OLD_PATH}/data/scripts/start.sh\"|$PW_EXEC|g" "${PORT_WINE_PATH}"/*.desktop
|
|
sed -i "s|${PORT_WINE_OLD_PATH}|${PORT_WINE_PATH}|g" "${PORT_WINE_PATH}"/*.desktop
|
|
|
|
sed -i "s|env \"${PORT_WINE_OLD_PATH}/data/scripts/start.sh\"|$PW_EXEC|g" "${HOME}/.local/share/applications"/*.desktop
|
|
sed -i "s|${PORT_WINE_OLD_PATH}|${PORT_WINE_PATH}|g" "${HOME}/.local/share/applications"/*.desktop
|
|
|
|
sed -i "s|env \"${PORT_WINE_OLD_PATH}/data/scripts/start.sh\"|$PW_EXEC|g" "$(xdg-user-dir DESKTOP)"/*.desktop
|
|
sed -i "s|${PORT_WINE_OLD_PATH}|${PORT_WINE_PATH}|g" "$(xdg-user-dir DESKTOP)"/*.desktop
|
|
|
|
if [[ -d "${PORT_WINE_OLD_PATH}"/steam_scripts/ ]] ; then
|
|
create_new_dir "${PORT_WINE_PATH}/steam_scripts/"
|
|
cp -f "${PORT_WINE_OLD_PATH}"/steam_scripts/* "${PORT_WINE_PATH}"/steam_scripts/
|
|
sed -i "s|\"${PORT_WINE_OLD_PATH}/data/scripts/start.sh\"|$PW_EXEC|g" "${PORT_WINE_PATH}"/steam_scripts/*
|
|
|
|
for STUIDPATH in "${HOME}"/.local/share/Steam/userdata/*/ ; do
|
|
SCPATH="${STUIDPATH}/config/shortcuts.vdf"
|
|
if [[ -f "$SCPATH" ]]
|
|
then sed -i "s|${PORT_WINE_OLD_PATH}|${PORT_WINE_PATH}|g" "$SCPATH"
|
|
else break
|
|
fi
|
|
done
|
|
fi
|
|
pw_stop_progress_bar
|
|
yad_info "$(gettext "PortProton has been moved to flatpak. You can now remove the old directory:") ${PORT_WINE_OLD_PATH}"
|
|
fi
|
|
fi
|
|
|
|
unset INSTALLING_PORT
|
|
|
|
echo "Restarting PP after installing..."
|
|
export SKIP_CHECK_UPDATES=1
|
|
/usr/bin/env bash -c "${PORT_WINE_PATH}/data/scripts/start.sh" $@ &
|
|
exit 0
|