diff --git a/debian/control b/debian/control index ef1c19a3b..1819b572d 100644 --- a/debian/control +++ b/debian/control @@ -12,10 +12,10 @@ Package: winetricks Architecture: all Multi-Arch: foreign Depends: + 7zip | p7zip-full, aria2 | wget | curl, binutils, cabextract, - p7zip-full, unzip, Recommends: fuseiso | archivemount, diff --git a/files/verbs/apps.txt b/files/verbs/apps.txt index d01cc4759..f202c444b 100644 --- a/files/verbs/apps.txt +++ b/files/verbs/apps.txt @@ -8,6 +8,8 @@ cmake CMake 2.8 (Kitware, 2013) [downloadable] colorprofile Standard RGB color profile (Microsoft, 2005) [downloadable] controlpad MS ActiveX Control Pad (Microsoft, 1997) [downloadable] controlspy Control Spy 6 (Microsoft, 2005) [downloadable] +dbgview Debug monitor (Mark Russinovich, 2019) [downloadable] +depends Dependency Walker (Steve P. Miller, 2006) [downloadable] dotnet20sdk MS .NET 2.0 SDK (Microsoft, 2006) [downloadable] dxsdk_aug2006 MS DirectX SDK, August 2006 (developers only) (Microsoft, 2006) [downloadable] dxsdk_jun2010 MS DirectX SDK, June 2010 (developers only) (Microsoft, 2010) [downloadable] @@ -39,6 +41,7 @@ ollydbg200 OllyDbg (ollydbg.de, 2010) [downloadable] ollydbg201 OllyDbg (ollydbg.de, 2013) [downloadable] openwatcom Open Watcom C/C++ compiler (can compile win16 code!) (Watcom, 2010) [downloadable] origin EA Origin (EA, 2011) [downloadable] +procexp Process Explorer (Microsoft, 2023) [downloadable] protectionid Protection ID (CDKiLLER & TippeX, 2016) psdk2003 MS Platform SDK 2003 (Microsoft, 2003) [downloadable] psdkwin71 MS Windows 7.1 SDK (Microsoft, 2010) [downloadable] diff --git a/src/winetricks b/src/winetricks index 6f9894c7f..c30256fbc 100755 --- a/src/winetricks +++ b/src/winetricks @@ -39,11 +39,11 @@ WINETRICKS_VERSION=20240105-next # - xz is used by some verbs to decompress tar archives. # - zenity is needed by the GUI, though it can limp along somewhat with kdialog/xmessage. # -# On Ubuntu (20.04 and newer), the following line can be used to install all the prerequisites: -# sudo apt install aria2 binutils cabextract fuseiso p7zip-full pkexec tor unrar unzip wine xdg-utils xz-utils zenity +# On Ubuntu (23.04 and newer), the following line can be used to install all the prerequisites: +# sudo apt install 7zip aria2 binutils cabextract fuseiso pkexec tor unrar-free unzip wine xdg-utils xz-utils zenity # # On older Ubuntu, the following line can be used to install all the prerequisites: -# sudo apt install aria2 binutils cabextract fuseiso p7zip-full policykit-1 tor unrar unzip wine xdg-utils xz-utils zenity +# sudo apt install aria2 binutils cabextract fuseiso p7zip-full policykit-1 tor unrar-free unzip wine xdg-utils xz-utils zenity # # On Fedora, these commands can be used (RPM Fusion is used to install unrar): # sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm @@ -193,7 +193,7 @@ W_TEXT_LINE="------------------------------------------------------" # Ask permission to continue w_askpermission() { - printf '%s\n%b\n%s\n' "${W_TEXT_LINE}" "${@}" "${W_TEXT_LINE}" + printf '%s\n%b\n%s\n' "${W_TEXT_LINE}" "${@}" "${W_TEXT_LINE}" >&2 if test "${W_OPT_UNATTENDED}"; then _W_timeout="--timeout" @@ -208,7 +208,7 @@ w_askpermission() # -t / TMOUT don't seem to be portable, so just assume yes in unattended mode w_info "Unattended mode, not prompting for confirmation" else - printf %s "Press Y or N, then Enter: " + printf %s "Press Y or N, then Enter: " >&2 read -r response test "${response}" = Y || test "${response}" = y fi @@ -232,7 +232,7 @@ w_info() { # If $WINETRICKS_SUPER_QUIET is set, w_info is a no-op: if [ -z "${WINETRICKS_SUPER_QUIET}" ] ; then - printf '%s\n%b\n%s\n' "${W_TEXT_LINE}" "${@}" "${W_TEXT_LINE}" + printf '%s\n%b\n%s\n' "${W_TEXT_LINE}" "${@}" "${W_TEXT_LINE}" >&2 fi # kdialog doesn't allow a timeout unless you use --passivepopup @@ -254,9 +254,9 @@ w_info() # Display warning message to stderr (since it is called inside redirected code) w_warn() { - # If $WINETRICKS_SUPER_QUIET is set, w_info is a no-op: + # If $WINETRICKS_SUPER_QUIET is set, w_warn is a no-op: if [ -z "${WINETRICKS_SUPER_QUIET}" ] ; then - printf '%s\nwarning: %b\n%s\n' "${W_TEXT_LINE}" "${*}" "${W_TEXT_LINE}" + printf '%s\nwarning: %b\n%s\n' "${W_TEXT_LINE}" "${*}" "${W_TEXT_LINE}" >&2 fi # kdialog doesn't allow a timeout unless you use --passivepopup @@ -559,6 +559,20 @@ w_package_broken_win64() w_package_broken "${bug_link}" "${bad_version}" "${good_version}" } +# Warn user if package is broken on (new style) wow64 +w_package_broken_wow64() { + bug_link="$1" + bad_version="$2" # Optional, for upstream regressions + good_version="$3" # Optional, if it's been fixed upstream + + _w_get_broken_messages + + if [ "${_W_wow64_style}" = "new" ]; then + w_warn "This package (${W_PACKAGE}) does not work on a new-style WoW64 prefix. See ${bug_link}. You must either use a 32-bit or old style WoW64 WINEPREFIX. Use --force to try anyway." + _w_force_continue_check 32 + fi +} + # Some packages don't support win32, die with an appropriate message # Returns 64 (for tests/winetricks-test) w_package_unsupported_win32() @@ -618,7 +632,7 @@ w_try() export WINEDLLOVERRIDES # If $WINETRICKS_SUPER_QUIET is set, make w_try quiet if [ -z "${WINETRICKS_SUPER_QUIET}" ]; then - printf '%s\n' "Executing $*" + printf '%s\n' "Executing $*" >&2 fi # On Vista, we need to jump through a few hoops to run commands in Cygwin. @@ -698,7 +712,7 @@ w_try_7z() if [ -z "${WINETRICKS_FORCE_WIN_7Z}" ] && [ -x "$(command -v 7z 2>/dev/null)" ] ; then w_try 7z x "${filename}" -o"${destdir}" "$@" else - w_warn "Cannot find 7z. Using Windows 7-Zip instead. (You can avoid this by installing 7z, e.g. 'sudo apt-get install p7zip-full' or 'sudo yum install p7zip-plugins')." + w_warn "Cannot find 7z. Using Windows 7-Zip instead. (You can avoid this by installing 7z, e.g. 'sudo apt install 7zip' or 'sudo yum install p7zip-plugins')." WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip # w_call above will wipe $W_TMP; if that's the CWD, things will break. So forcefully reset the directory: @@ -718,7 +732,7 @@ w_try_ar() if [ -z "${WINETRICKS_FORCE_WIN_7Z}" ] && [ -x "$(command -v ar 2>/dev/null)" ]; then w_try ar x "$@" else - w_warn "Cannot find ar. Using Windows 7-zip instead. (You can avoid this by installing binutils, e.g. 'sudo apt-get install binutils' or 'sudo yum install binutils')." + w_warn "Cannot find ar. Using Windows 7-zip instead. (You can avoid this by installing binutils, e.g. 'sudo apt install binutils' or 'sudo yum install binutils')." WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip # w_call above will wipe $W_TMP; if that's the CWD, things will break. So forcefully reset the directory: @@ -734,7 +748,7 @@ w_try_cabextract() { # Not always installed, but shouldn't be fatal unless it's being used if test ! -x "$(command -v cabextract 2>/dev/null)"; then - w_die "Cannot find cabextract. Please install it (e.g. 'sudo apt-get install cabextract' or 'sudo yum install cabextract')." + w_die "Cannot find cabextract. Please install it (e.g. 'sudo apt install cabextract' or 'sudo yum install cabextract')." fi w_try cabextract -q "$@" @@ -900,7 +914,7 @@ w_try_unrar() if [ -z "${WINETRICKS_FORCE_WIN_7Z}" ] && [ -x "$(command -v unrar 2>/dev/null)" ]; then w_try unrar x "$@" else - w_warn "Cannot find unrar. Using Windows 7-Zip instead. (You can avoid this by installing unrar, e.g. 'sudo apt-get install unrar' or 'sudo yum install unrar')." + w_warn "Cannot find unrar. Using Windows 7-Zip instead. (You can avoid this by installing unrar, e.g. 'sudo apt install unrar-free' or 'sudo yum install unrar')." WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip # w_call above will wipe $W_TMP; if that's the CWD, things will break. So forcefully reset the directory: @@ -931,7 +945,7 @@ w_try_unzip() 1|*) w_warn "Unzip failed, trying Windows 7-Zip instead." ;; esac else - w_warn "Cannot find unzip. Using Windows 7-Zip instead. (You can avoid this by installing unzip, e.g. 'sudo apt-get install unzip' or 'sudo yum install unzip')." + w_warn "Cannot find unzip. Using Windows 7-Zip instead. (You can avoid this by installing unzip, e.g. 'sudo apt install unzip' or 'sudo yum install unzip')." fi WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip @@ -999,7 +1013,7 @@ w_read_key() *zenity) W_KEY=$(zenity --entry --text "${_W_keymsg}") ;; *kdialog) W_KEY=$(kdialog --inputbox "${_W_keymsg}") ;; *xmessage) w_die "sorry, can't read key from GUI with xmessage" ;; - none) printf %s "${_W_keymsg}": ; read -r W_KEY ;; + none) printf %s "${_W_keymsg}": >&2 ; read -r W_KEY ;; esac if test "${W_KEY}" = ""; then @@ -1018,7 +1032,7 @@ w_verify_cabextract_available() # This should be called by verb_a, to give a proper warning if test ! -x "$(command -v cabextract 2>/dev/null)"; then - w_die "Cannot find cabextract. Please install it (e.g. 'sudo apt-get install cabextract' or 'sudo yum install cabextract')." + w_die "Cannot find cabextract. Please install it (e.g. 'sudo apt install cabextract' or 'sudo yum install cabextract')." fi w_try_cabextract -q -v >/dev/null 2>&1 @@ -1064,7 +1078,7 @@ w_expand_env() winetricks_early_wine_arch cmd.exe /c echo "%$1%" } -# Determine what architecture a binary file is built for +# Determine what architecture a binary file is built for, silently continue in case of failure. winetricks_get_file_arch() { _W_file="$1" @@ -1075,7 +1089,7 @@ winetricks_get_file_arch() "arm64") _W_file_arch="arm64" ;; "i386") _W_file_arch="i386" ;; "x86_64") _W_file_arch="x86_64" ;; - *) w_die "Unknown file arch: ${_W_lipo_output}" ;; + *) _W_file_arch="" ;; esac else # Assume ELF binaries for everything else @@ -1085,7 +1099,7 @@ winetricks_get_file_arch() "03"|"06") _W_file_arch="i386" ;; "b7") _W_file_arch="aarch64" ;; "28") _W_file_arch="aarch32" ;; - *) w_die "Unknown file arch: ${_W_ob_output}";; + *) _W_file_arch="" ;; esac fi @@ -2350,7 +2364,7 @@ w_override_all_dlls() newdev ninput normaliz npmshtml npptools ntdsapi \ ntprint objsel odbc32 odbccp32 odbccu32 ole32 oleacc \ oleaut32 olecli32 oledb32 oledlg olepro32 olesvr32 \ - olethk32 opcservices openal32 opencl packager pdh \ + olethk32 opcservices opencl packager pdh \ photometadatahandler pidgen powrprof printui prntvpt \ propsys psapi pstorec qcap qedit qmgr qmgrprxy \ quartz query qwave rasapi32 rasdlg regapi resutils \ @@ -3941,6 +3955,12 @@ winetricks_settings_menu() *) title="${title_bg}";; esac ;; + ru*) + case "${title_ru}" in + "") ;; + *) title="${title_ru}";; + esac + ;; uk*) case "${title_uk}" in "") ;; @@ -5063,13 +5083,59 @@ winetricks_set_wineprefix() # Check the bitness of wineserver + wine binary, used later to determine if we're on a WOW setup (no wine64) # https://github.com/Winetricks/winetricks/issues/2030 WINESERVER_BIN="$(which "${WINESERVER}")" + + # wineboot often is a link pointing to wineapploader in Wine's bindir. If we don't find binaries we may look for them there later + if [ -n "${READLINK_F}" ]; then + true + elif [ "$(uname -s)" = "Darwin" ]; then + # readlink exists on MacOS, but does not support "-f" on MacOS < 12.3 + # Use perl instead + READLINK_F="perl -MCwd=abs_path -le 'print abs_path readlink(shift);'" + else + READLINK_F="readlink -f" + fi + WINEBOOT_BIN="$(dirname "${WINESERVER_BIN}")/$(basename "${WINESERVER_BIN}"|sed 's,wineserver,wineboot,')" + _W_wineserver_binary_arch="$(winetricks_get_file_arch "${WINESERVER_BIN}")" + if [ -z "${_W_wineserver_binary_arch}" ]; then + # wineserver might be a script calling a binary in Wine's bindir. + if [ -z "${WINE_BINDIR}" ] && [ -x "${WINEBOOT_BIN}" ]; then + WINE_BINDIR="$(dirname "$(${READLINK_F} "${WINEBOOT_BIN}" 2>/dev/null)" 2>/dev/null)" + fi + # wineserver in Wine's bindir might be a script calling wineserver64 preferably over wineserver32 (Debian). + # Try these before testing wineserver itself + if [ -x "${WINE_BINDIR}/wineserver64" ]; then + _W_wineserver_binary_arch="$(winetricks_get_file_arch "${WINE_BINDIR}/wineserver64")" + elif [ -x "${WINE_BINDIR}/wineserver32" ]; then + _W_wineserver_binary_arch="$(winetricks_get_file_arch "${WINE_BINDIR}/wineserver32")" + elif [ -x "${WINE_BINDIR}/wineserver" ]; then + _W_wineserver_binary_arch="$(winetricks_get_file_arch "${WINE_BINDIR}/wineserver")" + fi + fi + if [ -z "${_W_wineserver_binary_arch}" ]; then + w_warn "Unknown file arch of ${WINESERVER_BIN}." + fi + WINE_BIN="$(which "${WINE}")" _W_wine_binary_arch="$(winetricks_get_file_arch "${WINE_BIN}")" + if [ -z "${_W_wine_binary_arch}" ]; then + # wine might be a script calling a binary in Wine's bindir. + if [ -z "${WINE_BINDIR}" ] && [ -x "${WINEBOOT_BIN}" ]; then + WINE_BINDIR="$(dirname "$(${READLINK_F} "${WINEBOOT_BIN}" 2>/dev/null)" 2>/dev/null)" + fi + if [ -x "${WINE_BINDIR}/wine" ]; then + _W_wine_binary_arch="$(winetricks_get_file_arch "${WINE_BINDIR}/wine")" + fi + fi + if [ -z "${_W_wine_binary_arch}" ]; then + w_warn "Unknown file arch of ${WINE_BIN}." + fi # determine wow64 type (new/old) # FIXME: check what upstream is calling them - if [ "${_W_wineserver_binary_arch}" = "${_W_wine_binary_arch}" ]; then + if [ -z "${_W_wineserver_binary_arch}" ] || [ -z "${_W_wine_binary_arch}" ]; then + _W_wow64_style="unknown" + elif [ "${_W_wineserver_binary_arch}" = "${_W_wine_binary_arch}" ]; then _W_wow64_style="new" else _W_wow64_style="classic" @@ -5089,10 +5155,18 @@ winetricks_set_wineprefix() elif command -v "${WINE}64" >/dev/null 2>&1; then WINE64="${WINE}64" else - # Handle case where wine binaries (or binary wrappers) have a suffix - WINE64="$(dirname "${WINE}")/" - [ "${WINE64}" = "./" ] && WINE64="" - WINE64="${WINE64}$(basename "${WINE}" | sed 's/^wine/wine64/')" + if [ -x "${WINEBOOT_BIN}" ]; then + WINE_BINDIR="$(dirname "$(${READLINK_F} "${WINEBOOT_BIN}" 2>/dev/null)" 2>/dev/null)" + if [ -x "${WINE_BINDIR}/wine64" ]; then + # Workaround case where wine is in path, but wine64 is only in Wine's bindir + WINE64="${WINE_BINDIR}/wine64" + fi + else + # Handle case where wine binaries (or binary wrappers) have a suffix + WINE64="$(dirname "${WINE}")/" + [ "${WINE64}" = "./" ] && WINE64="" + WINE64="${WINE64}$(basename "${WINE}" | sed 's/^wine/wine64/')" + fi fi WINE_ARCH="${WINE64}" WINE_MULTI="${WINE}" @@ -5123,19 +5197,24 @@ winetricks_set_wineprefix() W_COMMONFILES_WIN="$(w_expand_env CommonProgramW6432)" W_COMMONFILES="$(w_pathconv -u "${W_COMMONFILES_WIN}")" - # 64-bit prefixes still have plenty of issues/a lot of verbs only install 32-bit libraries - # Allow the user to disable that (globally, or per prefix). - if test -f "${W_CACHE}/no_win64_warnings"; then - echo "${W_CACHE}/no_win64_warnings exists, not issuing 64-bit prefix warning" - _W_no_win64_warnings=1 - elif test -f "${WINEPREFIX}/no_win64_warnings"; then - echo "${WINEPREFIX}/no_win64_warnings exists, not issuing 64-bit prefix warning" - _W_no_win64_warnings=1 - elif test -f "${W_TMP_EARLY}/no_win64_warnings"; then - echo "${W_TMP_EARLY}/no_win64_warnings exists, not issuing 64-bit prefix warning" - _W_no_win64_warnings=1 - else - _W_no_win64_warnings=0 + # check if user has exported env variable or not + # if set, use value directly later when determining if win64 warnings should be displayed or not + # if empty, then fallback to checking for location-specific files and set accordingly + if test -z "${W_NO_WIN64_WARNINGS}"; then + # 64-bit prefixes still have plenty of issues/a lot of verbs only install 32-bit libraries + # Allow the user to disable that (globally, or per prefix). + if test -f "${W_CACHE}/no_win64_warnings"; then + echo "${W_CACHE}/no_win64_warnings exists, not issuing 64-bit prefix warning" + W_NO_WIN64_WARNINGS=1 + elif test -f "${WINEPREFIX}/no_win64_warnings"; then + echo "${WINEPREFIX}/no_win64_warnings exists, not issuing 64-bit prefix warning" + W_NO_WIN64_WARNINGS=1 + elif test -f "${W_TMP_EARLY}/no_win64_warnings"; then + echo "${W_TMP_EARLY}/no_win64_warnings exists, not issuing 64-bit prefix warning" + W_NO_WIN64_WARNINGS=1 + else + W_NO_WIN64_WARNINGS=0 + fi fi # In case of GUI, only warn once per prefix, per session (i.e., don't warn next time) @@ -5145,7 +5224,7 @@ winetricks_set_wineprefix() *) touch "${W_TMP_EARLY}/no_win64_warnings" ;; esac - if [ "${_W_no_win64_warnings}" = 0 ]; then + if [ "${W_NO_WIN64_WARNINGS}" = 0 ]; then case ${LANG} in bg*) w_warn "Използвате 64-битова папка. Повечето програми са за 32-битова архитектура. Ако възникнат проблеми, моля, използвайте 32-битова папка, преди да ги докладвате." ;; ru*) w_warn "Вы используете 64-битный WINEPREFIX. Важно: многие ветки устанавливают только 32-битные версии пакетов. Если у вас возникли проблемы, пожалуйста, проверьте еще раз на чистом 32-битном WINEPREFIX до отправки отчета об ошибке." ;; @@ -5155,6 +5234,8 @@ winetricks_set_wineprefix() if [ "${_W_wow64_style}" = "new" ]; then w_warn "You apppear to be using Wine's new wow64 mode. Note that this is EXPERIMENTAL and not yet fully supported. If reporting an issue, be sure to mention this." + elif [ "${_W_wow64_style}" = "unknown" ]; then + w_warn "WoW64 type could not be detected." fi fi @@ -6064,17 +6145,32 @@ load_cmd() w_metadata cnc_ddraw dlls \ title="Reimplentation of ddraw for CnC games" \ - homepage="https://github.com/CnCNet/cnc-ddraw" \ + homepage="https://github.com/FunkyFr3sh/cnc-ddraw" \ publisher="CnCNet" \ year="2021" \ media="download" \ - file1="cnc-ddraw-v5.0.0.0.zip" \ + file1="cnc-ddraw-v6.2.0.0.zip" \ installed_file1="${W_SYSTEM32_DLLS_WIN}/Shaders/readme.txt" load_cnc_ddraw() { # Note: only works if ddraw.ini contains settings for the executable - w_download https://github.com/CnCNet/cnc-ddraw/releases/download/v5.0.0.0/cnc-ddraw.zip 9f37010bf87aafbe3d97a95f4253460a8f0869fb52bb45bcffbb73182b4b00fe cnc-ddraw-v5.0.0.0.zip + # 2018/12/11 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/1.3.4.0/cnc-ddraw.zip + # 2020/02/03 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/1.3.5.0/cnc-ddraw.zip + # 2021/09/29 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v4.4.4.0/cnc-ddraw.zip + # 2022/03/27 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v4.4.7.0/cnc-ddraw.zip + # 2022/09/18 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v4.4.9.0/cnc-ddraw.zip + # 2022/10/03 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v4.6.0.0/cnc-ddraw.zip + # 2023/02/08 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.0.0.0/cnc-ddraw.zip + # 2023/08/15 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.6.0.0/cnc-ddraw.zip + # 2023/08/24 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.7.0.0/cnc-ddraw.zip + # 2023/09/26 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.8.0.0/cnc-ddraw.zip + # 2023/10/20 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v5.9.0.0/cnc-ddraw.zip + # 2023/11/04 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v6.0.0.0/cnc-ddraw.zip + # 2024/02/03 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v6.1.0.0d/cnc-ddraw.zip + # 2024/02/21 https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v6.2.0.0/cnc-ddraw.zip + + w_download https://github.com/FunkyFr3sh/cnc-ddraw/releases/download/v6.2.0.0/cnc-ddraw.zip e5677ba52c31ffa93421a16edacff0c4d1f03e107aea6fc860861b43e3356119 cnc-ddraw-v6.2.0.0.zip w_try_unzip "${W_SYSTEM32_DLLS}" "${W_CACHE}/${W_PACKAGE}/${file1}" w_override_dlls native,builtin ddraw @@ -6223,6 +6319,25 @@ load_binkw32() #---------------------------------------------------------------- +w_metadata d2gl dlls \ + title="Diablo 2 LoD Glide to OpenGL Wrapper" \ + publisher="Bayaraa" \ + year="2023" \ + media="download" \ + file1="D2GL.v1.3.3.zip" \ + installed_file1="${W_PROGRAMS_X86_WIN}/Diablo II/glide3x.dll" \ + homepage="https://github.com/bayaraa/d2gl" + +load_d2gl() +{ + w_download https://github.com/bayaraa/d2gl/releases/download/v1.3.3/D2GL.v1.3.3.zip 33862ab74f314f9e72f992dd8850f8bfd0d6533ef0e4a0015867fc6524125ea2 + w_try_unzip "${W_PROGRAMS_X86_UNIX}/Diablo II" "${W_CACHE}/${W_PACKAGE}/${file1}" + + w_warn "Run Diablo II using game.exe -3dfx" +} + +#---------------------------------------------------------------- + w_metadata d3dcompiler_42 dlls \ title="MS d3dcompiler_42.dll" \ publisher="Microsoft" \ @@ -7072,6 +7187,42 @@ load_dsdmo() #---------------------------------------------------------------- +w_metadata dbgview apps \ + title="Debug monitor" \ + publisher="Mark Russinovich" \ + year="2019" \ + media="download" \ + +load_dbgview() +{ + w_download https://download.sysinternals.com/files/DebugView.zip 05cfa3dde3d98eb333d0582556f4f520e6207fe8d335bd1e910d90692798f913 + w_try_unzip "${W_TMP}" "${W_CACHE}"/dbgview/DebugView.zip + if [ "${W_ARCH}" = "win64" ]; then + w_try cp "${W_TMP}"/dbgview64.exe "${W_WINDIR_UNIX}" + fi + w_try cp "${W_TMP}"/Dbgview.exe "${W_WINDIR_UNIX}" + w_try cp "${W_TMP}"/Dbgview.chm "${W_WINDIR_UNIX}" +} + +#---------------------------------------------------------------- + +w_metadata depends apps \ + title="Dependency Walker" \ + publisher="Steve P. Miller" \ + year="2006" \ + media="download" \ + +load_depends() +{ + w_download https://www.dependencywalker.com/depends22_x86.zip 03d73abba0e856c81ba994505373fdb94a13b84eb29e6c268be1bf21b7417ca3 + w_try_unzip "${W_TMP}" "${W_CACHE}"/depends/depends22_x86.zip + w_try cp "${W_TMP}"/depends.* "${W_WINDIR_UNIX}" + # depends.exe uses mfc42 + w_call mfc42 +} + +#---------------------------------------------------------------- + w_metadata dxsdk_aug2006 apps \ title="MS DirectX SDK, August 2006 (developers only)" \ publisher="Microsoft" \ @@ -10157,6 +10308,56 @@ load_dotnetdesktop7() #---------------------------------------------------------------- +w_metadata dotnet8 dlls \ + title="MS .NET Runtime 8.0 LTS" \ + publisher="Microsoft" \ + year="2024" \ + media="download" \ + file1="dotnet-runtime-8.0.2-win-x86.exe" \ + installed_file1="${W_PROGRAMS_WIN}/dotnet/dotnet.exe" + +load_dotnet8() +{ + # Official version, see https://dotnet.microsoft.com/en-us/download/dotnet/8.0 + w_download https://download.visualstudio.microsoft.com/download/pr/e4987764-bda2-4a72-8820-52605f30e899/f5b412fec80d7f4b20fc4ac7740f7279/dotnet-runtime-8.0.2-win-x86.exe b765676fc2f85cb393cabf2bef5dd118578a2a8761be97454352c0c2634957a4 + + w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/quiet} + + if [ "${W_ARCH}" = "win64" ]; then + # Also install the 64-bit version + w_download https://download.visualstudio.microsoft.com/download/pr/a4bc7333-6e30-4e2d-b300-0b4f23537e5b/4b81af6d46a02fba5d9ce030af438c67/dotnet-runtime-8.0.2-win-x64.exe ec10da69116d12691abcb374929cf9eec65e4607095ff1ff035989848fd1db00 + w_try "${WINE}" "dotnet-runtime-8.0.2-win-x64.exe" ${W_OPT_UNATTENDED:+/quiet} + fi +} + +#---------------------------------------------------------------- + +w_metadata dotnetdesktop8 dlls \ + title="MS .NET Desktop Runtime 8.0 LTS" \ + publisher="Microsoft" \ + year="2024" \ + media="download" \ + file1="windowsdesktop-runtime-8.0.2-win-x86.exe" \ + installed_file1="${W_PROGRAMS_WIN}/dotnet/dotnet.exe" + +load_dotnetdesktop8() +{ + # Official version, see https://dotnet.microsoft.com/en-us/download/dotnet/8.0 + w_download https://download.visualstudio.microsoft.com/download/pr/9b77b480-7e32-4321-b417-a41e0f8ea952/3922bbf5538277b1d41e9b49ee443673/windowsdesktop-runtime-8.0.2-win-x86.exe 548bcca012cde72bfa68e693ee3dab175c3aa7926d3a3621c8f6f3b12904b909 + + w_try_cd "${W_CACHE}"/"${W_PACKAGE}" + w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+/quiet} + + if [ "${W_ARCH}" = "win64" ]; then + # Also install the 64-bit version + w_download https://download.visualstudio.microsoft.com/download/pr/84ba33d4-4407-4572-9bfa-414d26e7c67c/bb81f8c9e6c9ee1ca547396f6e71b65f/windowsdesktop-runtime-8.0.2-win-x64.exe 52099c00372c1ef6c78878f98f6994777170c8f8556bc3b42a6c291a268ce750 + w_try "${WINE}" "windowsdesktop-runtime-8.0.2-win-x64.exe" ${W_OPT_UNATTENDED:+/quiet} + fi +} + +#---------------------------------------------------------------- + w_metadata dotnet_verifier dlls \ title="MS .NET Verifier" \ publisher="Microsoft" \ @@ -10934,6 +11135,8 @@ w_metadata icodecs dlls \ load_icodecs() { + w_package_broken_wow64 "https://bugs.winehq.org/show_bug.cgi?id=54670" + # Note: this codec is insecure, see # https://support.microsoft.com/kb/954157 # Original source, ftp://download.intel.com/support/createshare/camerapack/codinstl.exe, had same checksum @@ -12173,6 +12376,8 @@ w_metadata physx dlls \ load_physx() { + w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=56606" 9.5 + w_get_sha256sum "${W_PROGRAMS_X86_UNIX}/NVIDIA Corporation/PhysX/Engine/86C5F4F22ECD/APEX_Particles_x64.dll" if [ "${_W_gotsha256sum}"x = "b3991e0165a9802b60e2f7d14c1be5f879071999ae74a38263cec9bf043a9eaa"x ] ; then w_warn "${W_PACKAGE} is already installed - not updating" @@ -14996,9 +15201,9 @@ load_lucida() w_metadata opensymbol fonts \ title="OpenSymbol fonts (replacement for Wingdings)" \ publisher="libreoffice.org" \ - year="2022" \ + year="2023" \ media="download" \ - file1="fonts-opensymbol_102.12+LibO7.6.4~rc1-1~bpo12+1_all.deb" \ + file1="fonts-opensymbol_102.12+LibO24.2.0-1~bpo12+1_all.deb" \ installed_file1="${W_FONTSDIR_WIN}/opens___.ttf" load_opensymbol() @@ -15006,7 +15211,7 @@ load_opensymbol() # The OpenSymbol fonts are a replacement for the Windows Wingdings font from OpenOffice.org. # Need to w_download Debian since I can't find a standalone download from OpenOffice # Note: The source download package on debian is for _all_ of OpenOffice, which is 266 MB. - w_download http://ftp.us.debian.org/debian/pool/main/libr/libreoffice/fonts-opensymbol_102.12+LibO7.6.4~rc1-1~bpo12+1_all.deb e35e57a0a703fe656230a30c7675a5c5c4772a11c6f650634765234d1f0fa35f + w_download http://ftp.us.debian.org/debian/pool/main/libr/libreoffice/fonts-opensymbol_102.12+LibO24.2.0-1~bpo12+1_all.deb 08687cba8b0fed3d8c6ff714c4ec17a66c57157c65a1e09c0fadff10aee29ca5 w_try_cd "${W_TMP}" w_try_ar "${W_CACHE}/${W_PACKAGE}/${file1}" data.tar.xz w_try tar -Jxf "${W_TMP}/data.tar.xz" ./usr/share/fonts/truetype/libreoffice/opens___.ttf @@ -16740,14 +16945,27 @@ w_metadata origin apps \ year="2011" \ media="download" \ file1="OriginSetup.exe" \ - file2="version_v2.dll" \ + file2="version_v3.dll" \ installed_file1="${W_PROGRAMS_X86_WIN}/Origin/Origin.exe" \ homepage="https://www.origin.com/" load_origin() { w_download_to origin https://taskinoz.com/downloads/OriginSetup-10.5.119.52718.exe ed6ee5174f697744ac7c5783ff9021da603bbac42ae9836cd468d432cadc9779 OriginSetup.exe - w_download_to origin https://github.com/p0358/Fuck_off_EA_App/releases/download/v2/version.dll 5f0bbb15f7cff8540642c28739db0cd6b15e77e5935f4e6701351eea86d929ab version_v2.dll + w_download_to origin https://github.com/p0358/Fuck_off_EA_App/releases/download/v3/version.dll 6c2df238a5cbff3475527aa7adf1d8b76d4d2d1a33a6d62edd4749408305c2be version_v3.dll + + w_try_mkdir "${W_DRIVE_C}/ProgramData/Origin" + + w_warn "Stopping Origin from finding updates" + cat > "${W_DRIVE_C}/ProgramData/Origin/local.xml" <<_EOF_ + + + + + + + +_EOF_ w_try_cd "${W_CACHE}/${W_PACKAGE}" w_try "${WINE}" "${file1}" /NoLaunch ${W_OPT_UNATTENDED:+/SILENT} @@ -16781,7 +16999,7 @@ load_origin() fi w_warn "Workaround Forced EA app upgrade." - w_try cp -f "${W_CACHE}/${W_PACKAGE}/version_v2.dll" "${W_PROGRAMS_X86_UNIX}/Origin/version.dll" + w_try cp -f "${W_CACHE}/${W_PACKAGE}/version_v3.dll" "${W_PROGRAMS_X86_UNIX}/Origin/version.dll" w_override_app_dlls Origin.exe native version w_warn "Pretend EA app is installed" @@ -16798,6 +17016,24 @@ _EOF_ #---------------------------------------------------------------- +w_metadata procexp apps \ + title="Process Explorer" \ + publisher="Steve P. Miller" \ + year="2006" \ + media="download" \ + +load_procexp() +{ + w_download https://download.sysinternals.com/files/ProcessExplorer.zip c50bddaaacb26c5654f845962f9ee34db6ce26b62f94a03bb59f3b5a6eea1922 + w_try_unzip "${W_TMP}" "${W_CACHE}"/procexp/ProcessExplorer.zip + if [ "${W_ARCH}" = "win64" ] ; then + w_try cp "${W_TMP}"/procexp64.exe "${W_WINDIR_UNIX}" + fi + w_try cp "${W_TMP}"/procexp.exe "${W_WINDIR_UNIX}" +} + +#---------------------------------------------------------------- + w_metadata protectionid apps \ title="Protection ID" \ publisher="CDKiLLER & TippeX" \ @@ -18126,6 +18362,54 @@ load_wglgears() #### # settings->desktop +#---------------------------------------------------------------- +w_metadata graphics=wayland settings \ + title_bg="Задайте графичния драйвер Wayland" \ + title_uk="Встановити графічний драйвер Wayland" \ + title_ru="Установить графический драйвер Wayland" \ + title="Set graphics driver to Wayland" +w_metadata graphics=x11 settings \ + title_bg="Задайте графичния драйвер X11" \ + title_uk="Встановити графічний драйвер X11" \ + title_ru="Установить графический драйвер X11" \ + title="Set graphics driver to X11" +w_metadata graphics=mac settings \ + title_bg="Задайте графичния драйвер Quartz (за macOS)" \ + title_uk="Встановити графічний драйвер Quartz (для macOS)" \ + title_ru="Установить графический драйвер Quartz (для macOS)" \ + title="Set graphics driver to Quartz (for macOS)" +w_metadata graphics=default settings \ + title_bg="Задайте графичния драйвер по подразбиране" \ + title_uk="Встановити графічний драйвер за замовчуванням" \ + title_ru="Установить графический драйвер по умолчанию" \ + title="Set graphics driver to default" + +load_graphics() { + case "$1" in + default ) + arg='-' + ;; + wayland ) + arg='"wayland,x11"' + ;; + mac ) + arg='"mac,x11"' + ;; + * ) + arg="\"$1\"" + ;; + esac + echo "Setting graphics driver to ${arg}" + cat > "${W_TMP}"/set-graphics.reg <<_EOF_ +REGEDIT4 + +[HKEY_CURRENT_USER\\Software\\Wine\\Drivers] +"Graphics"=${arg} + +_EOF_ + w_try_regedit "${W_TMP_WIN}"\\set-graphics.reg +} + #---------------------------------------------------------------- # DirectInput settings @@ -18232,31 +18516,6 @@ _EOF_ w_try_regedit "${W_TMP_WIN}"\\fontsmooth.reg } -#---------------------------------------------------------------- -# Mac Driver settings - -w_metadata macdriver=mac settings \ - title_bg="Включете драйвера на Mac - Quartz (по подразбиране)" \ - title_uk="Увімкнути рідний Mac Quartz драйвер (за замовчуванням)" \ - title="Enable the Mac native Quartz driver (default)" -w_metadata macdriver=x11 settings \ - title_bg="Изключете драйвера на Mac - Quartz и включете драйвера на X11" \ - title_uk="Вимкнути рідний Mac Quartz драйвер та використовувати замість нього X11" \ - title="Disable the Mac native Quartz driver, use X11 instead" - -load_macdriver() -{ - echo "Setting MacDriver to ${arg}" - cat > "${W_TMP}"/set-mac.reg <<_EOF_ -REGEDIT4 - -[HKEY_CURRENT_USER\\Software\\Wine\\Drivers] -"Graphics"="${arg}" - -_EOF_ - w_try_regedit "${W_TMP}"/set-mac.reg -} - #---------------------------------------------------------------- w_metadata mackeyremap=both settings \ @@ -19775,13 +20034,15 @@ execute_command() winecmd) winetricks_shell "${WINE}" "cmd.exe" ;; wine_misc_exe) winetricks_misc_exe ;; - # These have to come before *=disabled to avoid looking like DLLs + # These have to come before *=disabled and *=default to avoid looking like DLLs cfc=disable*) w_call cfc=disabled ;; fontsmooth=disable*) w_call fontsmooth=disable ;; + graphics=default) w_call graphics=default ;; mwo=disable*) w_call mwo=disable ;; # FIXME: relax matching so we can handle these spelling differences in verb instead of here rtlm=disable*) w_call rtlm=disabled ;; sound=disable*) w_call sound=disabled ;; ssm=disable*) w_call ssm=disabled ;; + videomemorysize=default) w_call videomemorysize=default ;; # Hacks for backwards compatibility # 2017/03/22: add deprecation notices @@ -19866,6 +20127,8 @@ execute_command() ie6_full) w_warn "Calling ie6_full is deprecated, please use ie6 instead" ; w_call ie6 ;; # FIXME: use wsh57 instead? jscript) w_warn "Calling jscript is deprecated, please use wsh57 instead" ; w_call wsh57 ;; + macdriver=mac) w_warn "Calling macdriver=mac is deprecated, please use graphics=mac instead" ; w_call graphics=mac ;; + macdriver=x11) w_warn "Calling macdriver=x11 is deprecated, please use graphics=x11 instead" ; w_call graphics=x11 ;; npm-repack) w_warn "Calling npm-repack is deprecated, please use npm=repack instead" ; w_call npm=repack ;; oss) w_warn "Calling oss is deprecated, please use sound=oss instead" ; w_call sound=oss ;; psdkwin7) w_warn "psdkwin7 has been removed, use psdkwin71 instead"; w_call psdkwin71 ;; diff --git a/tests/winetricks-test b/tests/winetricks-test index cd2193629..6fa3f1d1a 100755 --- a/tests/winetricks-test +++ b/tests/winetricks-test @@ -102,6 +102,8 @@ BLACKLIST="${BLACKLIST}|ffdshow|python26|python27" BLACKLIST="${BLACKLIST}|dirac" # https://bugs.winehq.org/show_bug.cgi?id=50061 / https://github.com/Winetricks/winetricks/issues/1644 BLACKLIST="${BLACKLIST}|quicktime76" +# https://bugs.winehq.org/show_bug.cgi?id=56209 +BLACKLIST="${BLACKLIST}|vb5run" # Tests that fail under Xvfb XVFB_DOTNET_BLACKLIST="dotnet11|dotnet11sp1|dotnet20|dotnet20sdk|dotnet20sp1|dotnet30|dotnet40|dotnet46"