From fb933afd27f22f112413fe16bdfa4f4ece5b982c Mon Sep 17 00:00:00 2001 From: castro-fidel Date: Thu, 24 Feb 2022 20:26:38 +0300 Subject: [PATCH] PortProton_v1.0 --- data_from_portwine/changelog_rus | 3 + data_from_portwine/scripts/functions_helper | 88 ++++++----- data_from_portwine/scripts/runlib | 152 +++++++++--------- data_from_portwine/scripts/start.sh | 2 +- data_from_portwine/scripts/var | 2 +- portwine_install_script/PortProton-97 | 2 +- portwine_install_script/PortProton_v.1.0 | 161 ++++++++++++++++++++ 7 files changed, 289 insertions(+), 121 deletions(-) create mode 100644 portwine_install_script/PortProton_v.1.0 diff --git a/data_from_portwine/changelog_rus b/data_from_portwine/changelog_rus index 2513fc22..ea5a69d0 100755 --- a/data_from_portwine/changelog_rus +++ b/data_from_portwine/changelog_rus @@ -2,6 +2,9 @@ ----------------------------------------- История изменений: +###Scripts version 2091### +* RELEASE PORTPROTON v.1.0 + ###Scripts version 2090### * HOTFIX - исправлено создание символьных ссылок diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index e7a117f1..b583e5f4 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -74,10 +74,10 @@ try_force_link_file () { export -f try_force_link_file check_symlink () { - CHK_SYMLINK_FILE=`file "$1"` - if [ ! -z `echo "$CHK_SYMLINK_FILE" | grep -v "broken" | grep "symbolic link to" | awk '{print $1}'` ] ; then + CHK_SYMLINK_FILE="`file "$1"`" + if [[ ! -z "`echo "$CHK_SYMLINK_FILE" | grep -v "broken" | grep "symbolic link to" | awk '{print $1}'`" ]] ; then return 0 - elif [ ! -z `echo "$CHK_SYMLINK_FILE" | grep "broken symbolic link to" | awk '{print $1}'` ] ; then + elif [[ ! -z "`echo "$CHK_SYMLINK_FILE" | grep "broken symbolic link to" | awk '{print $1}'`" ]] ; then print_error "remove broken symlink: $CHK_SYMLINK_FILE" rm -fr "$CHK_SYMLINK_FILE" return 1 @@ -226,37 +226,37 @@ pw_vkbasalt_check () { } 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_file "${WINEPREFIX}/.update-timestamp" - try_remove_file "${WINEPREFIX}/drive_c/.windows-serial" - try_remove_dir "${WINEPREFIX}/drive_c/windows/" - try_remove_dir "${WINEPREFIX}/drive_c/ProgramData/Setup" - try_remove_dir "${WINEPREFIX}/drive_c/ProgramData/Windows" - try_remove_dir "${WINEPREFIX}/drive_c/ProgramData/WindowsTask" - try_remove_dir "${WINEPREFIX}/drive_c/ProgramData/Package Cache" - try_remove_dir "${WINEPREFIX}/drive_c/users/Public/Local Settings/Application Data/Microsoft" - try_remove_dir "${WINEPREFIX}/drive_c/users/Public/Local Settings/Application Data/Temp" - try_remove_dir "${WINEPREFIX}/drive_c/users/Public/Local Settings/Temporary Internet Files" - try_remove_dir "${WINEPREFIX}/drive_c/users/Public/Application Data/Microsoft" - try_remove_dir "${WINEPREFIX}/drive_c/users/Public/Application Data/wine_gecko" - try_remove_dir "${WINEPREFIX}/drive_c/users/Public/Temp" - try_remove_dir "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Application Data/Microsoft" - try_remove_dir "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Application Data/Temp" - try_remove_dir "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Temporary Internet Files" - try_remove_dir "${WINEPREFIX}/drive_c/users/steamuser/Application Data/Microsoft" - try_remove_dir "${WINEPREFIX}/drive_c/users/steamuser/Application Data/wine_gecko" - try_remove_dir "${WINEPREFIX}/drive_c/users/steamuser/Temp" - try_remove_dir "${WINEPREFIX}/drive_c/Program Files/Internet Explorer" - try_remove_dir "${WINEPREFIX}/drive_c/Program Files/Windows Media Player" - try_remove_dir "${WINEPREFIX}/drive_c/Program Files/Windows NT" - try_remove_dir "${WINEPREFIX}/drive_c/Program Files/Common Files" - try_remove_dir "${WINEPREFIX}/drive_c/Program Files (x86)/Internet Explorer" - try_remove_dir "${WINEPREFIX}/drive_c/Program Files (x86)/Common Files" - try_remove_dir "${WINEPREFIX}/drive_c/Program Files (x86)/Windows Media Player" - try_remove_dir "${WINEPREFIX}/drive_c/Program Files (x86)/Windows NT" + try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg" + try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg" + try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/userdef.reg" + try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" + try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.update-timestamp" + try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/.windows-serial" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/ProgramData/Setup" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/ProgramData/Windows" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/ProgramData/WindowsTask" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/ProgramData/Package Cache" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/Public/Local Settings/Application Data/Microsoft" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/Public/Local Settings/Application Data/Temp" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/Public/Local Settings/Temporary Internet Files" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/Public/Application Data/Microsoft" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/Public/Application Data/wine_gecko" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/Public/Temp" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/Local Settings/Application Data/Microsoft" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/Local Settings/Application Data/Temp" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/Local Settings/Temporary Internet Files" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/Application Data/Microsoft" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/Application Data/wine_gecko" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/Temp" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/Program Files/Internet Explorer" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/Program Files/Windows Media Player" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/Program Files/Windows NT" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/Program Files/Common Files" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/Program Files (x86)/Internet Explorer" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/Program Files (x86)/Common Files" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/Program Files (x86)/Windows Media Player" + try_remove_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/Program Files (x86)/Windows NT" try_remove_dir "${PORT_WINE_TMP_PATH}/mesa_shader_cache" rm -f "${PORT_WINE_TMP_PATH}"/*.bin rm -f "${PORT_WINE_TMP_PATH}"/*.foz @@ -331,13 +331,17 @@ init_wine_ver () { done for mono_gecko_chk in "mono" "gecko" ; do - if [ ! -d "${WINEDIR}/share/wine/${mono_gecko_chk}" ] ; then + if check_symlink "${WINEDIR}/share/wine/${mono_gecko_chk}" ; then + echo "${WINEDIR}/share/wine/${mono_gecko_chk} is symlink. OK." + elif [[ -d "${WINEDIR}/share/wine/${mono_gecko_chk}" ]] ; then + try_copy_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" "${PORT_WINE_TMP_PATH}" try_remove_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" try_force_link_dir "${PORT_WINE_TMP_PATH}/${mono_gecko_chk}" "${WINEDIR}"/share/wine/ - elif ! check_symlink "${WINEDIR}/share/wine/${mono_gecko_chk}" && [[ -d "${WINEDIR}/share/wine/${mono_gecko_chk}" ]] ; then - cp -fr "${WINEDIR}/share/wine/${mono_gecko_chk}" "${PORT_WINE_TMP_PATH}" - rm -fr "${WINEDIR}/share/wine/${mono_gecko_chk}" - try_force_link_dir "${PORT_WINE_TMP_PATH}/${mono_gecko_chk}" "${WINEDIR}"/share/wine/ + echo "Copy ${WINEDIR}/share/wine/${mono_gecko_chk} to tmp and create symlink to ${WINEDIR}/share/wine/. OK." + else + try_remove_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" + try_force_link_dir "${PORT_WINE_TMP_PATH}/${mono_gecko_chk}" "${WINEDIR}"/share/wine + echo "${WINEDIR}/share/wine/${mono_gecko_chk} is broken symlink. Repair... OK." fi done fi @@ -414,8 +418,8 @@ pw_kill_autostart () { fi done fi - if [[ ! -z "`ls "${WINEPREFIX}"/drive_c/ | grep -m 1 ".tmp"`" ]] ; then - rm -f "${WINEPREFIX}"/drive_c/*.tmp + if [[ ! -z "`ls "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/ | grep -m 1 ".tmp"`" ]] ; then + rm -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/*.tmp fi return 0 } @@ -433,7 +437,7 @@ stop_portwine () { try_remove_file "${PORT_SCRIPTS_PATH}/1" kill_portwine && try_remove_dir "${PW_WINELIB}/var" - find "${WINEPREFIX}/drive_c/" -maxdepth 1 -type f -name "*.tmp" -delete + find "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/" -maxdepth 1 -type f -name "*.tmp" -delete if [ ! -z "`pgrep -a yad_new | grep "\-\-notification" | awk '{print $1}'`" ] ; then kill -s SIGUSR1 "`pgrep -a yad_new | grep "\-\-notification" | awk '{print $1}'`" fi diff --git a/data_from_portwine/scripts/runlib b/data_from_portwine/scripts/runlib index 5d52acf8..3597a94f 100755 --- a/data_from_portwine/scripts/runlib +++ b/data_from_portwine/scripts/runlib @@ -23,8 +23,8 @@ fi start_portwine () { export WINEPREFIX="${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" - create_new_dir "${WINEPREFIX}/drive_c/" - try_force_link_dir "${PORT_WINE_PATH}/data/prefixes" "${WINEPREFIX}/drive_c/" + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/" + try_force_link_dir "${PORT_WINE_PATH}/data/prefixes" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/" export WINEARCH="win64" pw_install_dll_in_prefix pw_check_and_download_wine "${PW_WINE_USE}" @@ -181,16 +181,16 @@ start_portwine () { fi if [[ ! -z "${PW_USE_NVAPI_AND_DLSS}" && "${PW_USE_NVAPI_AND_DLSS}" == 1 && -d "${WINEDIR}/lib/wine/nvapi/" ]] then - try_force_link_file "${PW_PLUGINS_PATH}/nvapi/x32/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" - try_force_link_file "${PW_PLUGINS_PATH}/nvapi/x64/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/" + try_force_link_file "${PW_PLUGINS_PATH}/nvapi/x32/nvapi.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/" + try_force_link_file "${PW_PLUGINS_PATH}/nvapi/x64/nvapi64.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/" var_winedlloverride_update "nvapi,nvapi64,nvml=n;nvcuda=b" - if [[ ! -f "${WINEPREFIX}/drive_c/windows/system32/nvngx.dll" || ! -f "${WINEPREFIX}/drive_c/windows/system32/_nvngx.dll" ]] ; then - try_copy_file `find /usr/* -type f -name "nvngx.dll" 2>/dev/null | awk '{print $1}' | grep '/lib/'` "${WINEPREFIX}/drive_c/windows/system32/" - try_copy_file `find /usr/* -type f -name "_nvngx.dll" 2>/dev/null | awk '{print $1}' | grep '/lib/'` "${WINEPREFIX}/drive_c/windows/system32/" + if [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/nvngx.dll" || ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/_nvngx.dll" ]] ; then + try_copy_file `find /usr/* -type f -name "nvngx.dll" 2>/dev/null | awk '{print $1}' | grep '/lib/'` "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/" + try_copy_file `find /usr/* -type f -name "_nvngx.dll" 2>/dev/null | awk '{print $1}' | grep '/lib/'` "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/" fi echo "Try link nvml.dll.so to prefix" - try_force_link_file "${PW_PLUGINS_PATH}"/nvml/lib/wine/nvml.dll.so "${WINEPREFIX}/drive_c/windows/syswow64/nvml.dll" - try_force_link_file "${PW_PLUGINS_PATH}"/nvml/lib64/wine/nvml.dll.so "${WINEPREFIX}/drive_c/windows/system32/nvml.dll" + try_force_link_file "${PW_PLUGINS_PATH}"/nvml/lib/wine/nvml.dll.so "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/nvml.dll" + try_force_link_file "${PW_PLUGINS_PATH}"/nvml/lib64/wine/nvml.dll.so "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/nvml.dll" export DXVK_NVAPIHACK=0 else var_winedlloverride_update "nvapi,nvapi64,nvml,nvcuda=" @@ -283,54 +283,54 @@ start_portwine () { pw_other_fixes check_dirs_and_files_in_pfx () { - create_new_dir "${WINEPREFIX}" - create_new_dir "${WINEPREFIX}/drive_c" - create_new_dir "${WINEPREFIX}/dosdevices" - create_new_dir "${WINEPREFIX}/drive_c/windows/syswow64/" - create_new_dir "${WINEPREFIX}/drive_c/windows/system32/" - [ ! -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/Fonts/" - try_force_link_file "${WINEDIR}/share/fonts/"LiberationSans-Regular.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"arial.ttf - try_force_link_file "${WINEDIR}/share/fonts/"LiberationSans-Bold.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"arialbd.ttf - try_force_link_file "${WINEDIR}/share/fonts/"LiberationSerif-Regular.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"times.ttf - try_force_link_file "${WINEDIR}/share/fonts/"LiberationMono-Regular.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"cour.ttf - try_force_link_file "${WINEDIR}/share/fonts/"LiberationMono-Bold.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"courbd.ttf - try_force_link_file "${WINEDIR}/share/fonts/"msyh.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"msyh.ttf - try_force_link_file "${WINEDIR}/share/fonts/"malgun.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"malgun.ttf - try_force_link_file "${WINEDIR}/share/fonts/"micross.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"micross.ttf - try_force_link_file "${WINEDIR}/share/fonts/"nirmala.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"nirmala.ttf + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices" + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/" + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/" + [ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices/c:" ] && try_force_link_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices/c:" + [ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices/z:" ] && try_force_link_dir "/" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices/z:" + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/" + try_force_link_file "${WINEDIR}/share/fonts/"LiberationSans-Regular.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"arial.ttf + try_force_link_file "${WINEDIR}/share/fonts/"LiberationSans-Bold.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"arialbd.ttf + try_force_link_file "${WINEDIR}/share/fonts/"LiberationSerif-Regular.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"times.ttf + try_force_link_file "${WINEDIR}/share/fonts/"LiberationMono-Regular.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"cour.ttf + try_force_link_file "${WINEDIR}/share/fonts/"LiberationMono-Bold.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"courbd.ttf + try_force_link_file "${WINEDIR}/share/fonts/"msyh.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"msyh.ttf + try_force_link_file "${WINEDIR}/share/fonts/"malgun.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"malgun.ttf + try_force_link_file "${WINEDIR}/share/fonts/"micross.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"micross.ttf + try_force_link_file "${WINEDIR}/share/fonts/"nirmala.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"nirmala.ttf - try_force_link_file "${WINEDIR}/share/fonts/"simsun.ttc "${WINEPREFIX}/drive_c/windows/Fonts/"simsun.ttc - try_force_link_file "${WINEDIR}/share/fonts/"msgothic.ttc "${WINEPREFIX}/drive_c/windows/Fonts/"msgothic.ttc + try_force_link_file "${WINEDIR}/share/fonts/"simsun.ttc "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"simsun.ttc + try_force_link_file "${WINEDIR}/share/fonts/"msgothic.ttc "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"msgothic.ttc - try_force_link_file "${WINEDIR}/share/wine/fonts/"tahoma.ttf "${WINEPREFIX}/drive_c/windows/Fonts/"tahoma.ttf + try_force_link_file "${WINEDIR}/share/wine/fonts/"tahoma.ttf "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/"tahoma.ttf } - if [[ ! -d "${WINEPREFIX}" || ! -d "${WINEPREFIX}"/drive_c/windows || ! -d "${WINEPREFIX}/dosdevices" || \ - ! -f "${WINEPREFIX}"/userdef.reg || ! -f "${WINEPREFIX}"/system.reg || ! -f "${WINEPREFIX}"/user.reg ]] + if [[ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" || ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/windows || ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices" || \ + ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/userdef.reg || ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/system.reg || ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/user.reg ]] then pw_clear_pfx check_dirs_and_files_in_pfx ${pw_runtime} env LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" "${WINELOADER}" wineboot -i &>>"${PORT_WINE_TMP_PATH}/update_pfx_log" wait_wineserver && - echo "${PW_WINE_USE}" > "${WINEPREFIX}/.wine_ver" - elif [[ -z "`cat "${WINEPREFIX}/.wine_ver" | grep ${PW_WINE_USE}`" ]] ; then + echo "${PW_WINE_USE}" > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" + elif [[ -z "`cat "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" | grep ${PW_WINE_USE}`" ]] ; then check_dirs_and_files_in_pfx ${pw_runtime} env LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" "${WINELOADER}" wineboot -i &>>"${PORT_WINE_TMP_PATH}/update_pfx_log" wait_wineserver && - echo "${PW_WINE_USE}" > "${WINEPREFIX}/.wine_ver" + echo "${PW_WINE_USE}" > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" fi - [ ! -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/users/steamuser" - if [ ! -d "${WINEPREFIX}/drive_c/users/${USER}" ]; then - try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser" "${WINEPREFIX}/drive_c/users/${USER}" + [ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices/c:" ] && try_force_link_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices/c:" + [ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices/z:" ] && try_force_link_dir "/" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/dosdevices/z:" + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser" + if [ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/${USER}" ]; then + try_force_link_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/${USER}" fi - create_new_dir "${WINEPREFIX}/drive_c/users/Public/Documents/Steam" - create_new_dir "${WINEPREFIX}/drive_c/users/steamuser/Documents/Steam" - if [ ! -d "${WINEPREFIX}/drive_c/users/steamuser/My Documents" ] - then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/Documents" "${WINEPREFIX}/drive_c/users/steamuser/My Documents" + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/Public/Documents/Steam" + create_new_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/Documents/Steam" + if [ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/My Documents" ] + then try_force_link_dir "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/Documents" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/My Documents" fi #enabled BattleEye_Runtime and EasyAntiCheat_Runtime export PROTON_BATTLEYE_RUNTIME="${PW_PLUGINS_PATH}/d3d_extras/BattlEye_Runtime" @@ -343,17 +343,17 @@ start_portwine () { d3dx10_42 d3dx10_43 d3dx10 d3dx11_42 d3dx11_43 d3dx9_24 d3dx9_25 d3dx9_26 d3dx9_27 d3dx9_28 d3dx9_29 d3dx9_30 \ d3dx9_31 d3dx9_32 d3dx9_33 d3dx9_34 d3dx9_35 d3dx9_36 d3dx9_37 d3dx9_38 d3dx9_39 d3dx9_40 d3dx9_41 d3dx9_42 d3dx9_43 do - try_force_link_file "${PW_PLUGINS_PATH}/d3d_extras/x64/${d3d_extras_from_plugins}.dll" "${WINEPREFIX}/drive_c/windows/system32/" - try_force_link_file "${PW_PLUGINS_PATH}/d3d_extras/x32/${d3d_extras_from_plugins}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" + try_force_link_file "${PW_PLUGINS_PATH}/d3d_extras/x64/${d3d_extras_from_plugins}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/" + try_force_link_file "${PW_PLUGINS_PATH}/d3d_extras/x32/${d3d_extras_from_plugins}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/" if [[ "${PW_D3D_EXTRAS_DISABLE}" != 1 ]] ; then var_winedlloverride_update "${d3d_extras_from_plugins}=n,b" fi - if [[ -z "`grep "${d3d_extras_from_plugins}" "${WINEPREFIX}/winetricks.log"`" ]] ; then - echo "${d3d_extras_from_plugins}" >> "${WINEPREFIX}/winetricks.log" + if [[ -z "`grep "${d3d_extras_from_plugins}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log"`" ]] ; then + echo "${d3d_extras_from_plugins}" >> "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" fi done - if [[ -z "`grep d3dx9 "${WINEPREFIX}/winetricks.log"`" ]] ; then - echo "d3dx9" >> "${WINEPREFIX}/winetricks.log" + if [[ -z "`grep d3dx9 "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log"`" ]] ; then + echo "d3dx9" >> "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" fi var_winedlloverride_update "steam_api,steam_api64,steamclient,steamclient64=n;lsteamclient,winemenubuilder.exe=" @@ -365,19 +365,19 @@ start_portwine () { export MESA_GLSL_CACHE_DIR="${PORT_WINE_TMP_PATH}" export GL_YIELD="NOTHING" echo "Try link wine DXGI..." - if ! try_force_link_file "${WINEDIR}"/lib/wine/fakedlls/dxgi.dll "${WINEPREFIX}/drive_c/windows/syswow64/dxgi.dll" - then try_force_link_file "${WINEDIR}"/lib/wine/i386-windows/dxgi.dll "${WINEPREFIX}/drive_c/windows/syswow64/dxgi.dll" + if ! try_force_link_file "${WINEDIR}"/lib/wine/fakedlls/dxgi.dll "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/dxgi.dll" + then try_force_link_file "${WINEDIR}"/lib/wine/i386-windows/dxgi.dll "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/dxgi.dll" fi - if ! try_force_link_file "${WINEDIR}"/lib64/wine/fakedlls/dxgi.dll "${WINEPREFIX}/drive_c/windows/system32/dxgi.dll" - then try_force_link_file "${WINEDIR}"/lib64/wine/x86_64-windows/dxgi.dll "${WINEPREFIX}/drive_c/windows/system32/dxgi.dll" + if ! try_force_link_file "${WINEDIR}"/lib64/wine/fakedlls/dxgi.dll "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/dxgi.dll" + then try_force_link_file "${WINEDIR}"/lib64/wine/x86_64-windows/dxgi.dll "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/dxgi.dll" fi echo "Try link wine d3d filese..." for wine_build_dll in d3d11 d3d10 d3d10core d3d10_1 d3d9 ; do - if ! try_force_link_file "${WINEDIR}/lib/wine/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_build_dll}.dll" - then try_force_link_file "${WINEDIR}/lib/wine/i386-windows/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_build_dll}.dll" + if ! try_force_link_file "${WINEDIR}/lib/wine/${wine_build_dll}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/${wine_build_dll}.dll" + then try_force_link_file "${WINEDIR}/lib/wine/i386-windows/${wine_build_dll}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/${wine_build_dll}.dll" fi - if ! try_force_link_file "${WINEDIR}/lib64/wine/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_build_dll}.dll" - then try_force_link_file "${WINEDIR}/lib64/wine/x86_64-windows/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_build_dll}.dll" + if ! try_force_link_file "${WINEDIR}/lib64/wine/${wine_build_dll}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/${wine_build_dll}.dll" + then try_force_link_file "${WINEDIR}/lib64/wine/x86_64-windows/${wine_build_dll}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/${wine_build_dll}.dll" fi done var_winedlloverride_update "d3d11,d3d10,d3d10core,d3d10_1,d3d9,dxgi=b;d3d12=" @@ -386,27 +386,27 @@ start_portwine () { export CP_DXVK_FILES="d3d11 d3d10 d3d10core d3d10_1 d3d9 dxgi dxvk_config" echo "Try link native DXVK files..." for wine_dxvk_dll in ${CP_DXVK_FILES} ; do - try_force_link_file "${WINEDIR}/lib/wine/dxvk/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_dxvk_dll}.dll" - try_force_link_file "${WINEDIR}/lib64/wine/dxvk/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_dxvk_dll}.dll" + try_force_link_file "${WINEDIR}/lib/wine/dxvk/${wine_dxvk_dll}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/${wine_dxvk_dll}.dll" + try_force_link_file "${WINEDIR}/lib64/wine/dxvk/${wine_dxvk_dll}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/${wine_dxvk_dll}.dll" done if [[ "${PW_USE_WINE_DXGI}" == 1 ]] || [[ "${PW_VULKAN_USE}" == "2" ]]; then echo "Try link wine DXGI..." - if ! try_force_link_file "${WINEDIR}"/lib/wine/fakedlls/dxgi.dll "${WINEPREFIX}/drive_c/windows/syswow64/dxgi.dll" - then try_force_link_file "${WINEDIR}"/lib/wine/i386-windows/dxgi.dll "${WINEPREFIX}/drive_c/windows/syswow64/dxgi.dll" + if ! try_force_link_file "${WINEDIR}"/lib/wine/fakedlls/dxgi.dll "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/dxgi.dll" + then try_force_link_file "${WINEDIR}"/lib/wine/i386-windows/dxgi.dll "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/dxgi.dll" fi - if ! try_force_link_file "${WINEDIR}"/lib64/wine/fakedlls/dxgi.dll "${WINEPREFIX}/drive_c/windows/system32/dxgi.dll" - then try_force_link_file "${WINEDIR}"/lib64/wine/x86_64-windows/dxgi.dll "${WINEPREFIX}/drive_c/windows/system32/dxgi.dll" + if ! try_force_link_file "${WINEDIR}"/lib64/wine/fakedlls/dxgi.dll "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/dxgi.dll" + then try_force_link_file "${WINEDIR}"/lib64/wine/x86_64-windows/dxgi.dll "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/dxgi.dll" fi var_winedlloverride_update "d3d11,d3d10core,d3d9,dxvk_config=n;dxgi=b" else var_winedlloverride_update "d3d11,d3d10core,d3d9,dxgi,dxvk_config=n" fi echo "Try link native VKD3D files..." - try_force_link_file "${WINEDIR}/lib/vkd3d/libvkd3d-shader-1.dll" "${WINEPREFIX}/drive_c/windows/syswow64/libvkd3d-shader-1.dll" - try_force_link_file "${WINEDIR}/lib64/vkd3d/libvkd3d-shader-1.dll" "${WINEPREFIX}/drive_c/windows/system32/libvkd3d-shader-1.dll" + try_force_link_file "${WINEDIR}/lib/vkd3d/libvkd3d-shader-1.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/libvkd3d-shader-1.dll" + try_force_link_file "${WINEDIR}/lib64/vkd3d/libvkd3d-shader-1.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/libvkd3d-shader-1.dll" for wine_vkd3d_dll in d3d12 libvkd3d-proton-utils-3 ; do - try_force_link_file "${WINEDIR}/lib/wine/vkd3d-proton/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_vkd3d_dll}.dll" - try_force_link_file "${WINEDIR}/lib64/wine/vkd3d-proton/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_vkd3d_dll}.dll" + try_force_link_file "${WINEDIR}/lib/wine/vkd3d-proton/${wine_vkd3d_dll}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/syswow64/${wine_vkd3d_dll}.dll" + try_force_link_file "${WINEDIR}/lib64/wine/vkd3d-proton/${wine_vkd3d_dll}.dll" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/system32/${wine_vkd3d_dll}.dll" done if [[ ! -z "${PW_DX12_DISABLE}" && "${PW_DX12_DISABLE}" != 0 ]] then var_winedlloverride_update "libvkd3d-proton-utils-3,libvkd3d-shader-1=n;d3d12=" @@ -428,19 +428,19 @@ start_portwine () { if [ ! -z "${PW_DLL_INSTALL}" ]; then export PW_DLL_NEED_INSTALL="" export USE_WT_FROM_DB=0 - if [ ! -e "${WINEPREFIX}/winetricks.log" ] ; then - touch "${WINEPREFIX}/winetricks.log" + if [ ! -e "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" ] ; then + touch "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" fi 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" + sed -i '/vcrun2015/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" + sed -i '/vcrun2017/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" elif [ "${need_install_dll_to_pfx}" == "vcrun2019" ] ; then - sed -i '/vcrun2015/d' "${WINEPREFIX}/winetricks.log" - sed -i '/vcrun2017/d' "${WINEPREFIX}/winetricks.log" + sed -i '/vcrun2015/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" + sed -i '/vcrun2017/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" fi - grep "${need_install_dll_to_pfx}" "${WINEPREFIX}/winetricks.log" + grep "${need_install_dll_to_pfx}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" if [ "$?" == "1" ] ; then if [ -z "${PW_DLL_NEED_INSTALL}" ] then export PW_DLL_NEED_INSTALL="${need_install_dll_to_pfx}" @@ -471,7 +471,7 @@ start_portwine () { # fi fi fi - if [[ -f "${WINEPREFIX}/system.reg" ]] && [[ -z `cat "${WINEPREFIX}/system.reg" | grep "Windows $PW_WINDOWS_VER"` ]] ; then + if [[ -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg" ]] && [[ -z `cat "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/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 @@ -493,7 +493,7 @@ pw_run () { if [ ! -z "$portwine_exe" ] ; then cd "${PATH_TO_GAME}" else - cd "${WINEPREFIX}/drive_c" + cd "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" fi pw_mangohud_check PW_LOG_TO_FILE="${PORT_WINE_PATH}/${portname}.log" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index b122ef94..42b2192c 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -209,7 +209,7 @@ pw_winefile () { pw_winecmd () { export PW_USE_TERMINAL=1 start_portwine - cd "${WINEPREFIX}/drive_c" + cd "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" ${pw_runtime} env LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" xterm -e "${WINELOADER}" cmd stop_portwine } diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var index 07f20a2a..af91b310 100755 --- a/data_from_portwine/scripts/var +++ b/data_from_portwine/scripts/var @@ -1,6 +1,6 @@ #!/bin/env bash #Author: Castro-Fidel (PortWINE-Linux.ru) -#SCRIPTS_NEXT_VERSION=2090 +#SCRIPTS_NEXT_VERSION=2091 #PORT_NEXT_VERSION=97 ######################################################################## export PW_MANGOHUD=1 diff --git a/portwine_install_script/PortProton-97 b/portwine_install_script/PortProton-97 index d49bccd7..c9018c21 100755 --- a/portwine_install_script/PortProton-97 +++ b/portwine_install_script/PortProton-97 @@ -4,7 +4,7 @@ ######################################################################## unset PW_AUTOPLAY PW_SET_LANG PW_SILENT_INSTALL export portname="PortProton" -export port_ver=97 +export port_ver=1.0 ######################################################################## deflink="${HOME}/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 diff --git a/portwine_install_script/PortProton_v.1.0 b/portwine_install_script/PortProton_v.1.0 new file mode 100644 index 00000000..c9018c21 --- /dev/null +++ b/portwine_install_script/PortProton_v.1.0 @@ -0,0 +1,161 @@ +#!/usr/bin/env bash +# Author: Castro-Fidel (PortWINE-Linux.ru) +# License MIT +######################################################################## +unset PW_AUTOPLAY PW_SET_LANG PW_SILENT_INSTALL +export portname="PortProton" +export port_ver=1.0 +######################################################################## +deflink="${HOME}/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 [ "$(dirname "`readlink -f "$0"`")" == "/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 [ ! -z "`locale | grep "LANG=ru_RU.UTF-8"`" ] ; then + PW_SET_LANG="Russian" + else + PW_SET_LANG="English" + fi + export PW_SILENT_INSTALL="1" + export PW_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 "$(dirname "`readlink -f "$0"`")" +links="$(pwd)" +######################################################################## +if [ "$1" = "-rus" ] ; then + PW_SET_LANG="Russian" + export PW_SILENT_INSTALL="1" +elif [ "$1" = "-eng" ] ; then + PW_SET_LANG="English" + export PW_SILENT_INSTALL="1" +elif [ -z "${PW_SET_LANG}" ] ; then + PW_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 $PW_SET_LANG in + "Russian") + INFO_TEXT="Вы запустили установщик PortWINE ${portname} версии ${port_ver}. \n\nЭто не коммерческий продукт и развивается исключительно за идею и Ваши пожертвования. \nВсе права сторонего програмного обеспечения принадлежат их владельцам! \nПродолжая установку вы автоматически соглашаетесь с данными условиями." > /dev/null 2>&1 ;; + "English") + INFO_TEXT="You run the installer PortWINE ${portname} 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 [ "${PW_SILENT_INSTALL}" = "1" ] ; then + echo "${portname} is installed in ${deflink}" + D_PATH="${deflink}" +else + case $PW_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 +######################################################################## +case $PW_SET_LANG in + "Russian") + progress_bar() { + zenity --progress --title="Установка..." --text="Настройка ${portname}" --pulsate --auto-close --auto-kill --width=450 > /dev/null 2>&1 + } ;; + "English") + 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}" +if [ ! -d "${PORT_WINE_PATH}" ] ; then + mkdir -p "$PORT_WINE_PATH" +else + rm -fr "${PORT_WINE_PATH}/data/tmp" + 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 $PW_SET_LANG in + "Russian") echo "RUS" > "${PORT_WINE_PATH}/data/tmp/${portname}_loc" ;; + "English") 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=`cat "${PORT_WINE_PATH}/data/scripts/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 [ "${PW_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 "${PORT_WINE_PATH}/data/scripts" +/usr/bin/env bash "${PORT_WINE_PATH}/data/scripts/setup.sh" && exit 0 +################################ARCH_BIN################################