PortWINE/portwine_install_script/PortProton_1.0
2022-09-22 22:19:50 +03:00

169 lines
7.5 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Author: Castro-Fidel (linux-gaming.ru)
# License MIT
########################################################################
unset PP_AUTOPLAY PP_SET_LANG PP_SILENT_INSTALL
export portname="PortProton"
export port_ver=1.0
########################################################################
export NO_AT_BRIDGE=1
ENG_LANG="English"
RUS_LANG="Russian"
[ -z "${LANG}" ] && export LANG=C
deflink="${HOME}/PortWINE/${portname}"
[ "$(id -u)" -eq 0 ] && echo "This script should NOT be run by root!" && zenity --error --text "This script should NOT be run by root!" 2> /dev/null && exit 1
my_dir=$(dirname "$(readlink -f "$0")")
if [ "$my_dir" == "/usr/bin" ] ; then
[ -z "${XDG_DATA_HOME}" ] && export XDG_DATA_HOME="$HOME/.local/share"
if [ -f "${XDG_DATA_HOME}/PortWINE/PortProton/data/scripts/start.sh" ] ; then
/usr/bin/env bash "${XDG_DATA_HOME}/PortWINE/PortProton/data/scripts/start.sh" "$@"
exit 0
else
if [ -n "$(locale | grep "LANG=ru_RU.UTF-8")" ] ; then
PP_SET_LANG=$RUS_LANG
else
PP_SET_LANG=$ENG_LANG
fi
export PP_SILENT_INSTALL="1"
export PP_AUTOPLAY=1
deflink="${XDG_DATA_HOME}/PortWINE/${portname}"
fi
fi
########################################################################
export INSTALLING_PORT=1
export PROGS_INST=""
export vexit=0
########################################################################
for PROGS in "wget" "curl" "tar" "awk" "zenity" "cabextract" "pidof" ; do
if [ ! -x "$(which "${PROGS}" 2>/dev/null)" ] ; then
PROGS_INST="${PROGS_INST} ${PROGS}" && vexit=1
fi
done
if [ "${vexit}" -eq "1" ] ; then
echo "You will need to install: ${PROGS_INST}, and restart the script"
exit 1
fi
########################################################################
cd "$my_dir"
export links
links="$(pwd)"
########################################################################
if [ "$1" = "-rus" ] ; then
PP_SET_LANG=$RUS_LANG
export PP_SILENT_INSTALL="1"
elif [ "$1" = "-eng" ] ; then
PP_SET_LANG=$ENG_LANG
export PP_SILENT_INSTALL="1"
elif [ -z "${PP_SET_LANG}" ] ; then
PP_SET_LANG=$(zenity --title "Install $portname" --text "Select installation language:" --list --radiolist \
--column="" --column "Language" \
TRUE "$RUS_LANG" \
FALSE "$ENG_LANG" ) 2> /dev/null
if [ $? -eq 1 ] ; then echo "Installation language not set!" && exit 1 ; fi
case $PP_SET_LANG in
"$RUS_LANG")
INFO_TEXT="Вы запустили установщик PortWINE ${portname} версии ${port_ver}. \n\nЭто некоммерческий продукт и развивается исключительно за идею и Ваши пожертвования. \nВсе права стороннего программного обеспечения принадлежат их владельцам! \nПродолжая установку, Вы автоматически соглашаетесь с данными условиями." > /dev/null 2>&1 ;;
"$ENG_LANG")
INFO_TEXT="Youve started PortWINE ${portname} installer v.${port_ver}. \n\nIt is a non-commercial product and is developed only for the idea and with the help of your donations. \nAll third-party software rights belong to their respective owners! \nIf you continue installation, you agree to these terms." > /dev/null 2>&1 ;;
esac
zenity --info --title "INFO" --text "$INFO_TEXT" --no-wrap 2> /dev/null
if [ $? -eq 1 ] ; then echo "INFO message not displayed!" && exit 1 ; fi
fi
########################################################################
if [ "${PP_SILENT_INSTALL}" = "1" ] ; then
echo "${portname} is installed in ${deflink}"
D_PATH="${deflink}"
else
case $PP_SET_LANG in
"$RUS_LANG")
inst1=$(zenity --title "Установка ${portname}" --text "Выберите путь для установки (обновления) PortWINE \nили оставьте его по умолчанию." --list --radiolist --width=350 --height=220 \
--column="" --column "Путь:" \
TRUE "${deflink}" \
FALSE "Другой путь..." ) 2> /dev/null
if [ $? -eq 1 ] ; then echo "Installation path not set!" && exit 1 ; fi
case $inst1 in
"${deflink}")
D_PATH="${deflink}" ;;
"Другой путь...")
D_PATH=$(zenity --file-selection --directory --title="Выберите путь..." )
D_PATH="${D_PATH}/${portname}" ;;
esac ;;
"$ENG_LANG")
inst1=$(zenity --title "Install ${portname}" --text "Choose path to install (update) PortWINE \nor leave it as default." --list --radiolist --width=350 --height=220 \
--column="" --column "Path:" \
TRUE "${deflink}" \
FALSE "Other path..." ) 2> /dev/null
if [ $? -eq 1 ] ; then echo "Installation path not set!" && exit 1; fi
case $inst1 in
"${deflink}")
D_PATH="${deflink}" ;;
"Other path...")
D_PATH=$(zenity --file-selection --directory --title="Choose your path..." )
D_PATH="${D_PATH}/${portname}" ;;
esac ;;
esac
if [ $? -eq 1 ] ; then echo "error" && exit 1 ; fi
fi
########################################################################
case $PP_SET_LANG in
"$RUS_LANG")
progress_bar() {
zenity --progress --title="Установка..." --text="Настройка ${portname}" --pulsate --auto-close --auto-kill --width=450 > /dev/null 2>&1
} ;;
"$ENG_LANG")
progress_bar() {
zenity --progress --title="Install..." --text="Install ${portname}" --pulsate --auto-close --auto-kill --width=450 > /dev/null 2>&1
} ;;
esac
########################################################################
export PORT_WINE_PATH="${D_PATH}"
scripts_dir="${PORT_WINE_PATH}/data/scripts"
if [ ! -d "${PORT_WINE_PATH}" ] ; then
mkdir -p "$PORT_WINE_PATH"
else
rm -fr "${PORT_WINE_PATH}/data/tmp"
rm -f "${scripts_dir}/"* > /dev/null 2>&1
fi
########################################################################
mkdir -p "${PORT_WINE_PATH}/data/tmp"
echo "${port_ver}" > "${PORT_WINE_PATH}/data/tmp/${portname}_ver"
case $PP_SET_LANG in
"$RUS_LANG") echo "RUS" > "${PORT_WINE_PATH}/data/tmp/${portname}_loc" ;;
"$ENG_LANG") echo "ENG" > "${PORT_WINE_PATH}/data/tmp/${portname}_loc" ;;
esac
########################################################################
export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
cd "${PORT_WINE_PATH}"
try_download_scripts () {
wget -O "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz" -nd -c --read-timeout 300 \
--retry-connrefused --timeout 15 --tries 3 \
--user-agent="Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" \
"https://github.com/Castro-Fidel/PortWINE/archive/refs/heads/master.tar.gz"
if [ "$?" = "0" ] ; then
tar -xvzf "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz" -C "${PORT_WINE_TMP_PATH}"
if [ "$?" = "0" ] ; then
[ ! -d "${PORT_WINE_PATH}/data/" ] && mkdir "${PORT_WINE_PATH}/data/"
cp -fr "${PORT_WINE_TMP_PATH}/PortWINE-master/data_from_portwine/"* "${PORT_WINE_PATH}/data/"
rm -f "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz"
rm -fr "${PORT_WINE_TMP_PATH}/PortWINE-master/"
export scripts_current_ver
scripts_current_ver=$(cat "${scripts_dir}/var" | grep SCRIPTS_NEXT_VERSION | awk -F "=" '{print $2}')
echo "${scripts_current_ver}" > "${PORT_WINE_TMP_PATH}/scripts_ver"
else
rm -f "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz"
try_download_scripts
fi
else
try_download_scripts
fi
}
if [ "${PP_SILENT_INSTALL}" = "1" ] && [ ! -f "/usr/bin/portproton" ] ; then
try_download_scripts
else
try_download_scripts | progress_bar
fi
chmod 755 -R "${PORT_WINE_PATH}"
########################################################################
cd "${scripts_dir}"
/usr/bin/env bash "${scripts_dir}/setup.sh" && exit 0