From fba388e7e6a18f1eb575e5e98f6998f1f02b1413 Mon Sep 17 00:00:00 2001 From: Nurlan Usenov <suren@etersoft.ru> Date: Tue, 27 Feb 2024 17:18:23 +0300 Subject: [PATCH] dotnet35sp1: Workaround for error if the username is "guest" --- src/winetricks | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/winetricks b/src/winetricks index 4544e3d..374c2bd 100755 --- a/src/winetricks +++ b/src/winetricks @@ -1346,6 +1346,36 @@ w_dotnet_verify() w_info ".Net Verifier returned ${dn_status}" } +# Workaround for "You do not have sufficient rights to run this application" error if the username is "guest". +w_replace_username_guest() +{ + if [ -n "${WINEUSERNAME}" ]; then + WINEUSERNAME_COPY="${WINEUSERNAME}" + else + WINEUSERNAME="${USERNAME}" + fi + + if echo "${WINEUSERNAME}" | grep -q -i "^guest$"; then + TMP_USERNAME="$(basename "$(mktemp -u)")" + w_try ln -s "${W_DRIVE_C}/users/${WINEUSERNAME}" "${W_DRIVE_C}/users/${TMP_USERNAME}" + export WINEUSERNAME="${TMP_USERNAME}" + fi +} + +# Restore username if it has been changed in w_replace_username_guest +w_restore_username() +{ + if [ -n "${TMP_USERNAME}" ]; then + w_try rm "${W_DRIVE_C}/users/${TMP_USERNAME}" + fi + + if [ -z "${WINEUSERNAME_COPY}" ]; then + unset WINEUSERNAME + else + WINEUSERNAME="${WINEUSERNAME_COPY}" + fi +} + # Checks if the user can run the self-update/rollback commands winetricks_check_update_availability() { @@ -9297,8 +9327,10 @@ load_dotnet20sp1() w_set_winver winxp fi + w_replace_username_guest w_try_cd "${W_CACHE}/${W_PACKAGE}" w_try_ms_installer "${WINE}" "${exe}" ${W_OPT_UNATTENDED:+/q} + w_restore_username if [ "${W_ARCH}" = "win32" ]; then # We can't stop installing dotnet20sp1 in win2k mode until Wine supports @@ -9358,8 +9390,10 @@ load_dotnet20sp2() exe="NetFx20SP2_x64.exe" fi + w_replace_username_guest w_try_cd "${W_CACHE}/${W_PACKAGE}" w_try_ms_installer "${WINE}" "${exe}" ${W_OPT_UNATTENDED:+ /q /c:"install.exe /q"} + w_restore_username if [ "${W_ARCH}" = "win32" ]; then # We can't stop installing dotnet20sp1 in win2k mode until Wine supports @@ -9443,9 +9477,11 @@ load_dotnet30() WINEDLLOVERRIDES="ngen.exe,mscorsvw.exe=b;${WINEDLLOVERRIDES}" export WINEDLLOVERRIDES + w_replace_username_guest w_try_cd "${W_CACHE}/${W_PACKAGE}" w_warn "Installing .NET 3.0 runtime silently, as otherwise it gets hidden behind taskbar. Installation usually takes about 3 minutes." w_try "${WINE}" "${file1}" /q /c:"install.exe /q" + w_restore_username w_override_dlls native mscorwks w_restore_winver @@ -9497,7 +9533,9 @@ load_dotnet30sp1() "${WINE}" sc delete FontCache3.0.0.0 + w_replace_username_guest w_try_ms_installer "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/q} + w_restore_username w_override_dlls native mscorwks w_restore_winver @@ -9543,8 +9581,10 @@ load_dotnet35() w_override_dlls native mscoree mscorwks w_wineserver -w + w_replace_username_guest w_try_cd "${W_CACHE}/${W_PACKAGE}" w_try_ms_installer "${WINE}" "${file1}" /lang:ENU ${W_OPT_UNATTENDED:+/q} + w_restore_username w_restore_winver @@ -9597,8 +9637,10 @@ load_dotnet35sp1() w_try_cd "${W_TMP}" w_try ln -s "${W_CACHE}/${W_PACKAGE}/${file1}" . + w_replace_username_guest WINEDLLOVERRIDES="ngen.exe=n" w_try_ms_installer "${WINE}" dotnetfx35.exe /lang:ENU ${W_OPT_UNATTENDED:+/q} w_try rm dotnetfx35.exe + w_restore_username w_restore_winver