From 8cc9cb17bb7afc0e9fb5a78154c1ec76dce581bc Mon Sep 17 00:00:00 2001 From: Mikhail Tergoev Date: Wed, 28 May 2025 22:15:32 +0300 Subject: [PATCH] added support wine-cpcsp_proxy --- THIRD-PARTY | 3 +++ sha256sum.list | 3 +++ winehelper | 61 +++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 61 insertions(+), 6 deletions(-) diff --git a/THIRD-PARTY b/THIRD-PARTY index def8d0f..65ff449 100644 --- a/THIRD-PARTY +++ b/THIRD-PARTY @@ -20,3 +20,6 @@ https://github.com/HansKristian-Work/vkd3d-proton WINETRICKS: https://github.com/Winetricks/winetricks + +WINE-CPCSP_PROXY: +https://github.com/Etersoft/wine-cpcsp_proxy diff --git a/sha256sum.list b/sha256sum.list index cb521df..0ab9f43 100755 --- a/sha256sum.list +++ b/sha256sum.list @@ -13,6 +13,9 @@ fb7fdfde96de10a1b3b051bdf2727b6a7c1768b878483726454dd6726e9e0193 wine-9.0.14-al df1a940d2e072a884524f66a16e0f0ef74048bc6a6642b96eb257528a522109f vkd3d-proton-1.1-2602.tar.xz +##### CPCSP_PROXY ##### +3153088ff28d6af415c3504a421e5382554dbb305f38d5a87dd84df90d680421 wine-cpcsp_proxy-0.6.1-alt1.tar.xz + ##### PREFIX ##### 0e86cd9958d1bd1bfac99e23165a091a4ea2fa3e693c551f69aabeed5f681fea defpfx_x86_v01.tar.xz diff --git a/winehelper b/winehelper index fcde8c1..2fb629d 100755 --- a/winehelper +++ b/winehelper @@ -67,6 +67,9 @@ check_variables WINEFSYNC "0" check_variables WINEARCH "win64" # or "win32" check_variables WH_WINE_USE "wine_x_tkg_10-0_amd64" # or system +check_variables WH_USE_CPCSP_PROXY "0" +check_variables CPCSP_PROXY_VER "0.6.1-alt1" + check_variables STAGING_SHARED_MEMORY "1" check_variables WINE_LARGE_ADDRESS_AWARE "1" check_variables WINE_FULLSCREEN_FSR "1" @@ -668,7 +671,14 @@ init_wine_ver () { export GST_PLUGIN_SYSTEM_PATH_1_0="${WINEDIR}/lib/gstreamer-1.0" fi - if [[ "${WINEARCH}" == "win64" ]] ; then + [[ ! -f "${WINEDIR}/version" ]] && echo "${WH_WINE_USE}" > "${WINEDIR}/version" + + if [[ ! -d "${WINEDIR}/lib64/wine" ]] && [[ -d "${WINEDIR}/lib/wine/x86_64-unix" ]] ; then + create_new_dir "${WINEDIR}/lib64/" + try_force_link_dir "${WINEDIR}/lib/wine/" "${WINEDIR}/lib64/" + fi + + if [[ -d "${WINEDIR}/lib64" ]] ; then export LD_LIBRARY_PATH+=":${WINEDIR}/lib64" export WINEDLLPATH+=":${WINEDIR}/lib64/wine" if [[ -d "${WINEDIR}/lib64/gstreamer-1.0" ]] ; then @@ -676,12 +686,28 @@ init_wine_ver () { fi fi - [[ ! -f "${WINEDIR}/version" ]] && echo "${WH_WINE_USE}" > "${WINEDIR}/version" + if [[ $WH_USE_CPCSP_PROXY == "1" ]] \ + && ! grep -q "$CPCSP_PROXY_VER" "${WINEDIR}/cpcsp_proxy.ver" + then + CPCSP_PROXY_NAME="wine-cpcsp_proxy-$CPCSP_PROXY_VER" + CPCSP_PROXY_URL="$CLOUD_URL/$CPCSP_PROXY_NAME.tar.xz" - if [[ ! -d "${WINEDIR}/lib64/" ]] && [[ -d "${WINEDIR}/lib/wine/x86_64-unix" ]] ; then - create_new_dir "${WINEDIR}/lib64/wine" - mv -f "${WINEDIR}/lib/wine/x86_64-unix" "${WINEDIR}/lib64/wine/" - mv -f "${WINEDIR}/lib/wine/x86_64-windows" "${WINEDIR}/lib64/wine/" + if [[ ! -f "$WH_TMP_DIR/$CPCSP_PROXY_NAME" ]] ; then + print_info "Загрузка $CPCSP_PROXY_NAME.tar.xz" + if try_download "$CPCSP_PROXY_URL" "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" check256sum + then unpack "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" "$WH_TMP_DIR" + else try_remove_file "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" + fi + else + unpack "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" "$WH_TMP_DIR" + fi + + cp -fr "$WH_TMP_DIR/$CPCSP_PROXY_NAME/"i386-* "${WINEDIR}/lib/wine/" + if [[ -d "${WINEDIR}/lib64" ]] ; then + cp -fr "$WH_TMP_DIR/$CPCSP_PROXY_NAME/"x86_64-* "${WINEDIR}/lib64/wine/" + fi + try_remove_dir "$WH_TMP_DIR/$CPCSP_PROXY_NAME" + echo "$CPCSP_PROXY_VER" > "${WINEDIR}/cpcsp_proxy.ver" fi else # use system WINE @@ -989,6 +1015,29 @@ init_wineprefix () { try_remove_file "$WRAPPER" fi + # настраиваем префикс для работы с cpcsp_proxy + if [[ $WH_USE_CPCSP_PROXY == "1" ]] ; then + for cpcsp_proxy_file in "cpcsp_proxy.dll" "cpcsp_proxy_setup.exe" ; do + try_copy_wine_dll_to_pfx_64 "$cpcsp_proxy_file" + try_copy_wine_dll_to_pfx_32 "$cpcsp_proxy_file" + done + + if ! grep -q "cpcsp_proxy.dll" "$WINEPREFIX/system.reg" ; then + if [[ "$WINEARCH" == "win32" ]] + then cpcsp_proxy_cmd=("$WINELOADER" "cpcsp_proxy_setup.exe") + else cpcsp_proxy_cmd=("${WINELOADER}64" "cpcsp_proxy_setup.exe") + fi + + print_info "Запускаем настройку cpcsp_proxy:" + echo "${cpcsp_proxy_cmd[*]}" + if "${cpcsp_proxy_cmd[@]}" + then print_info "Настройка cpcsp_proxy успешно завершена." + else fatal "Ошибка во время настройки cpcsp_proxy." + fi + wait_wineserver + fi + fi + echo "# переменные последнего использования префикса:" > "$WINEPREFIX/last.conf" for var in WH_WINE_USE BASE_PFX WINEARCH WH_WINDOWS_VER WINEESYNC WINEFSYNC \ STAGING_SHARED_MEMORY WINE_LARGE_ADDRESS_AWARE WH_USE_SHADER_CACHE WH_USE_WINE_DXGI \