diff --git a/patches/0005-workaround-for-guest-user.patch b/patches/0005-workaround-for-guest-user.patch new file mode 100644 index 0000000000000000000000000000000000000000..5ae35bf785a1305c0243366db27cb1f278279ee7 --- /dev/null +++ b/patches/0005-workaround-for-guest-user.patch @@ -0,0 +1,115 @@ +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