forked from CastroFidel/PortWINE
		
	
		
			
				
	
	
		
			169 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						||
# License GPL
 | 
						||
########################################################################
 | 
						||
clear && echo '
 | 
						||
████─████─████─███─█───█─███─█──█─███
 | 
						||
█──█─█──█─█──█──█──█───█──█──██─█─█
 | 
						||
████─█──█─████──█──█─█─█──█──█─██─███
 | 
						||
█────█──█─█─█───█──█████──█──█──█─█
 | 
						||
█────████─█─█───█───█─█──███─█──█─███
 | 
						||
 | 
						||
'
 | 
						||
########################################################################
 | 
						||
export gamedir="PortProton"
 | 
						||
export gamename="Proton"
 | 
						||
export portname="PortProton"
 | 
						||
export port_ver=XX
 | 
						||
########################################################################
 | 
						||
export PW_FTP_URL="https://portwine-linux.ru/ftp"
 | 
						||
export INSTALLING_PORT=1
 | 
						||
export PROGS_INST=""
 | 
						||
export vexit=0
 | 
						||
export minimum_ldd_ver="2.28"
 | 
						||
########################################################################
 | 
						||
export local_script_hash=$(sha256sum "$0" | awk '{print $1}')
 | 
						||
export remote_script_hash=`curl -s --list-only "${PW_FTP_URL}/portwine/${portname}-${port_ver}.sha256sum" | awk '{print $1}'`
 | 
						||
if [ "${local_script_hash}" != "${remote_script_hash}" ] ; then
 | 
						||
	echo "\033[31mHash sum does not match, please download the ${portname}-${port_ver} again.\033[0m"
 | 
						||
	zenity --error --no-wrap --text "Hash sum does not match, please download the ${portname}-${port_ver} again." 2> /dev/null  
 | 
						||
	exit 1
 | 
						||
fi	
 | 
						||
export system_ldd_ver=`ldd --version | grep -m1 ldd | awk '{print $NF}'` 
 | 
						||
if [ `echo ${system_ldd_ver} | tr -d .` -lt `echo ${minimum_ldd_ver} | tr -d .` ] ; then
 | 
						||
	echo "\033[31mYour system doesn\`t support ${portname}.\nGlibc version required >= ${minimum_ldd_ver}\nGlibc in your system = ${system_ldd_ver}\033[0m"
 | 
						||
	zenity --error --no-wrap --text "Your system doesn\`t support ${portname}.\nGlibc version required >= ${minimum_ldd_ver}\nGlibc in your system = ${system_ldd_ver}" 2> /dev/null  
 | 
						||
	exit 1
 | 
						||
fi
 | 
						||
for PROGS in "wget" "curl" "tar" 
 | 
						||
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 "$(dirname "`readlink -f "$0"`")"
 | 
						||
links="$(pwd)"
 | 
						||
setup_script="${portname}"-"${port_ver}"
 | 
						||
ARCH_NAME="${setup_script}.tar.xz"
 | 
						||
deflink="/home/${USER}/PortWINE/${portname}"
 | 
						||
[ $(id -u) -eq 0 ] && echo "Do not run the script from the superuser!" && zenity --error --text "Do not run the script from the superuser!" 2> /dev/null  && exit 1
 | 
						||
########################################################################
 | 
						||
if [ "$1" = "-rus" ] ; then
 | 
						||
	SET_LANG="Russian"
 | 
						||
	export s_install="1"
 | 
						||
elif [ "$1" = "-eng" ] ; then
 | 
						||
	SET_LANG="English"
 | 
						||
	export s_install="1"
 | 
						||
else
 | 
						||
	SET_LANG=`zenity --title  "Install $portname" --text "Select the installation language" --list --radiolist \
 | 
						||
--column="Set:" --column "Language:" \
 | 
						||
	TRUE "Russian" \
 | 
						||
	FALSE "English" ` 2> /dev/null  
 | 
						||
	if [ $? -eq 1 ] ; then exit 1 ; fi
 | 
						||
	case $SET_LANG in
 | 
						||
		"Russian")
 | 
						||
			INFO_TEXT="Вы запустили установщик PortWINE ${gamename} версии ${port_ver}. \n\nЭто не коммерческий продукт и развивается исключительно за идею и Ваши пожертвования. \nВсе права сторонего програмного обеспечения принадлежат их владельцам! \nПродолжая установку вы автоматически соглашаетесь с данными условиями." > /dev/null 2>&1 ;;	
 | 
						||
		"English")
 | 
						||
			INFO_TEXT="You run the installer PortWINE ${gamename} v. ${port_ver}. \n\nThis is not a commercial product and developed exclusively for the idea and donate. \nAll rights to third-party software belong to their respective owners! \nContinuing the installation of 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 "error" && exit 1 ; fi
 | 
						||
fi
 | 
						||
########################################################################
 | 
						||
if [ "${s_install}" = "1" ] ; then
 | 
						||
	echo "${portname} is installed in ${deflink}"
 | 
						||
	D_PATH="${deflink}"
 | 
						||
else
 | 
						||
	case $SET_LANG in
 | 
						||
		"Russian")
 | 
						||
			inst1=`zenity --title  "Install ${portname}" --text "Выберите путь для установки (обновления) порта,\nили оставьте его по умолчанию." --list --radiolist --width=350 --height=220 \
 | 
						||
			--column="Выбор" --column "Путь:" \
 | 
						||
			TRUE "${deflink}" \
 | 
						||
			FALSE "Другой путь..." ` 2> /dev/null
 | 
						||
			if [ $? -eq 1 ] ; then exit 1 ; fi
 | 
						||
			case $inst1 in
 | 
						||
				"${deflink}")
 | 
						||
					D_PATH="${deflink}" ;;	
 | 
						||
				"Другой путь...")
 | 
						||
					D_PATH=`zenity --file-selection --directory --title="Выберите путь..." ` 
 | 
						||
					D_PATH="${D_PATH}/${portname}" ;;
 | 
						||
			esac ;;
 | 
						||
		"English")
 | 
						||
			inst1=`zenity --title  "Install ${portname}" --text "Select the installation path (update) port,\nor leave it in default." --list --radiolist --width=350 --height=220 \
 | 
						||
			--column="Set..." --column "Path:" \
 | 
						||
			TRUE "${deflink}" \
 | 
						||
			FALSE "Other path..." ` 2> /dev/null
 | 
						||
			if [ $? -eq 1 ];then exit 1; fi
 | 
						||
			case $inst1 in
 | 
						||
				"${deflink}")
 | 
						||
					D_PATH="${deflink}" ;;	
 | 
						||
				"Other path...")
 | 
						||
					D_PATH=`zenity --file-selection --directory --title="Select the path..." ` 
 | 
						||
					D_PATH="${D_PATH}/${portname}" ;;
 | 
						||
			esac ;;
 | 
						||
	esac
 | 
						||
	if [ $? -eq 1 ] ; then echo "error" && exit 1 ; fi
 | 
						||
fi
 | 
						||
########################################################################
 | 
						||
if [ "${s_install}" != "1" ] ; then
 | 
						||
	case $SET_LANG in
 | 
						||
		"Russian")
 | 
						||
			zen() {
 | 
						||
			zenity --progress --title="Установка..." --text="Настройка ${portname}" --pulsate --auto-close --auto-kill --width=450 > /dev/null 2>&1  
 | 
						||
			} ;;
 | 
						||
		"English")
 | 
						||
			zen() {
 | 
						||
			zenity --progress --title="Install..." --text="Install ${portname}" --pulsate --auto-close --auto-kill --width=450 > /dev/null 2>&1  
 | 
						||
			} ;;
 | 
						||
	esac
 | 
						||
	if [ $? -eq 1 ] ; then echo "error" && exit 1 ; fi
 | 
						||
fi
 | 
						||
########################################################################
 | 
						||
export PORT_WINE_PATH="${D_PATH}"
 | 
						||
if [ ! -d "${PORT_WINE_PATH}" ] ; then
 | 
						||
    mkdir -p "$PORT_WINE_PATH"
 | 
						||
else
 | 
						||
    for CLEAN_PORT in "dist" "dist_dxvk" "dist_vkd3d" "libs" "tmp" 
 | 
						||
    do
 | 
						||
        if [ -d "${PORT_WINE_PATH}/data/${CLEAN_PORT}" ] ; then
 | 
						||
        	rm -fR "${PORT_WINE_PATH}/data/${CLEAN_PORT}"
 | 
						||
        fi
 | 
						||
    done
 | 
						||
fi
 | 
						||
if [ -d "${PORT_WINE_PATH}/data/scripts" ] ; then
 | 
						||
    rm -f "${PORT_WINE_PATH}/data/scripts/"* > /dev/null 2>&1
 | 
						||
fi
 | 
						||
########################################################################
 | 
						||
mkdir -p "${PORT_WINE_PATH}/data/tmp"
 | 
						||
echo "${port_ver}" > "${PORT_WINE_PATH}/data/tmp/${portname}_ver"
 | 
						||
case $SET_LANG in
 | 
						||
	"Russian")
 | 
						||
		echo "RUS" > "${PORT_WINE_PATH}/data/tmp/${portname}_loc" ;;
 | 
						||
	"English")
 | 
						||
		echo "ENG" > "${PORT_WINE_PATH}/data/tmp/${portname}_loc" ;;
 | 
						||
esac
 | 
						||
if [ $? -eq 1 ] ; then echo "error" && exit 1 ; fi
 | 
						||
export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
 | 
						||
read "update_loc" < "${PORT_WINE_TMP_PATH}/${portname}_loc"
 | 
						||
export update_loc=${update_loc}
 | 
						||
########################################################################
 | 
						||
cd "${PORT_WINE_PATH}" 
 | 
						||
tail -n +169 "${links}/${setup_script}" > "${PORT_WINE_PATH}/${ARCH_NAME}"
 | 
						||
if [ "${s_install}" = "1" ] ; then
 | 
						||
	tar -Jxvf "${PORT_WINE_PATH}/${ARCH_NAME}" -C "${PORT_WINE_PATH}/"
 | 
						||
else
 | 
						||
	tar -Jxvf "${PORT_WINE_PATH}/${ARCH_NAME}" -C "${PORT_WINE_PATH}/" | zen
 | 
						||
fi
 | 
						||
chmod 755 -R "${PORT_WINE_PATH}"
 | 
						||
mv -f "${PORT_WINE_PATH}/${ARCH_NAME}" "${PORT_WINE_PATH}/data/tmp"
 | 
						||
sed -n 1,168p "${links}/${setup_script}" > "${PORT_WINE_PATH}/data/tmp/${setup_script}"
 | 
						||
echo "${portname}" > "${PORT_WINE_PATH}/data/tmp/portname"
 | 
						||
########################################################################
 | 
						||
cd "${PORT_WINE_PATH}/data/scripts"
 | 
						||
sh "${PORT_WINE_PATH}/data/scripts/setup.sh" && exit 0
 | 
						||
################################ARCH_BIN################################
 |