PortWINE/data_from_portwine/scripts/runlib
2021-05-11 02:30:04 +03:00

824 lines
39 KiB
Bash
Executable File
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.

#!/bin/bash
# Author: Castro-Fidel (PortWINE-Linux.ru)
# Development assistants: Cefeiko; Rus_Nor; gavr; RidBowt; Dezert1r
########################################################################
echo '
████─████─████─███─█───█─███─█──█─███
█──█─█──█─█──█──█──█───█──█──██─█─█
████─█──█─████──█──█─█─█──█──█─██─███
█────█──█─█─█───█──█████──█──█──█─█
█────████─█─█───█───█─█──███─█──█─███
'
[ $(id -u) = 0 ] && echo "Do not run this script as root!" && zenity --error --text "Do not run this script as root!" && exit 1
if [ "${s_install}" != "1" ] && [ ! -x "`which "zenity" 2>/dev/null`" ];then
echo "You will need to install: zenity, and restart the port."
xdg-open "http://portwine-linux.ru/portwine-faq/" > /dev/null 2>&1 & exit 0
fi
pw_ping_test () {
ping -w3 -c1 github.com &> /dev/null
[ "$?" == "0" ] && return 0 || return 1
}
print_error () {
echo "ERROR: $@"
}
print_info () {
echo "INFO: $@"
}
print_var () {
for vp in $@ ; do echo "${vp}=${!vp}" ; done
}
try_copy_file () {
if [ ! -f "$1" ] ; then print_info "file $1 not found for copy" && return 1
elif [ -z "$2" ] ; then print_error "no way to copy file $1" && return 1
else
cp -f "$1" "$2"
if [ "$?" != 0 ]
then print_error "failed to copy file $1 to $2" || return 1
else print_info "copy file $1 to $2 was successful" || return 0
fi
fi
}
try_copy_dir () {
if [ ! -d "$1" ] ; then print_info "directory $1 not found for copy"
elif [ -z "$2" ] ; then print_error "no way to copy directory $1"
else
cp -fr "$1" "$2"
[ "$?" != 0 ] && print_error "failed to copy directory $1 to $2" || return 0
fi
return 1
}
try_remove_file () {
if [ -f "$1" ] ; then
rm -f "$1"
[ "$?" != 0 ] && print_error "failed to remove file $1" || return 0
fi
return 1
}
try_remove_dir () {
if [ -d "$1" ] ; then
rm -fr "$1"
[ "$?" != 0 ] && print_error "failed to remove directory $1" || return 0
fi
return 1
}
try_force_link_file () {
if [ ! -f "$1" ] ; then print_info "file $1 not found for link"
elif [ -z "$2" ] ; then print_error "no way to link file $1"
else
[ -f "$2" ] && rm -f "$2"
ln -s "$1" "$2"
[ "$?" != 0 ] && print_error "failed to link file $1 to $2" || return 0
fi
return 1
}
try_force_link_dir () {
if [ ! -d "$1" ] ; then print_info "directory $1 not found for link"
elif [ -z "$2" ] ; then print_error "no way to link directory $1"
else
ln -sf "$1" "$2"
[ "$?" != 0 ] && print_error "failed to link directory $1 to $2" || return 0
fi
return 1
}
try_download () {
set -o pipefail
wget -c -t 5 -T 2 "$1" --output-document="$2" 2>&1 | \
sed -u 's/^[a-zA-Z\-].*//; s/.* \{1,2\}\([0-9]\{1,3\}\)%.*/\1\n#Downloading... \1%/; s/^20[0-9][0-9].*/#Done./' | \
zenity --progress --percentage=0 --title="Download $(basename $1)" --text=Starting... --auto-close --auto-kill --width=500 --height=90
[ "${PIPESTATUS[0]}" != 0 ] && print_error "failed to download $1. Scipping." && return 1 || return 0
}
zenity_error_download () {
`zenity --error --title "Error..." --text "You will need to check internet connettion,\nand press OK for repeet download" --no-wrap ` > /dev/null 2>&1
}
create_new_dir () {
if [ ! -d "$1" ] ; then
mkdir -p "$1"
fi
}
var_winedlloverride_update () {
if [ ! -z "${WINEDLLOVERRIDES}" ]
then export WINEDLLOVERRIDES="${1};${WINEDLLOVERRIDES}"
else export WINEDLLOVERRIDES="${1}"
fi
}
var_vkd3d_config_update () {
if [ ! -z "${VKD3D_CONFIG}" ]
then export VKD3D_CONFIG="${1};${VKD3D_CONFIG}"
else export VKD3D_CONFIG="${1}"
fi
}
unpack_tar_xz () {
set -o pipefail
tar -Jxvf "$1" -C "$2" | sszen
[ "${PIPESTATUS[0]}" != 0 ] && print_error "File unpacking error." && return 1 || return 0
}
pw_mangohud_check () {
export RUN_MANGOHUD=""
export MANGOHUD=0
export MANGOHUD_DLSYM=0
if [ -x "`which mangohud 2>/dev/null`" ] && [ "${PW_MANGOHUD}" == "1" ] ; then
if [ "${PW_VULKAN_USE}" = "0" ]; then
export MANGOHUD_DLSYM=1
export RUN_MANGOHUD=mangohud
else
export MANGOHUD=1
fi
fi
}
pw_clear_pfx () {
try_remove_file "${WINEPREFIX}/system.reg"
try_remove_file "${WINEPREFIX}/user.reg"
try_remove_file "${WINEPREFIX}/userdef.reg"
try_remove_file "${WINEPREFIX}/winetricks.log"
try_remove_dir "${WINEPREFIX}/drive_c/windows/"
}
sszen() {
zenity --progress --title="Settings..." --text="Updating parameters" --pulsate --auto-close --width=500 --height=90 --no-cancel
}
PW_START_PROGRESS_BAR_CS () {
"${pw_yad}" --progress --progress-text="$@" --pulsate --close-on-unfocus \
--no-buttons --undecorated --center --skip-taskbar --width=500 --wrap-width=500 &
echo ""
}
PW_START_PROGRESS_BAR_BLOCK () {
"${pw_yad}" --progress --progress-text="$@" --pulsate \
--no-buttons --undecorated --center --skip-taskbar --width=500 --wrap-width=500 &
echo ""
}
PW_STOP_PROGRESS_BAR () {
while [ ! -z "`pgrep -a yad | grep "\-\-progress" | awk '{print $1}'`" ]
do kill -n 9 `pgrep -a yad | grep "\-\-progress" | awk '{print $1}' | head -n 1`
done
}
PW_LOAD_LIBS () {
if [ ! -e "${WINELIB}/run.sh" ] || [ ! -e "${WINELIB}/usr/bin/yad" ] || [ ! -e "${WINELIB}/usr/lib/p7zip/7zr" ] \
|| [ ! -e "${WINELIB}/amd64/usr/bin/vkcube" ] || [ ! -e "${WINELIB}/amd64/usr/bin/xterm" ] || \
[ -e "${HOME}/.PortWINE/tmp/libs${pw_libs_ver}.tar.xz" ] ; then
print_info "Download and install libraries..."
if try_download "https://github.com/Castro-Fidel/PortWINE/releases/download/libs${pw_libs_ver}/libs${pw_libs_ver}.tar.xz" "${HOME}/.PortWINE/tmp/libs${pw_libs_ver}.tar.xz" ; then
if unpack_tar_xz "${HOME}/.PortWINE/tmp/libs${pw_libs_ver}.tar.xz" "${HOME}/.PortWINE/" ; then
try_remove_file "${HOME}/.PortWINE/tmp/libs${pw_libs_ver}.tar.xz"
else
try_remove_dir "${HOME}/.PortWINE/libs${pw_libs_ver}"
try_remove_file "${HOME}/.PortWINE/tmp/libs${pw_libs_ver}.tar.xz"
`zenity --error --title "Error..." \
--text "Failed to install runtime libraries.\nCheck internet connection and press OK" \
--no-wrap ` > /dev/null 2>&1 && PW_LOAD_LIBS
fi
else
`zenity --error --title "Error..." \
--text "Failed to download runtime libraries.\nCheck internet connection and press OK" \
--no-wrap ` > /dev/null 2>&1 && PW_LOAD_LIBS
fi
fi
try_remove_dir "${WINELIB}/pinned_libs_32"
try_remove_dir "${WINELIB}/pinned_libs_64"
export pw_yad="${WINELIB}/usr/bin/yad"
export pw_zstd="${WINELIB}/usr/bin/zstd"
export pw_7z="${WINELIB}/usr/lib/p7zip/7zr"
if [ -x "`which xterm 2>/dev/null`" ]; then
export SYS_XTERM=`which xterm`
export PW_XTERM="${SYS_XTERM} -geometry 159x37 -e"
else
export PW_XTERM="${WINELIB}/amd64/usr/bin/xterm -geometry 159x37 -e"
fi
}
PW_DOWNLOAD_MONO () {
if [ ! -d "${HOME}/.PortWINE/mono/wine-mono-${mono_ver}" ] ; then
echo "######################################################"
print_info "Download and install wine mono..."
if try_download "${url_mono}" "${HOME}/.PortWINE/tmp/wine-mono-${mono_ver}-x86.tar.xz" ; then
create_new_dir "${HOME}/.PortWINE/mono"
if ! unpack_tar_xz "${HOME}/.PortWINE/tmp/wine-mono-${mono_ver}-x86.tar.xz" "${HOME}/.PortWINE/mono/"
then
try_remove_dir "${HOME}/.PortWINE/mono/wine-mono-${mono_ver}-x86"
zenity_error_download && PW_DOWNLOAD_MONO
fi
try_remove_file "${HOME}/.PortWINE/tmp/wine-mono-${mono_ver}-x86.tar.xz"
else
zenity_error_download && PW_DOWNLOAD_MONO
fi
fi
}
PW_DOWNLOAD_GECKO () {
if [ ! -d "${HOME}/.PortWINE/gecko/wine-gecko-${gecko_ver}-x86" ] ; then
echo "######################################################"
echo "Download and install wine gecko x86..."
if try_download "${url_gecko_x86}" "${HOME}/.PortWINE/tmp/wine-gecko-${gecko_ver}-x86.tar.xz" ; then
create_new_dir "${HOME}/.PortWINE/gecko"
if ! unpack_tar_xz "${HOME}/.PortWINE/tmp/wine-gecko-${gecko_ver}-x86.tar.xz" "${HOME}/.PortWINE/gecko/"
then
try_remove_dir "${HOME}/.PortWINE/gecko/wine-gecko-${gecko_ver}-x86"
zenity_error_download && PW_DOWNLOAD_GECKO
fi
try_remove_file "${HOME}/.PortWINE/tmp/wine-gecko-${gecko_ver}-x86.tar.xz"
else
zenity_error_download && PW_DOWNLOAD_GECKO
fi
fi
if [ ! -d "${HOME}/.PortWINE/gecko/wine-gecko-${gecko_ver}-x86_64" ] ; then
echo "######################################################"
echo "Download and install wine gecko x86_64..."
if try_download "${url_gecko_x86_64}" "${HOME}/.PortWINE/tmp/wine-gecko-${gecko_ver}-x86_64.tar.xz" ; then
create_new_dir "${HOME}/.PortWINE/gecko"
if ! unpack_tar_xz "${HOME}/.PortWINE/tmp/wine-gecko-${gecko_ver}-x86_64.tar.xz" "${HOME}/.PortWINE/gecko/"
then
try_remove_dir "${HOME}/.PortWINE/gecko/wine-gecko-${gecko_ver}-x86_64"
zenity_error_download && PW_DOWNLOAD_GECKO
fi
try_remove_file "${HOME}/.PortWINE/tmp/wine-gecko-${gecko_ver}-x86_64.tar.xz"
else
zenity_error_download && PW_DOWNLOAD_GECKO
fi
fi
create_new_dir "${WINEDIR}/share/wine/"
try_force_link_dir "${HOME}/.PortWINE/gecko" "${WINEDIR}"/share/wine/
try_force_link_dir "${HOME}/.PortWINE/mono" "${WINEDIR}"/share/wine/
}
START_PORTWINE ()
{
if [ -x "`which konsole 2>/dev/null`" ]; then export PW_TERM="konsole --nofork -e"
# elif [ -x "`which gnome-terminal 2>/dev/null`" ]; then export PW_TERM="gnome-terminal -- /bin/bash" ???
elif [ -x "`which lxterminal 2>/dev/null`" ]; then export PW_TERM="lxterminal -e"
elif [ -x "`which xterm 2>/dev/null`" ]; then export PW_TERM="${PW_XTERM}"
else export PW_TERM="${PW_XTERM}"
fi
try_remove_dir "${PORT_WINE_PATH}/data/vulkan"
create_new_dir "${PW_VULKAN_DLL}"
export url_dxvk="https://github.com/doitsujin/dxvk/releases/download/v${PW_DXVK_VER}/dxvk-${PW_DXVK_VER}.tar.gz"
if [ ! -d "${PW_VULKAN_DLL}/dxvk-${PW_DXVK_VER}" ] ; then
if pw_ping_test ; then
if try_download "${url_dxvk}" "${PW_VULKAN_DLL}/dxvk-${PW_DXVK_VER}.tar.gz" ; then
tar -zxvf "${PW_VULKAN_DLL}/dxvk-${PW_DXVK_VER}.tar.gz" -C "${PW_VULKAN_DLL}/"
try_remove_file "${PW_VULKAN_DLL}/dxvk-${PW_DXVK_VER}.tar.gz"
else
try_remove_file "${PW_VULKAN_DLL}/dxvk-${PW_DXVK_VER}.tar.gz"
`zenity --error --title "Error..." --text "You will need check internet connettion,\nor change DXVK version in db file!" --no-wrap ` > /dev/null 2>&1
PW_EDIT_DB & exit 1
fi
else
export PW_DXVK_VER="${PW_DEF_DXVK_VER}"
fi
fi
export url_vkd3d="https://github.com/HansKristian-Work/vkd3d-proton/releases/download/v${PW_VKD3D_VER}/vkd3d-proton-${PW_VKD3D_VER}.tar.zst"
if [ ! -d "${PW_VULKAN_DLL}/vkd3d-proton-${PW_VKD3D_VER}" ] ; then
if pw_ping_test ; then
if try_download "${url_vkd3d}" "${PW_VULKAN_DLL}/vkd3d-proton-${PW_VKD3D_VER}.tar.zst" ; then
tar -C "${PW_VULKAN_DLL}/" -I "${pw_zstd}" -xvf "${PW_VULKAN_DLL}/vkd3d-proton-${PW_VKD3D_VER}.tar.zst"
try_remove_file "${PW_VULKAN_DLL}/vkd3d-proton-${PW_VKD3D_VER}.tar.zst"
else
try_remove_file "${PW_VULKAN_DLL}/vkd3d-proton-${PW_VKD3D_VER}.tar.zst"
`zenity --error --title "Error..." --text "You will need to change VKD3D version in db file!" --no-wrap ` > /dev/null 2>&1
PW_EDIT_DB & exit 1
fi
else
export PW_VKD3D_VER="${PW_DEF_VKD3D_VER}"
fi
fi
PW_START_PROGRESS_BAR_CS "Start ${portname}... Please wait..."
export WINELOADER="${WINEDIR}/bin/wine"
export WINEDLLPATH="${WINEDIR}/lib64/wine:${WINEDIR}/lib/wine:${PATH_TO_GAME}"
export WINESERVER="${WINEDIR}/bin/wineserver"
if [ ! -z "${PATH}" ]
then export PATH="${WINEDIR}/bin:${PATH}"
else export PATH="${WINEDIR}/bin"
fi
if [ ! -z "${LD_LIBRARY_PATH}" ]
then export LD_LIBRARY_PATH="${WINEDIR}/lib64:${WINEDIR}/lib:${LD_LIBRARY_PATH}"
else export LD_LIBRARY_PATH="${WINEDIR}/lib64:${WINEDIR}/lib"
fi
export WINE="${WINELOADER}"
# export GST_PLUGIN_SYSTEM_PATH_1_0="${WINEDIR}/lib64/gstreamer-1.0:${WINEDIR}/gstreamer-1.0"
export WINE_GST_REGISTRY_DIR="${PORT_WINE_TMP_PATH}"
export MEDIACONV_AUDIO_DUMP_FILE="${PORT_WINE_TMP_PATH}"/audio.foz
export MEDIACONV_AUDIO_TRANSCODED_FILE="${PORT_WINE_TMP_PATH}"/transcoded_audio.foz
export MEDIACONV_VIDEO_DUMP_FILE="${PORT_WINE_TMP_PATH}"/video.foz
export MEDIACONV_VIDEO_TRANSCODED_FILE="${PORT_WINE_TMP_PATH}"/transcoded_video.foz
if [ ! -z "${PW_LOG}" ] && [ "${PW_LOG}" != 0 ] ; then
export WINEDEBUG="fixme-all,err+loaddll,err+dll,err+file,err+reg"
export DXVK_LOG_LEVEL="info"
export VKD3D_DEBUG="warn"
export WINE_MONO_TRACE="E:System.NotImplementedException"
else
export WINEDEBUG="-all"
export DXVK_LOG_LEVEL="none"
export VKD3D_DEBUG="none"
export DXVK_LOG_PATH="none"
fi
#default wine-mono override for FNA games
export WINE_MONO_OVERRIDES="Microsoft.Xna.Framework.*,Gac=n"
if [ ! -z "${PW_NO_ESYNC}" ] && [ "${PW_NO_ESYNC}" != 0 ]
then export WINEESYNC="0"
else export WINEESYNC="1"
fi
if [ ! -z "${PW_NO_FSYNC}" ] && [ "${PW_NO_FSYNC}" != 0 ] ; then
export WINEFSYNC="0"
export WINEFSYNC_FUTEX2="0"
else
export WINEFSYNC="1"
export WINEFSYNC_FUTEX2="1"
fi
if [ ! -z "${PW_FORCE_LARGE_ADDRESS_AWARE}" ] && [ "${PW_FORCE_LARGE_ADDRESS_AWARE}" != 0 ]
then export WINE_LARGE_ADDRESS_AWARE="1"
else export WINE_LARGE_ADDRESS_AWARE="0"
fi
if [ ! -z "${PW_OLD_GL_STRING}" ] && [ "${PW_OLD_GL_STRING}" != 0 ] ; then
export MESA_EXTENSION_MAX_YEAR="2003" #mesa override
export __GL_ExtensionStringVersion="17700" #nvidia override
fi
if [ ! -z "${PW_NO_WRITE_WATCH}" ] && [ "${PW_NO_WRITE_WATCH}" != 0 ] ; then
export WINE_DISABLE_WRITE_WATCH="1"
fi
if [ ! -z "${PW_VULKAN_NO_ASYNC}" ] && [ "${PW_VULKAN_NO_ASYNC}" != 0 ] ; then
export RADV_DEBUG="llvm"
var_vkd3d_config_update single_queue
fi
if [ ! -z "${PW_NVAPI_DISABLE}" ] && [ "${PW_NVAPI_DISABLE}" != 0 ] ; then
var_winedlloverride_update "nvapi,nvapi64="
fi
if [ ! -z "${PW_WINEDBG_DISABLE}" ] && [ "${PW_WINEDBG_DISABLE}" != 0 ] ; then
var_winedlloverride_update "winedbg.exe="
fi
if [ ! -z "${PW_HIDE_NVIDIA_GPU}" ] && [ "${PW_HIDE_NVIDIA_GPU}" != 0 ] ; then
export WINE_HIDE_NVIDIA_GPU="1"
fi
if [ ! -z "${PW_HEAP_DELAY_FREE}" ] && [ "${PW_HEAP_DELAY_FREE}" != 0 ]
then export WINE_HEAP_DELAY_FREE="1"
else export WINE_HEAP_DELAY_FREE="0"
fi
if [ ! -z "${PW_WINE_ALLOW_XIM}" ] && [ "${PW_WINE_ALLOW_XIM}" != 0 ]
then export WINE_ALLOW_XIM="1"
else export WINE_ALLOW_XIM="0"
fi
if [ ! -z "${PW_DXR_ON}" ] && [ "${PW_DXR_ON}" != 0 ] ; then
var_vkd3d_config_update dxr
fi
create_new_dir "${PORT_WINE_TMP_PATH}/dxvk_cache"
export DXVK_STATE_CACHE_PATH="${PORT_WINE_TMP_PATH}"/dxvk_cache
export DXVK_STATE_CACHE=1
export optirun_on=""
export check_optimus_manager=
export PW_NVIDIA="$(lspci | grep NVIDIA)"
if [ -x "`which optimus-manager 2>/dev/null`" ]; then
export check_optimus_manager=`optimus-manager --status | grep Current | cut -f 2 -d':' | sed -e 's/^[[:space:]]*//'`
fi
if [ ! -z "${PW_NVIDIA}" ] && [ "${check_optimus_manager}" != "intel" ]; then
if [ "${check_optimus_manager}" = "nvidia" ]; then
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
elif [ -x "`which primusrun 2>/dev/null`" ]; then
export optirun_on="primusrun"
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
elif [ -x "`which optirun 2>/dev/null`" ]; then
export optirun_on="optirun -b primus"
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
elif [ -x "`which prime-run 2>/dev/null`" ]; then
export optirun_on="prime-run"
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
fi
#export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
if [ ! -d "${PORT_WINE_TMP_PATH}"/gl_shader_cache ] ; then
mkdir -p "${PORT_WINE_TMP_PATH}"/gl_shader_cache
fi
export __GL_SHADER_DISK_CACHE_PATH="${PORT_WINE_TMP_PATH}/gl_shader_cache"
export __GL_SHADER_DISK_CACHE=1
export __GL_SHADER_DISK_CACHE_SIZE=1000000000
export __GL_DXVK_OPTIMIZATIONS=1
else
export DRI_PRIME=1
fi
case "$PW_FORCE_USE_VSYNC" in # 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT
"0")
export vblank_mode=0
export __GL_SYNC_TO_VBLANK=0 ;;
"1")
export vblank_mode=1
export __GL_SYNC_TO_VBLANK=1 ;;
esac
export DXVK_CONFIG_FILE="${PORT_WINE_PATH}/data/dxvk.conf"
export int_xneur=0
if [ $(pgrep xneur)>'0' ]; then
killall xneur
export int_xneur=1
fi
export PW_XKBD="$(setxkbmap -query | grep -w ru | awk '{print($2)}')"
if [ ! -z ${PW_XKBD} ]; then
setxkbmap us,ru
fi
if [ -x "`which "gamemoderun" 2>/dev/null`" ] && [ "$PW_FORCE_DISABLED_GAMEMOD" -eq "0" ]; then
export PW_GAMEMODERUN=1
echo "Gamemod will be launched."
else
export PW_GAMEMODERUN=0
echo "Gamemod is not installed or disabled in vars script: PW_FORCE_DISABLED_GAMEMOD=$PW_FORCE_DISABLED_GAMEMOD"
fi
PW_INIT_PFX
RUN_WINETRICKS_FROM_DB
ADD_IN_START_PORTWINE
}
WAIT_WINESERVER () {
sleep 3
while [ ! -z "$(ls -l /proc/*/exe 2>/dev/null | grep -ie ${portname} | grep -E 'wine(64)?-preloader|wineserver' | awk -F/ '{print $3}')" ] ; do
sleep 1
done
}
KILL_PORTWINE () {
wine_pids=`ls -l /proc/*/exe 2>/dev/null | grep -ie ${portname} | grep -E 'wine(64)?-preloader| ' | awk -F/ '{print $3}'`
if [ ! -z "${wine_pids}" ] ; then
for pw_kill_pids in ${wine_pids} ; do
if [ "`ps cax | grep ${pw_kill_pids}`" ] ; then
kill -n 9 ${pw_kill_pids}
fi
done
fi
}
STOP_PORTWINE () {
WAIT_WINESERVER
ADD_IN_STOP_PORTWINE
if [ "$int_xneur" = "1" ]; then
xneur &
fi
if [ ! -z ${PW_XKBD} ]; then
setxkbmap ${PW_XKBD}
fi
PW_STOP_PROGRESS_BAR
try_remove_file "${PORT_SCRIPTS_PATH}/0"
try_remove_file "${PORT_SCRIPTS_PATH}/1"
}
UPDATE_WINETRICKS () {
W_TRX_URL="https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks"
W_TRX_EXT_VER="$(curl -s --list-only ${W_TRX_URL} | grep -i 'WINETRICKS_VERSION=' | sed 's/WINETRICKS_VERSION=//')"
print_info "Version winetricks on server: ${W_TRX_EXT_VER}"
W_TRX_INT_VER="$(cat "${PORT_WINE_TMP_PATH}/winetricks" | grep -i 'WINETRICKS_VERSION=' | sed 's/WINETRICKS_VERSION=//')"
print_info "Version winetricks in port: ${W_TRX_INT_VER}"
if [ ! -f "${PORT_WINE_TMP_PATH}/winetricks" ] || [ "$W_TRX_INT_VER" != "$W_TRX_EXT_VER" ] ; then
if try_download "${W_TRX_URL}" "${PORT_WINE_TMP_PATH}/winetricks_new" ; then
mv -f "${PORT_WINE_TMP_PATH}/winetricks_new" "${PORT_WINE_TMP_PATH}/winetricks"
W_TRX_INT_VER="$(cat "${PORT_WINE_TMP_PATH}/winetricks" | grep -i 'WINETRICKS_VERSION=' | sed 's/WINETRICKS_VERSION=//')" && print_info "Winetricks version in port has been updated (${W_TRX_INT_VER})"
chmod u+x "${PORT_WINE_TMP_PATH}/winetricks"
fi
fi
if [ -f "${PORT_WINE_TMP_PATH}/winetricks" ] ; then
sed -i 's/w_metadata vcrun2015 dlls \\/w_metadata !dont_use_2015! dlls \\/' "${PORT_WINE_TMP_PATH}/winetricks"
sed -i 's/w_metadata vcrun2017 dlls \\/w_metadata !dont_use_2017! dlls \\/' "${PORT_WINE_TMP_PATH}/winetricks"
fi
}
RUN_WINETRICKS_FROM_DB () {
UPDATE_WINETRICKS
if [ ! -z "${PW_DLL_INSTALL}" ]; then
PW_STOP_PROGRESS_BAR
export PW_DLL_NEED_INSTALL=""
export USE_WT_FROM_DB=0
if [ -e "${WINEPREFIX}/winetricks.log" ] ; then
for need_install_dll_to_pfx in ${PW_DLL_INSTALL} ; do
if [ "${need_install_dll_to_pfx}" == "vcrun2015" ] || [ "${need_install_dll_to_pfx}" == "vcrun2017" ] ; then
need_install_dll_to_pfx="vcrun2019"
sed -i '/vcrun2015/d' "${WINEPREFIX}/winetricks.log"
sed -i '/vcrun2017/d' "${WINEPREFIX}/winetricks.log"
elif [ "${need_install_dll_to_pfx}" == "vcrun2019" ] ; then
sed -i '/vcrun2015/d' "${WINEPREFIX}/winetricks.log"
sed -i '/vcrun2017/d' "${WINEPREFIX}/winetricks.log"
fi
grep "${need_install_dll_to_pfx}" "${WINEPREFIX}/winetricks.log"
if [ "$?" == "1" ] ; then
if [ -z "${PW_DLL_NEED_INSTALL}" ]
then export PW_DLL_NEED_INSTALL="${need_install_dll_to_pfx}"
else export PW_DLL_NEED_INSTALL="${need_install_dll_to_pfx} ${PW_DLL_NEED_INSTALL}"
fi
export USE_WT_FROM_DB=1
fi
done
else
export PW_DLL_NEED_INSTALL="${PW_DLL_INSTALL}"
export USE_WT_FROM_DB=1
fi
if [ "${USE_WT_FROM_DB}" == "1" ] ; then
UPDATE_WINETRICKS
PW_STOP_PROGRESS_BAR
print_info "Need to install DLL in prefix: ${PW_DLL_NEED_INSTALL}"
${PW_TERM} "${PW_RUNTIME}" "${PORT_WINE_TMP_PATH}/winetricks" -q --force ${PW_DLL_NEED_INSTALL}
fi
PW_START_PROGRESS_BAR_CS "Start ${portname}... Please wait..."
fi
if [[ -z `cat "${WINEPREFIX}/system.reg" | grep "Windows $PW_WINDOWS_VER"` ]] ; then
if [ ! -z "${PW_WINDOWS_VER}" ] && [ `echo "$PW_WINDOWS_VER" | sed 's/.*/\L&/'` == "xp" ] ; then
export PW_WINDOWS_VER="xp64"
fi
"${PW_RUNTIME}" "${WINELOADER}" winecfg -v `echo "win${PW_WINDOWS_VER}" | sed 's/.*/\L&/'`
echo "Set to win${PW_WINDOWS_VER}"
fi
}
PW_INIT_DB () {
if [ ! -z "${portwine_exe}" ]; then
export PORTWINE_DB=`echo "${portwine_exe}" | awk -F '/' 'NF>1{print $NF}' | sed s/".exe"/""/gi`
export PATH_TO_GAME="$( cd "$( dirname "${portwine_exe}" )" >/dev/null 2>&1 && pwd )"
export WIN_PATH_TO_GAME=`echo "C:${PATH_TO_GAME}" | sed "s%$WINEPREFIX%%g" | sed "s/drive_c//g" | sed 's#/#\\\#g'`
fi
if [ ! -z "${PORTWINE_DB}" ]; then
PORTWINE_DB_FILE=`grep -ilw "#${PORTWINE_DB}" "${PORT_SCRIPTS_PATH}/portwine_db"/* | sed s/".exe"/""/gi`
if [ ! -z "${PORTWINE_DB_FILE}" ]; then
. "${PORTWINE_DB_FILE}"
echo "Use ${PORTWINE_DB_FILE} db file."
else
. "${PORT_SCRIPTS_PATH}/portwine_db/default"
echo "Use default db file."
fi
fi
}
PW_UPDATE () {
if [ ! -f "${PORT_WINE_TMP_PATH}/${portname}_ver" ] ; then
echo "10" > "${PORT_WINE_TMP_PATH}/${portname}_ver"
fi
if [ ! -f "${PORT_WINE_TMP_PATH}/update_notifier" ] ; then
echo "1" > "${PORT_WINE_TMP_PATH}/update_notifier"
fi
read "update_not" < "${PORT_WINE_TMP_PATH}/update_notifier"
if [ "${update_not}" = "1" ] ; then
echo `curl -s --list-only "${PW_FTP_URL}/current_version/${portname}_ver"` > "${PORT_WINE_TMP_PATH}/${portname}_cur_ver"
if [ -f "${PORT_WINE_TMP_PATH}/${portname}_ver" ] ; then
read current_ver < "${PORT_WINE_TMP_PATH}/${portname}_cur_ver"
try_remove_file "${PORT_WINE_TMP_PATH}/${portname}_cur_ver"
if [ ! -z "${current_ver}" ] && [ "${current_ver}" -gt "${install_ver}" ] ; then
xsd=`zenity --title "${port_upd1}" --text "${port_upd2}" --list --radiolist --height=220 --column="${inst_set}" --column "${port_upd3}" \
TRUE "${port_upd4}" \
FALSE "${port_upd5}" \
FALSE "${port_upd6}" `
case $xsd in
"${port_upd4}")
KILL_PORTWINE
# if try_download https://portwine-linux.ru/ftp/portwine/PortProton-$current_ver "${HOME}/.PortWINE/tmp/PortProton-$current_ver" ; then
# sh "${HOME}/.PortWINE/tmp/PortProton-$current_ver"
# try_remove_file "${HOME}/.PortWINE/tmp/PortProton-$current_ver"
# fi &
xdg-open $porturl
exit 0 ;;
"${port_upd5}")
echo " " ;;
"${port_upd6}")
echo "0" > "${PORT_WINE_TMP_PATH}/update_notifier" ;;
esac
fi
fi
fi
if [ ! -f "${HOME}/.config/.PortTime" ] ; then
echo "10" > "${HOME}/.config/.PortTime"
fi
read "port_time" < "${HOME}/.config/.PortTime"
if [ "${port_time}" -gt "1" ] ; then
port_time=$((${port_time}-1))
echo "${port_time}" > "${HOME}/.config/.PortTime"
else
xsd2=`zenity --title "${port_time1}" --text "${port_time2}" --list --radiolist --height=240 --column="${inst_set3}" --column "${port_time3}" \
TRUE "${port_time4}" \
FALSE "${port_time5}" \
FALSE "${port_time6}" `
if [ $? = 1 ] ; then
echo "1" > "${HOME}/.config/.PortTime"
else
case $xsd2 in
"${port_time4}")
xdg-open "$urlg" &
echo "300" > "${HOME}/.config/.PortTime"
exit 0 ;;
"${port_time5}")
echo "75" > "${HOME}/.config/.PortTime" ;;
"${port_time6}")
echo "150" > "${HOME}/.config/.PortTime" ;;
esac
fi
fi
}
PW_INIT_PFX () {
rm -f "${WINEDIR}"*/lib*/*steam*
rm -f "${WINEDIR}"*/lib*/wine/*steam*
rm -f "${WINEDIR}"*/lib*/wine/fakedlls/*steam*
if [ ! -d "${WINEPREFIX}" ] || [ ! -d "${WINEPREFIX}"/drive_c/windows ] || \
[ ! -d "${WINEPREFIX}/dosdevices" ] || [ ! -f "${WINEPREFIX}"/userdef.reg ] || \
[ ! -f "${WINEPREFIX}"/system.reg ] || [ ! -f "${WINEPREFIX}"/user.reg ]
then
pw_clear_pfx
create_new_dir "${WINEPREFIX}"
if [ -d "${WINEDIR}/share/default_pfx/" ] ; then
cp -fr "${WINEDIR}/share/default_pfx/"* "${WINEPREFIX}"
fi
create_new_dir "${WINEPREFIX}/drive_c"
create_new_dir "${WINEPREFIX}/dosdevices"
[ ! -d "${WINEPREFIX}/dosdevices/c:" ] && try_force_link_dir "${WINEPREFIX}/drive_c/" "${WINEPREFIX}/dosdevices/c:"
[ ! -d "${WINEPREFIX}/dosdevices/z:" ] && try_force_link_dir "/" "${WINEPREFIX}/dosdevices/z:"
create_new_dir "${WINEPREFIX}/drive_c/windows/syswow64/"
create_new_dir "${WINEPREFIX}/drive_c/windows/system32/"
PW_STOP_PROGRESS_BAR
PW_START_PROGRESS_BAR_BLOCK "Updating prefix... Please wait..."
KILL_PORTWINE
"${PW_RUNTIME}" "${WINELOADER}" wineboot -u
WAIT_WINESERVER
KILL_PORTWINE
PW_STOP_PROGRESS_BAR
PW_START_PROGRESS_BAR_CS "Initialization prefix..."
fi
if [ ! -d "${PORT_WINE_PATH}/data/pfx/drive_c/users/${USER}" ]; then
try_force_link_dir "${PORT_WINE_PATH}/data/pfx/drive_c/users/steamuser" "${PORT_WINE_PATH}/data/pfx/drive_c/users/${USER}"
fi
create_new_dir "${WINEPREFIX}/drive_c/windows/Fonts/"
try_copy_file "${WINEDIR}/share/fonts/"LiberationSans-Regular.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"arial.ttf
try_copy_file "${WINEDIR}/share/fonts/"LiberationSans-Bold.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"arialbd.ttf
try_copy_file "${WINEDIR}/share/fonts/"LiberationSerif-Regular.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"times.ttf
try_copy_file "${WINEDIR}/share/fonts/"LiberationMono-Regular.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"cour.ttf
try_copy_file "${WINEDIR}/share/fonts/"SourceHanSansSCRegular.otf "${WINEPREFIX}/drive_c/windows/Fonts/"msyh.ttf
var_winedlloverride_update "steam_api,steam_api64,steamclient,steamclient64=n"
export TOTAL_VRAM=`"${WINELIB}/amd64/usr/bin/glxinfo" -B | grep Total | awk -F: '{print $2}' | awk '{print $1}'`
echo "TOTAL_VRAM=${TOTAL_VRAM}"
try_copy_file "${WINEDIR}/lib/wine/dxvk/dxvk_config.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
try_copy_file "${WINEDIR}/lib64/wine/dxvk/dxvk_config.dll" "${WINEPREFIX}/drive_c/windows/system32/"
if [ "${PW_VULKAN_USE}" = "0" ]; then
export MESA_GLSL_CACHE_DIR="${PORT_WINE_TMP_PATH}"
export GL_NO_DSO_FINALIZER=1
export GL_YIELD="NOTHING"
export GL_SHARPEN_IGNORE_FILM_GRAIN=0
export GL_SHARPEN_ENABLE=1
export __GL_SHARPEN_VALUE=0
for wine_build_dll in d3d11 d3d10 d3d10core d3d10_1 d3d9 ; do
if ! try_copy_file "${WINEDIR}/lib/wine/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
then try_copy_file "${WINEDIR}/lib/wine/i386-windows/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
fi
if ! try_copy_file "${WINEDIR}/lib64/wine/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
then try_copy_file "${WINEDIR}/lib64/wine/x86_64-windows/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
fi
done
if ! try_copy_file "${WINEDIR}"/lib/wine/fakedlls/dxgi.dll "${WINEPREFIX}/drive_c/windows/syswow64/"
then try_copy_file "${WINEDIR}"/lib/wine/i386-windows/dxgi.dll "${WINEPREFIX}/drive_c/windows/syswow64/"
fi
if ! try_copy_file "${WINEDIR}"/lib64/wine/fakedlls/dxgi.dll "${WINEPREFIX}/drive_c/windows/system32/"
then try_copy_file "${WINEDIR}"/lib64/wine/x86_64-windows/dxgi.dll "${WINEPREFIX}/drive_c/windows/system32/"
fi
var_winedlloverride_update "dxgi=b;d3d12="
echo "Use OpenGL"
elif [ "${PW_VULKAN_USE}" = "dxvk" ]; then
for wine_dxvk_dll in d3d11 d3d10 d3d10core d3d10_1 d3d9 dxgi ; do
try_copy_file "${PW_VULKAN_DLL}/dxvk-${PW_DXVK_VER}/x32/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
try_copy_file "${PW_VULKAN_DLL}/dxvk-${PW_DXVK_VER}/x64/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
var_winedlloverride_update "${wine_dxvk_dll}=n"
done
var_winedlloverride_update "d3d12="
echo "Use DXVK version ${PW_DXVK_VER} (DX9-DX11 to Vulkan)"
else
for wine_vkd3d_dll in d3d12 ; do
try_copy_file "${PW_VULKAN_DLL}/vkd3d-proton-${PW_VKD3D_VER}/x86/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
try_copy_file "${PW_VULKAN_DLL}/vkd3d-proton-${PW_VKD3D_VER}/x64/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
var_winedlloverride_update "${wine_vkd3d_dll}=n"
done
if [ ! -z "${PW_DXGI_FROM_DXVK}" ] && [ "${PW_DXGI_FROM_DXVK}" != 0 ] ; then
for wine_dxvk_dll in d3d11 d3d10 d3d10core d3d10_1 d3d9 dxgi ; do
try_copy_file "${PW_VULKAN_DLL}/dxvk-${PW_DXVK_VER}/x32/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
try_copy_file "${PW_VULKAN_DLL}/dxvk-${PW_DXVK_VER}/x64/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
var_winedlloverride_update "${wine_dxvk_dll}=n"
done
else
if ! try_copy_file "${WINEDIR}"/lib/wine/fakedlls/dxgi.dll "${WINEPREFIX}/drive_c/windows/syswow64/"
then try_copy_file "${WINEDIR}"/lib/wine/i386-windows/dxgi.dll "${WINEPREFIX}/drive_c/windows/syswow64/"
fi
if ! try_copy_file "${WINEDIR}"/lib64/wine/fakedlls/dxgi.dll "${WINEPREFIX}/drive_c/windows/system32/"
then try_copy_file "${WINEDIR}"/lib64/wine/x86_64-windows/dxgi.dll "${WINEPREFIX}/drive_c/windows/system32/"
fi
var_winedlloverride_update "dxgi=b"
for wine_build_dll in d3d11 d3d10 d3d10core d3d10_1 d3d9 ; do
if ! try_copy_file "${WINEDIR}/lib/wine/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
then try_copy_file "${WINEDIR}/lib/wine/i386-windows/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
fi
if ! try_copy_file "${WINEDIR}/lib64/wine/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
then try_copy_file "${WINEDIR}/lib64/wine/x86_64-windows/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
fi
done
fi
export VKD3D_FEATURE_LEVEL="12_0"
export PW_WINDOWS_VER="10"
echo "Use VKD3D-PROTON version ${PW_VKD3D_VER} (DX12 to vulkan)"
fi
PW_OTHER_FIXES
}
PW_SCRIPTS_UPDATE () {
if [ ! -f "${PORT_WINE_TMP_PATH}/scripts_ver" ] ; then
echo "1000" > "${PORT_WINE_TMP_PATH}/scripts_ver"
fi
echo `curl -s --list-only "${PW_FTP_URL}/current_version/scripts_ver"` > "${PORT_WINE_TMP_PATH}/scripts_cur_ver"
if [ "$?" == "0" ] ; then
read scripts_current_ver < "${PORT_WINE_TMP_PATH}/scripts_cur_ver"
try_remove_file "${PORT_WINE_TMP_PATH}/scripts_cur_ver"
if [ ! -z "${scripts_current_ver}" ] && [ "${scripts_current_ver}" -gt "${scripts_install_ver}" ] ; then
echo "######################################################"
echo "Update scripts..."
try_remove_file "${PORT_WINE_TMP_PATH}/scripts.tar.xz"
if try_download "${PW_FTP_URL}/dist/scripts.tar.xz" "${PORT_WINE_TMP_PATH}/scripts.tar.xz" ; then
tar -Jxvf "${PORT_WINE_TMP_PATH}/scripts.tar.xz" -C "${PORT_WINE_PATH}/data/"
if [ "$?" == "0" ] ; then
try_remove_file "${PORT_WINE_TMP_PATH}/scripts.tar.xz"
echo "${scripts_current_ver}" > "${PORT_WINE_TMP_PATH}/scripts_ver"
"${pw_yad}" --title="Changelog" --borders=10 \
--text="Скрипты были успешно обновлены.\nДля продолжения запуска порта нажмите ОК." \
--text-align=center --text-info --show-uri --wrap --center --width=1200 --height=550 \
--filename="${PORT_WINE_PATH}/data/changelog" --uri-color=red
[ "$?" == 0 ] && /bin/bash -c ${pw_full_command_line[*]} &
exit 0
fi
else
zenity_error_download && PW_SCRIPTS_UPDATE
fi
fi
fi
}
PW_RUN () {
if [ ! -z "$portwine_exe" ] ; then
export PATH_TO_GAME="$( cd "$( dirname "${portwine_exe}" )" >/dev/null 2>&1 && pwd )"
cd "$PATH_TO_GAME"
else
cd "${WINEPREFIX}/drive_c"
fi
pw_mangohud_check
print_var "WINEDIR" "WINEARCH" "WINEPREFIX" "WINEDLLOVERRIDES" "PATH_TO_GAME" "PW_VULKAN_USE" "VKD3D_CONFIG"
if [ "${PW_LOG}" == 1 ] ; then
export PW_TERM=""
export PW_LOG_TO_FILE="${PORT_WINE_PATH}/${portname}.log"
if [ ! -z "${PW_GAMEMODERUN}" ] && [ "${PW_GAMEMODERUN}" != 0 ] ; then
echo "Full command line: $PW_TERM ${optirun_on} "${PW_RUNTIME}" gamemoderun ${RUN_MANGOHUD} "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[*]}" "&>>${PW_LOG_TO_FILE}"
$PW_TERM ${optirun_on} "${PW_RUNTIME}" gamemoderun ${RUN_MANGOHUD} "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[*]} &>>"${PW_LOG_TO_FILE}"
else
echo "Full command line: $PW_TERM ${optirun_on} "${PW_RUNTIME}" ${RUN_MANGOHUD} "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[*]}" "&>>${PW_LOG_TO_FILE}"
$PW_TERM ${optirun_on} "${PW_RUNTIME}" ${RUN_MANGOHUD} "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[*]} &>>"${PW_LOG_TO_FILE}"
fi
else
[ "${PW_USE_TERMINAL}" != "1" ] && export PW_TERM=""
if [ ! -z "${PW_GAMEMODERUN}" ] && [ "${PW_GAMEMODERUN}" != 0 ] ; then
echo "Full command line: $PW_TERM ${optirun_on} "${PW_RUNTIME}" gamemoderun ${RUN_MANGOHUD} "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[*]}"
$PW_TERM ${optirun_on} "${PW_RUNTIME}" gamemoderun ${RUN_MANGOHUD} "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[*]}
else
echo "Full command line: $PW_TERM ${optirun_on} "${PW_RUNTIME}" ${RUN_MANGOHUD} "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[*]}"
$PW_TERM ${optirun_on} "${PW_RUNTIME}" ${RUN_MANGOHUD} "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[*]}
fi
fi
}
#####MAIN#####
cd "$(dirname "`readlink -f "$0"`")" && export PORT_SCRIPTS_PATH="$(pwd)"
cd "${PORT_SCRIPTS_PATH}/../../" && export PORT_WINE_PATH="$(pwd)"
export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
create_new_dir "${PORT_WINE_TMP_PATH}"
create_new_dir "${HOME}/.PortWINE/tmp"
read "portname" < "${PORT_WINE_TMP_PATH}/portname" && export portname
cd "${PORT_SCRIPTS_PATH}"
. "${PORT_SCRIPTS_PATH}/var"
if [ ! -f "${PORT_WINE_TMP_PATH}/${portname}_loc" ] ; then
SET_LANG=`zenity --title "Install $portname" --text "Select the language" --list --radiolist \
--column="Set:" --column "Language:" TRUE "RUS" FALSE "ENG" `
echo "${SET_LANG}" > "${PORT_WINE_TMP_PATH}/${portname}_loc"
fi
. "${PORT_SCRIPTS_PATH}"/lang
unset MANGOHUD PW_NO_ESYNC PW_NO_FSYNC PW_VULKAN_USE WINEDLLOVERRIDES PW_NO_WRITE_WATCH PW_CHECK_AUTOINSTAL
var_winedlloverride_update "winemenubuilder.exe="
export url_mono="https://github.com/madewokherd/wine-mono/releases/download/wine-mono-${mono_ver}/wine-mono-${mono_ver}-x86.tar.xz"
export url_gecko_x86="https://dl.winehq.org/wine/wine-gecko/${gecko_ver}/wine-gecko-${gecko_ver}-x86.tar.xz"
export url_gecko_x86_64="https://dl.winehq.org/wine/wine-gecko/${gecko_ver}/wine-gecko-${gecko_ver}-x86_64.tar.xz"
export urlg="https://portwine-linux.ru/portwine-faq/"
export PW_FTP_URL="https://portwine-linux.ru/ftp"
export WINEDIR="${PORT_WINE_PATH}"/data/dist
export WINELIB="${HOME}/.PortWINE/libs${pw_libs_ver}"
export WINEPREFIX="${PORT_WINE_PATH}/data/pfx"
export PW_COMPAT_MEDIA_PATH="${PORT_WINE_TMP_PATH}"
export WINE_WIN_START="${WINEPREFIX}/drive_c/windows/system32/start.exe"
export PW_RUNTIME="$WINELIB/run.sh"
export PW_GUI_ICON_PATH="${PORT_WINE_PATH}/data/img/gui"
export PW_VULKAN_DLL="${HOME}/.PortWINE/vulkan"
export PW_DXVK_VER="${PW_DEF_DXVK_VER}"
export PW_VKD3D_VER="${PW_DEF_VKD3D_VER}"
export install_ver=`cat "${PORT_WINE_TMP_PATH}/${portname}_ver" | head -n 1`
export scripts_install_ver=`cat "${PORT_WINE_TMP_PATH}/scripts_ver" | head -n 1`
if [ -z "${INSTALLING_PORT}" ] ; then
PW_LOAD_LIBS
PW_DOWNLOAD_MONO
PW_DOWNLOAD_GECKO
PW_UPDATE
PW_SCRIPTS_UPDATE
PW_INIT_DB
fi