From f7eb3adc9b4852bb2ff1d215e0b72f5cde04990b Mon Sep 17 00:00:00 2001 From: idriskalp Date: Thu, 4 Jun 2020 03:17:34 +0300 Subject: [PATCH] wine 5.9 --- hardware/emulator/wine/files/winetricks | 5779 +++++++++++++++-------- hardware/emulator/wine/pspec.xml | 9 +- 2 files changed, 3807 insertions(+), 1981 deletions(-) diff --git a/hardware/emulator/wine/files/winetricks b/hardware/emulator/wine/files/winetricks index 5ee82c5439..1fab7fdd89 100644 --- a/hardware/emulator/wine/files/winetricks +++ b/hardware/emulator/wine/files/winetricks @@ -6,7 +6,7 @@ # Name of this version of winetricks (YYYYMMDD) # (This doesn't change often, use the sha256sum of the file when reporting problems) -WINETRICKS_VERSION=20181203-next +WINETRICKS_VERSION=20200412-next # This is a UTF-8 file # You should see an o with two dots over it here [ö] @@ -28,24 +28,23 @@ WINETRICKS_VERSION=20181203-next # - wine is used to execute Win32 apps except on Cygwin. # - ar, cabextract, unrar, unzip, and 7z are needed by some verbs. # - aria2c, wget, curl, or fetch is needed for downloading. -# - sha256sum, sha256, or shasum (OSX 10.5 does not support these, 10.6+ is required): -# note: some legacy verbs may still use sha1sum, sha1, or shasum, but this is -# deprecated and will be removed in a future release. -# - zenity is needed by the GUI, though it can limp along somewhat with kdialog/xmessage. -# - xdg-open (if present) or open (for OS X) is used to open download pages -# for the user when downloads cannot be fully automated. -# - pkexec, sudo, or kdesu (gksu/gksudo/kdesudo are deprecated upstream but also still supported) -# are used to mount .iso images if the user cached them with -k option. # - fuseiso, archivemount (Linux), or hdiutil (macOS) is used to mount .iso images. # - perl is used to munge steam config files. +# - pkexec, sudo, or kdesu (gksu/gksudo/kdesudo are deprecated upstream but also still supported) +# are used to mount .iso images if the user cached them with -k option. +# - sha256sum, sha256, or shasum (OSX 10.5 does not support these, 10.6+ is required) # - torify is used with option "--torify" if sites are blocked in single countries. -# On Ubuntu, the following lines can be used to install all the prerequisites: -# sudo add-apt-repository ppa:ubuntu-wine/ppa -# sudo apt-get update -# sudo apt-get install binutils cabextract p7zip-full unrar unzip wget wine zenity +# - xdg-open (if present) or open (for OS X) is used to open download pages +# for the user when downloads cannot be fully automated. +# - 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, 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 +# # 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 -# sudo dnf install binutils cabextract p7zip-plugins unrar unzip wget wine zenity +# sudo dnf install binutils cabextract fuseiso p7zip-plugins polkit tor unrar unzip wget wine xdg-utils xz zenity # # See https://github.com/Winetricks/winetricks for documentation and tutorials, # including how to contribute changes to winetricks. @@ -68,7 +67,7 @@ WINETRICKS_VERSION=20181203-next # Copyright (C) 2011 Trevor Johnson # Copyright (C) 2011 Franco Junio # Copyright (C) 2011 Craig Sanders -# Copyright (C) 2011 Matthew Bauer +# Copyright (C) 2011 Matthew Bauer # Copyright (C) 2011 Giuseppe Dia # Copyright (C) 2011 Łukasz Wojniłowicz # Copyright (C) 2011 Matthew Bozarth @@ -223,7 +222,7 @@ w_askpermission() w_info() { # If $WINETRICKS_SUPER_QUIET is set, w_info is a no-op: - if [ ! "$WINETRICKS_SUPER_QUIET" ] ; then + if [ -z "$WINETRICKS_SUPER_QUIET" ] ; then echo "------------------------------------------------------" echo "$@" echo "------------------------------------------------------" @@ -244,7 +243,7 @@ w_info() w_warn() { # If $WINETRICKS_SUPER_QUIET is set, w_info is a no-op: - if [ ! "$WINETRICKS_SUPER_QUIET" ] ; then + if [ -z "$WINETRICKS_SUPER_QUIET" ] ; then echo "------------------------------------------------------" echo "$@" echo "------------------------------------------------------" @@ -301,7 +300,139 @@ w_killall() kill -s KILL $(pgrep $1) } -# Warn user if package is broken. Optionally provide a link to the bug report. +# Warn user if package is broken (on all arches) in the current wine version. Bug report required. +w_package_broken() +{ + # FIXME: test cases for this + + bug_link="$1" + bad_version="$2" + good_version="$3" + + if [ -z "$bug_link" ] ; then + w_die "Bug report link required!" + fi + + if [ -n "$good_version" ]; then + if ! w_wine_version_in "${bad_version},${good_version}"; then + w_warn "This package ($W_PACKAGE) is broken in ${_wine_version_stripped}. Upgrade to >=${good_version}. See ${bug_link} for more info." + exit 99 + fi + elif [ -n "$bad_version" ]; then + if ! w_wine_version_in "${bad_version}"; then + w_warn "This package ($W_PACKAGE) is broken in ${_wine_version_stripped}. Broken since ${bad_version}. See ${bug_link} for more info." + exit 99 + fi + else + w_warn "This package ($W_PACKAGE) is broken. See ${bug_link} for more info." + exit 99 + fi +} + +w_detect_mingw() +{ + # mingw builds have some (not yet all) .dll files in ${WINE}/../lib{,64}/wine + # non-mingw have exclusively .dll.so files + # + # It's more portable though, to check for 'Wine (placeholder|builtin) DLL' + # placeholder=no-mingw + # builtin=mingw (wine-4.11+) + + # See https://github.com/Winetricks/winetricks/issues/1461 + if w_wine_version_in ,4.10 ; then + if grep -obUa "Wine placeholder DLL" "$(w_winepath -u "c:\\windows\\system32\\kernelbase.dll" 2>/dev/null)" | grep -q '64:Wine placeholder DLL'; then + _W_no_mingw=1 + elif grep -obUa "Wine builtin DLL" "$(w_winepath -u "c:\\windows\\system32\\kernelbase.dll" 2>/dev/null)" | grep -q '64:Wine builtin DLL'; then + _W_mingw=1 + else + w_warn "Unable to detect wine dlls, please file an issue on Github!" + fi + else + # FIXME: better message here (at least, easier to grep/recognize + echo "w_detect_mingw: mingw detection unimplemented for wine<4.11" + _W_no_mingw=1 + fi +} + +# Warn user if package is broken in the current wine version when compiled with mingw. Bug report required. +w_package_broken_mingw() +{ + # FIXME: test cases for this + + bug_link="$1" + bad_version="$2" + good_version="$3" + + w_detect_mingw + + if [ -z "$_W_mingw" ]; then + # We're not using a mingw build, nothing to do: + return + fi + + if [ -z "$bug_link" ] ; then + w_die "Bug report link required!" + fi + + if [ -n "$good_version" ]; then + if ! w_wine_version_in "${bad_version},${good_version}"; then + w_warn "This package ($W_PACKAGE) is broken in ${_wine_version_stripped} when wine is built with mingw. Upgrade to >=${good_version} or disable mingw. See ${bug_link} for more info." + exit 99 + else + echo "package was broken, now fixed" + fi + elif [ -n "$bad_version" ]; then + if ! w_wine_version_in "${bad_version}"; then + w_warn "This package ($W_PACKAGE) is broken in ${_wine_version_stripped} (broken since ${bad_version} when wine is built with mingw. See ${bug_link} for more info." + exit 99 + else + echo "Package is broken in future versions" + fi + else + w_warn "This package ($W_PACKAGE) is broken when wine is built with mingw. See ${bug_link} for more info." + exit 99 + fi +} + +# Warn user if package is broken in the current wine version when compiled without mingw. Bug report required. +w_package_broken_no_mingw() +{ + # FIXME: test cases for this + + bug_link="$1" + bad_version="$2" + good_version="$3" + + if [ -z "$_W_no_mingw" ]; then + # We're using a mingw build, nothing to do: + return + fi + + if [ -z "$bug_link" ] ; then + w_die "Bug report link required!" + fi + + if [ -n "$good_version" ]; then + if ! w_wine_version_in "${bad_version},${good_version}"; then + w_warn "This package ($W_PACKAGE) is broken in ${_wine_version_stripped} when wine is built without mingw. Upgrade to >=${good_version}. See ${bug_link} for more info." + exit 99 + else + echo "package was broken, now fixed" + fi + elif [ -n "$bad_version" ]; then + if ! w_wine_version_in "${bad_version}"; then + w_warn "This package ($W_PACKAGE) is broken in ${_wine_version_stripped} (broken since ${bad_version} when wine is built without mingw. See ${bug_link} for more info." + exit 99 + else + echo "Package is broken in future versions" + fi + else + w_warn "This package ($W_PACKAGE) is broken when wine is built without mingw. See ${bug_link} for more info." + exit 99 + fi +} + +# Warn user if package is broken on win64. Optionally provide a link to the bug report. w_package_broken_win64() { # Optional: @@ -316,6 +447,17 @@ w_package_broken_win64() fi } +# Some packages don't support win32, die with an appropriate message +# Returns 64 (for tests/winetricks-test) +w_package_unsupported_win32() +{ + if [ "$W_ARCH" = "win32" ] ; then + w_warn "This package ($W_PACKAGE) does not work on a 32-bit installation. You must use a prefix made with WINEARCH=win64." + exit 64 + fi +} + + # Some packages don't support win64, die with an appropriate message # Note: this is for packages that natively don't support win64, not packages that are broken on wine64, for that, use w_package_broken_win64() # Returns 32 (for tests/winetricks-test) @@ -336,7 +478,7 @@ w_package_warn_win64() { if [ "$W_ARCH" = "win64" ] ; then case $LANG in - pl*) w_warn "Ten pakiet ($W_PACKAGE) może nie działać poprawnie z 64-bitową instalacją. Prefiks 32-bitowy może działąć lepiej." ;; + pl*) w_warn "Ten pakiet ($W_PACKAGE) może nie działać poprawnie z 64-bitową instalacją. Prefiks 32-bitowy może działać lepiej." ;; ru*) w_warn "Данный пакет может работать не полностью в 64-битном окружении. 32-битные префиксы могут работать лучше." ;; *) w_warn "This package ($W_PACKAGE) may not fully work on a 64-bit installation. 32-bit prefixes may work better." ;; esac @@ -354,7 +496,10 @@ w_try() # This is a problem when trying to pass environment variables to e.g. wine. # Adding an explicit export here works around it, so add any we use. export WINEDLLOVERRIDES - printf '%s\n' "Executing $*" + # If $WINETRICKS_SUPER_QUIET is set, make w_try quiet + if [ -z "$WINETRICKS_SUPER_QUIET" ]; then + printf '%s\n' "Executing $*" + fi # On Vista, we need to jump through a few hoops to run commands in Cygwin. # First, .exe's need to have the executable bit set. @@ -371,15 +516,48 @@ w_try() ;; esac status=$? - if test $status -ne 0; then - case $LANG in - pl*) w_die "Informacja: poelcenie $* zwróciło status $status. Przerywam." ;; - ru*) w_die "Важно: команда $* вернула статус $status. Прерывание." ;; - *) w_die "Note: command $* returned status $status. Aborting." ;; + + en_ms_5="exit status ${status} - user selected 'Cancel'" + en_ms_105="exit status ${status} - normal, user selected 'restart now'" + en_ms_194="exit status ${status} - normal, user selected 'restart later'" + + en_abort="Note: command $* returned status ${status}. Aborting." + pl_abort="Informacja: poelcenie $* zwróciło status ${status}. Przerywam." + ru_abort="Важно: команда $* вернула статус ${status}. Прерывание." + + if [ -n "${_w_ms_installer}" ]; then + case ${status} in + # Nonfatal + 0) ;; + 105) echo "${en_ms_105}" ;; + 194) echo "${en_ms_194}" ;; + + # Fatal + 5) w_die "${en_ms_5}" ;; + *) w_die "${en_abort}" ;; + esac + else + case ${status} in + 0) ;; + *) + case ${LANG} in + pl*) w_die "${pl_abort}" ;; + ru*) w_die "${ru_abort}" ;; + *) w_die "${en_abort}" ;; + esac + ;; esac fi } +# For some MS installers that have special exit codes: +w_try_ms_installer() +{ + _w_ms_installer=true + w_try "$@" + unset _w_ms_installer +} + w_try_7z() { # $1 - directory to extract to @@ -391,11 +569,15 @@ w_try_7z() shift 2 # Not always installed, use Windows 7-Zip as a fallback: - if test -x "$(command -v 7z 2>/dev/null)"; then + 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-get install p7zip-full' 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: + w_try_cd "$PWD" + # errors out if there is a space between -o and path w_try "$WINE" "$W_PROGRAMS_X86_WIN\\7-Zip\\7z.exe" x "$(w_pathconv -w "$filename")" -o"$(w_pathconv -w "$destdir")" "$@" fi @@ -407,12 +589,15 @@ w_try_ar() # $2 - file to extract (optional) # Not always installed, use Windows 7-zip as a fallback: - if test -x "$(command -v ar 2>/dev/null)"; then + 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-get 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: + w_try_cd "$PWD" + # -t* prevents 7-zip from decompressing .tar.xz to .tar, see # https://sourceforge.net/p/sevenzip/discussion/45798/thread/8cd16946/?limit=25 w_try "$WINE" "$W_PROGRAMS_X86_WIN\\7-Zip\\7z.exe" -t* x "$(w_pathconv -w "$1")" @@ -480,9 +665,10 @@ cat > "$WINETRICKS_WORKDIR/cp_font_files.sh" <<_EOF_ # FIXME: w_try() isn't available, need some better error handling: cp -f "\$_W_src_file" "$_W_dest_dir/\$_W_file_name" _EOF_ - chmod +x "$WINETRICKS_WORKDIR/cp_font_files.sh" - find "$_W_src_dir" -maxdepth 1 -type f -iname "$_W_pattern" -exec "$WINETRICKS_WORKDIR/cp_font_files.sh" {} \; + # Use -exec "sh .." to avoid issues with noexec + # Gross quoting is to avoid SC2156 + find "$_W_src_dir" -maxdepth 1 -type f -iname "$_W_pattern" -exec sh -c 'sh '"$WINETRICKS_WORKDIR/cp_font_files.sh"' "$1"' _ {} \; # Wait for Wine to add the new font to the registry under HKCU\Software\Wine\Fonts\Cache w_wineserver -w @@ -496,15 +682,12 @@ w_try_msiexec64() w_die "bug: 64-bit msiexec called from a $W_ARCH prefix." fi - # shellcheck disable=SC2086 - w_try "$WINE" start /wait "$W_SYSTEM64_DLLS_WIN32/msiexec.exe" $W_UNATTENDED_SLASH_Q "$@" + w_try "$WINE" start /wait "$W_SYSTEM64_DLLS_WIN32/msiexec.exe" ${W_OPT_UNATTENDED:+/q} "$@" } w_try_regedit() { # If on wow64, run under both wine and wine64 (otherwise they only go in the 32-bit registry afaict) - - # shellcheck disable=SC2086 if [ "$W_ARCH" = "win32" ]; then w_try_regedit32 "$@" elif [ "$W_ARCH" = "win64" ]; then @@ -513,8 +696,6 @@ w_try_regedit() fi } -# fixme: cleanup. For wow64 registries, some/all entries need to be duplicated. -# Not sure of the best way yet, but thinking running wine/wine64 regedit for each? w_try_regedit32() { # on windows, doesn't work without cmd /c @@ -524,7 +705,7 @@ w_try_regedit32() esac # shellcheck disable=SC2086 - w_try "$WINE_MULTI" $cmdc regedit $W_UNATTENDED_SLASH_S "$@" + w_try "$WINE_MULTI" $cmdc regedit ${W_OPT_UNATTENDED:+/S} "$@" } w_try_regedit64() @@ -536,19 +717,17 @@ w_try_regedit64() esac # shellcheck disable=SC2086 - w_try "$WINE64" $cmdc regedit $W_UNATTENDED_SLASH_S "$@" + w_try "$WINE64" $cmdc regedit ${W_OPT_UNATTENDED:+/S} "$@" } w_try_regsvr() { - # shellcheck disable=SC2086 - w_try "$WINE" regsvr32 $W_UNATTENDED_SLASH_S "$@" + w_try "$WINE" regsvr32 ${W_OPT_UNATTENDED:+/S} "$@" } w_try_regsvr64() { - # shellcheck disable=SC2086 - w_try "$WINE64" regsvr32 $W_UNATTENDED_SLASH_S "$@" + w_try "$WINE64" regsvr32 ${W_OPT_UNATTENDED:+/S} "$@" } w_try_unrar() @@ -556,11 +735,15 @@ w_try_unrar() # $1 - zipfile to extract (keeping internal paths, in cwd) # Not always installed, use Windows 7-Zip as a fallback: - if test -x "$(command -v unrar 2>/dev/null)"; then + 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-get install unrar' 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: + w_try_cd "$PWD" + w_try "$WINE" "$W_PROGRAMS_X86_WIN\\7-Zip\\7z.exe" x "$(w_pathconv -w "$1")" fi } @@ -576,7 +759,7 @@ w_try_unzip() shift 2 # Not always installed, use Windows 7-Zip as a fallback: - if test -x "$(command -v unzip 2>/dev/null)"; then + if [ -z "$WINETRICKS_FORCE_WIN_7Z" ] && [ -x "$(command -v unzip 2>/dev/null)" ]; then # FreeBSD ships unzip, but it doesn't support self-compressed executables # If it fails, fall back to 7-Zip: unzip -o -q -d"$destdir" "$zipfile" "$@" @@ -586,10 +769,14 @@ 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-get install unzip' or 'sudo yum install unzip')." fi 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: + w_try_cd "$PWD" + # errors out if there is a space between -o and path w_try "$WINE" "$W_PROGRAMS_X86_WIN\\7-Zip\\7z.exe" x "$(w_pathconv -w "$zipfile")" -o"$(w_pathconv -w "$destdir")" "$@" } @@ -662,7 +849,7 @@ w_verify_cabextract_available() # If verb_a requires verb_b, then verba will fail when the dependency for verb_b is installed # This should be called by verb_a, to give a proper warning - w_try_cabextract -q -v + w_try_cabextract -q -v >/dev/null 2>&1 } # Convert a Windows path to a Unix path quickly. @@ -693,7 +880,7 @@ w_pathconv() *) case "$@" in -u?c:\\*|-u?C:\\*|-u?c:/*|-u?C:/*) winetricks_wintounix "$2" ;; - *) winetricks_early_wine winepath "$@" ;; + *) w_winepath "$@" ;; esac ;; esac @@ -702,27 +889,47 @@ w_pathconv() # Expand an environment variable and print it to stdout w_expand_env() { - winetricks_early_wine cmd.exe /c echo "%$1%" + winetricks_early_wine_arch cmd.exe /c echo "%$1%" } -# get sha1sum string and set $_W_gotsha1um to it -w_get_sha1sum() +# Get the latest tagged release from github.com API +w_get_github_latest_release() { - _W_sha1_file="$1" + # FIXME: can we get releases that aren't on master branch? + org="$1" + repo="$2" - # See https://github.com/Winetricks/winetricks/issues/645 - # User is running winetricks from /dev/stdin - if [ -f "$_W_sha1_file" ] || [ -h "$_W_sha1_file" ] ; then - _W_gotsha1sum=$($WINETRICKS_SHA1SUM < "$_W_sha1_file" | sed 's/(stdin)= //;s/ .*//') - w_get_sha256sum "$_W_sha1_file" - else - w_warn "$_W_sha1_file is not a regular file, not checking sha1sum" - return - fi + WINETRICKS_SUPER_QUIET=1 w_download_to "${W_TMP_EARLY}" "https://api.github.com/repos/${org}/${repo}/releases/latest" "" "release.json" >/dev/null 2>&1 - w_warn "sha1sum is considered deprecated and should no longer be used. This package (${W_PACKAGE}) still uses it. This is a bug." - w_warn "See https://github.com/Winetricks/winetricks/issues/737 and https://shattered.io/" - w_warn "Please report the following to https://github.com/Winetricks/winetricks/: file:${_W_sha1_file} sha1: ${_W_gotsha1sum} sha256:${_W_gotsha256sum}" + # aria2c condenses the json (https://github.com/aria2/aria2/issues/1389) + # but curl/wget don't, so handle both cases: + json_length="$(wc -l "${W_TMP_EARLY}/release.json")" + case "$json_length" in + 0*) latest_version="$(sed -e "s/\",\"/|/g" "${W_TMP_EARLY}/release.json" | tr '|' '\n' | grep tag_name | sed 's@.*"@@')";; + *) latest_version="$(grep -w tag_name "${W_TMP_EARLY}/release.json" | cut -d '"' -f 4)";; + esac + + echo "$latest_version" +} + +# Get the latest tagged prerelease from github.com API +w_get_github_latest_prerelease() +{ + # FIXME: can we get releases that aren't on master branch? + org="$1" + repo="$2" + + WINETRICKS_SUPER_QUIET=1 w_download_to "${W_TMP_EARLY}" "https://api.github.com/repos/${org}/${repo}/releases" "" "release.json" >/dev/null 2>&1 + + # aria2c condenses the json (https://github.com/aria2/aria2/issues/1389) + # but curl/wget don't, so handle both cases: + json_length="$(wc -l "${W_TMP_EARLY}/release.json")" + case "$json_length" in + 0*) latest_version="$(sed -e "s/\",\"/|/g" "${W_TMP_EARLY}/release.json" | tr '|' '\n' | grep tag_name -m 1 | sed 's@.*"@@')";; + *) latest_version="$(grep -m 1 -w tag_name "${W_TMP_EARLY}/release.json" | cut -d '"' -f 4)";; + esac + + echo "$latest_version" } # get sha256sum string and set $_W_gotsha256sum to it @@ -748,31 +955,12 @@ w_get_shatype() { _W_sum_length="$(echo "$_W_sum" | tr -d "\\n" | wc -c | tr -d " ")" case "$_W_sum_length" in 0) _W_shatype="none" ;; - 40) _W_shatype="sha1" ;; 64) _W_shatype="sha256" ;; # 128) sha512.. *) w_die "unsupported shasum..bug" ;; esac } -# FIXME: remove 2018/04/01 (or 03/31 or 4/2, to avoid April Fools comments), along with any remaining unfixed verbs -# verify a sha1sum -w_verify_sha1sum() -{ - _W_vs_wantsum=$1 - _W_vs_file=$2 - - w_get_sha1sum "$_W_vs_file" - if [ "$_W_gotsha1sum"x != "$_W_vs_wantsum"x ] ; then - case $LANG in - pl*) w_die "Niezgodność sumy sha1sum! Zmień nazwę $_W_vs_file i spróbuj ponownie." ;; - ru*) w_die "Контрольная сумма sha1sum не совпадает! Переименуйте файл $_W_vs_file и попробуйте еще раз." ;; - *) w_die "sha1sum mismatch! Rename $_W_vs_file and try again." ;; - esac - fi - unset _W_vs_wantsum _W_vs_file _W_gotsha1sum -} - # verify a sha256sum w_verify_sha256sum() { @@ -800,13 +988,19 @@ w_verify_shasum() case "$_W_shatype" in none) w_warn "No checksum provided, not verifying" ;; - sha1) w_verify_sha1sum "$_W_sum" "$_W_vs_file" ;; sha256) w_verify_sha256sum "$_W_sum" "$_W_vs_file" ;; # 128) sha512.. *) w_die "unsupported shasum..bug" ;; esac } +# simple wrapper around winepath using winetricks_early_wine (to strip escape characters, etc.) +# For https://bugs.winehq.org/show_bug.cgi?id=48937 and any future regressions +w_winepath() +{ + winetricks_early_wine winepath "$@" +} + # wget outputs progress messages that look like this: # 0K .......... .......... .......... .......... .......... 0% 823K 40s # This function replaces each such line with the pair of lines @@ -890,47 +1084,50 @@ w_dotnet_verify() dotnet46) version="4.6" ;; dotnet461) version="4.6.1" ;; dotnet462) version="4.6.2" ;; + dotnet471) version="4.7.1" ;; dotnet472) version="4.7.2" ;; + dotnet48) version="4.8" ;; *) echo error ; exit 1 ;; esac - w_call dotnet_verifier - # FIXME: The logfile may be useful somewhere (or at least print the location) + w_call dotnet_verifier - # for 'run, netfx_setupverifier.exe /q:a /c:"setupverifier2.exe"' line - # shellcheck disable=SC2140 - w_ahk_do " - SetTitleMatchMode, 2 - ; FIXME; this only works the first time? Check if it's already verified somehow.. + # FIXME: The logfile may be useful somewhere (or at least print the location) - run, netfx_setupverifier.exe /q:a /c:"setupverifier2.exe" - winwait, Verification Utility - ControlClick, Button1 - Control, ChooseString, NET Framework $version, ComboBox1 - ControlClick, Button1 ; Verify - loop, 60 - { - sleep 1000 - process, exist, setupverifier2.exe - dn_pid=%ErrorLevel% - if dn_pid = 0 - { - break - } - ifWinExist, Verification Utility, Product verification failed - { - process, close, setupverifier2.exe - exit 1 - } - ifWinExist, Verification Utility, Product verification succeeded - { - process, close, setupverifier2.exe - break - } - } - " - dn_status="$?" - w_info ".Net Verifier returned $dn_status" + # for 'run, netfx_setupverifier.exe /q:a /c:"setupverifier2.exe"' line + # shellcheck disable=SC2140 + w_ahk_do " + SetTitleMatchMode, 2 + ; FIXME; this only works the first time? Check if it's already verified somehow.. + + run, netfx_setupverifier.exe /q:a /c:"setupverifier2.exe" + winwait, Verification Utility + ControlClick, Button1 + Control, ChooseString, NET Framework $version, ComboBox1 + ControlClick, Button1 ; Verify + loop, 60 + { + sleep 1000 + process, exist, setupverifier2.exe + dn_pid=%ErrorLevel% + if dn_pid = 0 + { + break + } + ifWinExist, Verification Utility, Product verification failed + { + process, close, setupverifier2.exe + exit 1 + } + ifWinExist, Verification Utility, Product verification succeeded + { + process, close, setupverifier2.exe + break + } + } + " + dn_status="$?" + w_info ".Net Verifier returned $dn_status" } # Checks if the user can run the self-update/rollback commands @@ -960,7 +1157,7 @@ winetricks_selfupdate() _W_tmpdir=${TMPDIR:-/tmp} _W_tmpdir="$(mktemp -d "$_W_tmpdir/$_W_filename.XXXXXXXX")" - w_download_to "$_W_tmpdir" https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks + w_download_to "$_W_tmpdir" https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks "" "$_W_filename" # 2016/10/26: now file is uncompressed? Handle both cases: update_file_type="$(file "$_W_tmpdir/$_W_filename")" @@ -1051,6 +1248,8 @@ w_download_to() # Try download twice checksum_ok="" tries=0 + # Set olddir before entering the loop, otherwise second try will overwrite + _W_dl_olddir=$(pwd) while test $tries -lt 2 ; do # Warn on a second try test "$tries" -eq 1 && winetricks_dl_warning @@ -1072,13 +1271,6 @@ w_download_to() none) w_warn "No checksum provided, not verifying" ;; - sha1) - w_get_sha1sum "$_W_cache/$_W_file" - if [ "$_W_gotsha1sum"x = "$_W_sum"x ] ; then - checksum_ok=1 - break - fi - ;; sha256) w_get_sha256sum "$_W_cache/$_W_file" if [ "$_W_gotsha256sum"x = "$_W_sum"x ] ; then @@ -1105,7 +1297,6 @@ w_download_to() rm "$_W_cache/$_W_file" fi - _W_dl_olddir=$(pwd) w_try_cd "$_W_cache" # Mac folks tend to have curl rather than wget # On Mac, 'which' doesn't return good exit status @@ -1131,7 +1322,7 @@ w_download_to() # shellcheck disable=SC2086 $torify aria2c \ - $aria2c_torify_opts \ + ${aria2c_torify_opts:+"$aria2c_torify_opts"} \ --connect-timeout="${WINETRICKS_DOWNLOADER_TIMEOUT}" \ --continue \ --daemon=false \ @@ -1364,7 +1555,7 @@ w_download_manual_to() w_verify_shasum "$_W_shasum" "$W_CACHE/$_W_packagename/$_W_file" fi - unset _W_dlmsg _W_file _W_sha1sum _W_sha256sum _W_url + unset _W_dlmsg _W_file _W_sha256sum _W_url } w_download_manual() @@ -1568,8 +1759,7 @@ w_steam_install_game() winwaitclose " -if [ "$STEAM_DVD" = "TRUE" ] -then +if [ "$STEAM_DVD" = "TRUE" ]; then w_ahk_do " ; Run a fourth time, have it install the app. run steam.exe -install ${W_ISO_MOUNT_LETTER}:\\ @@ -1613,11 +1803,9 @@ fi } " -if [ "$STEAM_DVD" = "TRUE" ] -then +if [ "$STEAM_DVD" = "TRUE" ]; then # Wait for install to finish - while true - do + while true; do grep "SetHasAllLocalContent(true) called for $_W_steamid" "$W_PROGRAMS_X86_UNIX/Steam/logs/download_log.txt" && break sleep 5 done @@ -1642,127 +1830,6 @@ fi #---------------------------------------------------------------- -# Generic GOG.com installer -# Usage: game_id game_title [other_files,size [reader_control [run_command [download_id [install_dir [installer_size_and_sha1]]]]]] -# game_id -# Used for main installer name and download url. -# game_title -# Used for AutoHotKey and installation path in bat script. -# other_files -# Extra installer files, in one string, space-separated. -# reader_control -# If set, the control id of the configuration panel checkbox controlling -# Adobe Reader installation. -# Some games don't have it, some games do with different ids. -# run_command -# Used for bat script, relative to installation path. -# download_id -# For games which download url doesn't match their game_id -# install_dir -# If different from game_title -# installer_size_and_sha1 -# exe file SHA1. -winetricks_load_gog() -{ - game_id="$1" - game_title="$2" - other_files="$3" - reader_control="$4" - # FIXME: actually unused, but not sure how it should be used - # shellcheck disable=SC2034 - run_command="$5" - download_id="$6" - install_dir="$7" - installer_size_and_sha1="$8" - - if [ "$download_id"x = ""x ]; then - download_id="$game_id" - fi - if [ "$install_dir"x = ""x ]; then - install_dir="$game_title" - fi - - installer_path="$W_CACHE/$W_PACKAGE" - mkdir -p "$installer_path" - installer="setup_$game_id.exe" - - if test "$installer_size_and_sha1"x = ""x; then - files="$installer $other_files" - else - files="$installer,$installer_size_and_sha1 $other_files" - fi - - file_id=0 - for file_and_size_and_sha1 in $files - do - case "$file_and_size_and_sha1" in - *,*,*) - sha1sum=$(echo "$file_and_size_and_sha1" | sed "s/.*,//") - minsize=$(echo "$file_and_size_and_sha1" | sed 's/[^,]*,\([^,]*\),.*/\1/') - file=$(echo "$file_and_size_and_sha1" | sed 's/,.*//') - ;; - *,*) - sha1sum="" - minsize=$(echo "$file_and_size_and_sha1" | sed 's/.*,//') - file=$(echo "$file_and_size_and_sha1" | sed 's/,.*//') - ;; - *) - sha1sum="" - minsize=1 - file=$file_and_size_and_sha1 - ;; - esac - file_path="$installer_path/$file" - # shellcheck disable=SC2046 - if ! test -s "$file_path" || test $(stat -Lc%s "$file_path") -lt $minsize; then - # FIXME: bring back automated download - w_info "You have to be logged in to GOG, and you have to own the game, for the following URL to work. Otherwise it gets a 404." - w_download_manual "https://www.gog.com/en/download/game/$download_id/$file_id" "$file" - check_sha1=1 - filesize=$(stat -Lc%s "$file_path") - if test $minsize -gt 1 && test "$filesize" -ne $minsize; then - check_sha1="" - w_warn "Expected file size $minsize, please report new size $filesize." - fi - if test "$check_sha1" != "" && test "$sha1sum"x != ""x; then - w_verify_sha1sum "$sha1sum" "$file_path" - fi - fi - file_id=$((file_id + 1)) - done - - w_try_cd "$installer_path" - w_ahk_do " - run $installer - WinWait, Setup - $game_title, Start installation - ControlGet, checkbox_state, Checked,, TCheckBox1 ; EULA - if (checkbox_state != 1) { - ControlClick, TCheckBox1 - } - if (\"$reader_control\") { - ControlClick, TMCoPShadowButton1 ; Options - Loop, 10 - { - ControlGet, visible, Visible,, $reader_control - if (visible) - { - break - } - Sleep, 1000 - } - ControlGet, checkbox_state, Checked,, $reader_control ; Unckeck Adobe/Foxit Reader - if (checkbox_state != 0) { - ControlClick, $reader_control - } - } - ControlClick, TMCoPShadowButton2 ; Start Installation - WinWait, Setup - $game_title, Exit Installer - ControlClick, TMCoPShadowButton1 ; Exit Installer - " -} - -#---------------------------------------------------------------- - # Usage: w_mount "volume name" [filename-to-check [discnum]] # Some games have two volumes with identical volume names. @@ -1782,8 +1849,7 @@ w_mount() winetricks_mount_cached_iso else if test "$WINETRICKS_OPT_KEEPISOS" = 0 || test "$2"; then - while true - do + while true; do winetricks_mount_real_volume "$1" if test "$2" = "" || test -f "$W_ISO_MOUNT_ROOT/$2"; then break @@ -1866,20 +1932,19 @@ _EOF_ w_ahk_do() { if ! test -f "$W_CACHE/ahk/AutoHotkey.exe"; then - W_BROWSERAGENT=1 \ - w_download_to ahk https://www.autohotkey.com/download/AutoHotkey104805.zip c8bf1c3dc4622559963b6626316ba1d083bb8a8af605f78382e371e5294d435a - w_try_unzip "$W_CACHE/ahk" "$W_CACHE/ahk/AutoHotkey104805.zip" AutoHotkey.exe AU3_Spy.exe + w_download_to ahk https://github.com/AutoHotkey/AutoHotkey/releases/download/v1.0.48.05/AutoHotkey104805_Install.exe 4311c3e7c29ed2d67f415138360210bc2f55ff78758b20b003b91d775ee207b9 + w_try_7z "$W_CACHE/ahk" "$W_CACHE/ahk/AutoHotkey104805_Install.exe" AutoHotkey.exe AU3_Spy.exe chmod +x "$W_CACHE/ahk/AutoHotkey.exe" fi # Previously this used printf + sed, but that was broken with BSD sed (FreeBSD/OS X): # https://github.com/Winetricks/winetricks/issues/697 # So now using trying awk instead (next, perl): - cat <<_EOF_ | awk 'sub("$", "\r")' > "$W_TMP"/tmp.ahk + cat <<_EOF_ | awk 'sub("$", "\r")' > "${W_TMP}/${W_PACKAGE}.ahk" w_opt_unattended = ${W_OPT_UNATTENDED:-0} $@ _EOF_ - w_try "$WINE" "$W_CACHE_WIN\\ahk\\AutoHotkey.exe" "$W_TMP_WIN"\\tmp.ahk + w_try "${WINE}" "${W_CACHE_WIN}\\ahk\\AutoHotkey.exe" "${W_TMP_WIN}\\${W_PACKAGE}.ahk" } # Function to protect Wine-specific sections of code. @@ -1969,8 +2034,7 @@ REGEDIT4 [HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides] _EOF_ - while test "$1" != "" - do + while test "$1" != ""; do w_common_override_dll "$_W_mode" "$1" shift done @@ -1984,7 +2048,7 @@ w_override_no_dlls() { w_skip_windows override && return - "$WINE" regedit /d 'HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides' + w_try_regedit /d "HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides" } w_override_all_dlls() @@ -2392,8 +2456,7 @@ Usage: 'w_override_app_dlls app mode dll ...'." ;; echo "[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\$_W_app\\DllOverrides]" ) > "$W_TMP"/override-dll.reg - while test "$1" != "" - do + while test "$1" != ""; do w_common_override_dll "$_W_mode" "$1" shift done @@ -2407,41 +2470,70 @@ Usage: 'w_override_app_dlls app mode dll ...'." ;; w_set_winver() { w_skip_windows w_set_winver && return - # FIXME: This should really be done with winecfg, but it has no CLI options. - # Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45616 - # First, delete any lingering version info, otherwise it may conflict: - ( - "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion" /v SubVersionNumber /f || true - "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion" /v VersionNumber /f || true - "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v CSDVersion /f || true - "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v CurrentBuildNumber /f || true - "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v CurrentVersion /f || true - "$WINE" reg delete "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /f || true - "$WINE" reg delete "HKLM\\System\\CurrentControlSet\\Control\\ServiceCurrent" /v OS /f || true - "$WINE" reg delete "HKLM\\System\\CurrentControlSet\\Control\\Windows" /v CSDVersion /f || true - "$WINE" reg delete "HKCU\\Software\\Wine" /v Version /f || true - "$WINE" reg delete "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /f || true - ) > /dev/null 2>&1 + _W_winver="$1" - case "$1" in - win31) - echo "Setting Windows version to $1" - cat > "$W_TMP"/set-winver.reg <<_EOF_ + if w_wine_version_in ,5.7 ; then + # Make sure we pass the right version name: + case "$_W_winver" in + # These are the mismatched ones: + # winecfg doesn't accept 'default' as an option (as of wine-5.9): + # https://bugs.winehq.org/show_bug.cgi?id=49241 + # For now, assuming win7: + default) _W_winver="win7";; + win2k3) _W_winver="win2003";; + win2k8) _W_winver="win2008";; + win2k8r2) _W_winver="win2008r2";; + + # xp has two entries (winxp/winxp64): + winxp) + if [ "$W_ARCH" = "win64" ]; then + _W_winver="winxp64" + else + _W_winver="winxp" + fi + ;; + # These are the same: + nt351|nt40|vista|win10|win20|win2k|win30|win31|win7|win8|win81|win95|win98|winme) : ;; + *) w_die "Unsupported Windows version $_W_winver";; + esac + + w_try "$WINE" winecfg -v "$_W_winver" + else + # FIXME: remove this after wine-7.0 (i.e., after it's been in stable wine for a while): + + # First, delete any lingering version info, otherwise it may conflict: + ( + "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion" /v SubVersionNumber /f || true + "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion" /v VersionNumber /f || true + "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v CSDVersion /f || true + "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v CurrentBuildNumber /f || true + "$WINE" reg delete "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v CurrentVersion /f || true + "$WINE" reg delete "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /f || true + "$WINE" reg delete "HKLM\\System\\CurrentControlSet\\Control\\ServiceCurrent" /v OS /f || true + "$WINE" reg delete "HKLM\\System\\CurrentControlSet\\Control\\Windows" /v CSDVersion /f || true + "$WINE" reg delete "HKCU\\Software\\Wine" /v Version /f || true + "$WINE" reg delete "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /f || true + ) > /dev/null 2>&1 + + case "$_W_winver" in + win31) + echo "Setting Windows version to $_W_winver" + cat > "$W_TMP"/set-winver.reg <<_EOF_ REGEDIT4 [HKEY_USERS\\S-1-5-4\\Software\\Wine] "Version"="win31" _EOF_ - w_try_regedit "$W_TMP_WIN"\\set-winver.reg - return - ;; - win95) - # This key is only used for Windows 95/98: + w_try_regedit "$W_TMP_WIN"\\set-winver.reg + return + ;; + win95) + # This key is only used for Windows 95/98: - echo "Setting Windows version to $1" - cat > "$W_TMP"/set-winver.reg <<_EOF_ + echo "Setting Windows version to $_W_winver" + cat > "$W_TMP"/set-winver.reg <<_EOF_ REGEDIT4 [HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion] @@ -2450,14 +2542,14 @@ REGEDIT4 "VersionNumber"="4.0.950" _EOF_ - w_try_regedit "$W_TMP_WIN"\\set-winver.reg - return - ;; - win98) - # This key is only used for Windows 95/98: + w_try_regedit "$W_TMP_WIN"\\set-winver.reg + return + ;; + win98) + # This key is only used for Windows 95/98: - echo "Setting Windows version to $1" - cat > "$W_TMP"/set-winver.reg <<_EOF_ + echo "Setting Windows version to $_W_winver" + cat > "$W_TMP"/set-winver.reg <<_EOF_ REGEDIT4 [HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion] @@ -2466,14 +2558,14 @@ REGEDIT4 "VersionNumber"="4.10.2222" _EOF_ - w_try_regedit "$W_TMP_WIN"\\set-winver.reg - return - ;; - nt40) - # Similar to modern version, but sets two extra keys: + w_try_regedit "$W_TMP_WIN"\\set-winver.reg + return + ;; + nt40) + # Similar to modern version, but sets two extra keys: - echo "Setting Windows version to $1" - cat > "$W_TMP"/set-winver.reg <<_EOF_ + echo "Setting Windows version to $_W_winver" + cat > "$W_TMP"/set-winver.reg <<_EOF_ REGEDIT4 [HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion] @@ -2491,89 +2583,96 @@ REGEDIT4 "CSDVersion"=dword:00000600 _EOF_ - w_try_regedit "$W_TMP_WIN"\\set-winver.reg - return - ;; - win2k) - csdversion="Service Pack 4" - currentbuildnumber="2195" - currentversion="5.0" - csdversion_hex=dword:00000400 - ;; - winxp) - # Special case, afaik it's the only Windows version that has different version numbers for 32/64-bit - # So ensure we set the arch appropriate version: - if [ "$W_ARCH" = "win32" ]; then - csdversion="Service Pack 3" - currentbuildnumber="2600" - currentversion="5.1" - csdversion_hex=dword:00000300 - elif [ "$W_ARCH" = "win64" ]; then + w_try_regedit "$W_TMP_WIN"\\set-winver.reg + return + ;; + win2k) + csdversion="Service Pack 4" + currentbuildnumber="2195" + currentversion="5.0" + csdversion_hex=dword:00000400 + ;; + winxp) + # Special case, afaik it's the only Windows version that has different version numbers for 32/64-bit + # So ensure we set the arch appropriate version: + if [ "$W_ARCH" = "win32" ]; then + csdversion="Service Pack 3" + currentbuildnumber="2600" + currentversion="5.1" + csdversion_hex=dword:00000300 + elif [ "$W_ARCH" = "win64" ]; then + csdversion="Service Pack 2" + currentbuildnumber="3790" + currentversion="5.2" + csdversion_hex=dword:00000200 + "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f + else + w_die "Invalid W_ARCH $W_ARCH" + fi + ;; + win2k3) csdversion="Service Pack 2" currentbuildnumber="3790" currentversion="5.2" csdversion_hex=dword:00000200 + "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "ServerNT" /f + ;; + vista) + csdversion="Service Pack 2" + currentbuildnumber="6002" + currentversion="6.0" + csdversion_hex=dword:00000200 "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - else - w_die "Invalid W_ARCH $W_ARCH" - fi - ;; - win2k3) - csdversion="Service Pack 2" - currentbuildnumber="3790" - currentversion="5.2" - csdversion_hex=dword:00000200 - "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "ServerNT" /f - ;; - vista) - csdversion="Service Pack 2" - currentbuildnumber="6002" - currentversion="6.0" - csdversion_hex=dword:00000200 - "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - win7) - csdversion="Service Pack 1" - currentbuildnumber="7601" - currentversion="6.1" - csdversion_hex=dword:00000100 - "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - win2k8) - csdversion="Service Pack 1" - currentbuildnumber="7601" - currentversion="6.1" - csdversion_hex=dword:00000100 - "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "ServerNT" /f - ;; - win8) - csdversion="" - currentbuildnumber="9200" - currentversion="6.2" - csdversion_hex=dword:00000000 - "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - win81) - csdversion="" - currentbuildnumber="9600" - currentversion="6.3" - csdversion_hex=dword:00000000 - "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - win10) - csdversion="" - currentbuildnumber="10240" - currentversion="10.0" - csdversion_hex=dword:00000000 - "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f - ;; - *) - w_die "Invalid Windows version given." - ;; - esac + ;; + win7|default) + csdversion="Service Pack 1" + currentbuildnumber="7601" + currentversion="6.1" + csdversion_hex=dword:00000100 + "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f + ;; + win2k8) + csdversion="Service Pack 2" + currentbuildnumber="6002" + currentversion="6.0" + csdversion_hex=dword:00000200 + "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "ServerNT" /f + ;; + win2k8r2) + csdversion="Service Pack 1" + currentbuildnumber="7601" + currentversion="6.1" + csdversion_hex=dword:00000100 + "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "ServerNT" /f + ;; + win8) + csdversion="" + currentbuildnumber="9200" + currentversion="6.2" + csdversion_hex=dword:00000000 + "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f + ;; + win81) + csdversion="" + currentbuildnumber="9600" + currentversion="6.3" + csdversion_hex=dword:00000000 + "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f + ;; + win10) + csdversion="" + currentbuildnumber="10240" + currentversion="10.0" + csdversion_hex=dword:00000000 + "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f + ;; + *) + w_die "Invalid Windows version given." + ;; + esac - echo "Setting Windows version to $1" - cat > "$W_TMP"/set-winver.reg <<_EOF_ + echo "Setting Windows version to $_W_winver" + cat > "$W_TMP"/set-winver.reg <<_EOF_ REGEDIT4 [HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion] @@ -2585,15 +2684,18 @@ REGEDIT4 "CSDVersion"=$csdversion_hex _EOF_ - w_try_regedit "$W_TMP_WIN"\\set-winver.reg + w_try_regedit "$W_TMP_WIN"\\set-winver.reg - # Prevent a race when calling from another verb - w_wineserver -w + # Prevent a race when calling from another verb + w_wineserver -w + + fi } w_unset_winver() { - w_set_winver winxp + w_warn "w_unset_winver() is deprecated, use \'w_set_winver default\' instead" + w_set_winver default } # Present app $1 with the Windows personality $2 @@ -2620,7 +2722,7 @@ w_set_app_winver() # Note: currently only -ge and -le are supported, # as well as the special case -bn (between) # Example: -# if w_compare_wine_version -gt 2.5 ; then +# if w_compare_wine_version -ge 2.5 ; then # ... # fi w_compare_wine_version() @@ -2634,7 +2736,12 @@ w_compare_wine_version() -bn) _expected_pos_current_wine="2";; -ge) _expected_pos_current_wine="2";; -le) _expected_pos_current_wine="1";; - *) w_die "Unsupported comparison. Only -ge and -le are supported" ;; + *) w_die "Unsupported comparison. Only -bn, -ge, and -le are supported" ;; + esac + + # First, check if current wine is equal to either upper or lower wine version: + case "${_wine_version_stripped}" in + "${known_wine_val1}"|"${known_wine_val2}") return 1;; esac _pos_current_wine="$(printf "%s\\n%s\\n%s" "${known_wine_val1}" "${_wine_version_stripped}" "${known_wine_val2}" | sort -t. -k 1,1n -k 2,2n -k 3,3n | grep -n "^${_wine_version_stripped}\$" | cut -d : -f1)" @@ -2657,8 +2764,7 @@ w_compare_wine_version() # val1,val2 (for >= val1 && <= val2) w_wine_version_in() { - for _W_range - do + for _W_range; do _W_val1=$(echo "$_W_range" | sed 's/,.*//') _W_val2=$(echo "$_W_range" | sed 's/.*,//') # If in this range, return true @@ -2747,12 +2853,27 @@ w_metadata() shift # Echo arguments to file, with double quotes around the values. # Used to use Perl here, but that was too slow on Cygwin. - for arg - do + for arg; do + # If _W_wine_not_needed is set, we're a list command that isn't list-installed, and can ignore the installed_* errors: case "$arg" in - installed_exe1=/*) w_die "bug: w_metadata $_W_md_cmd has a unix path for installed_exe1, should be a windows path";; - installed_file1=/*) w_die "bug: w_metadata $_W_md_cmd has a unix path for installed_file1, should be a windows path";; - media=download_manual) w_die "bug: verb $_W_md_cmd has media=download_manual, should be manual_download" ;; + installed_exe1=/*) + if [ -n "$_W_wine_not_needed" ]; then + # "_W_wine_not_needed set, no installed_exe1" + : + else + w_die "bug: w_metadata $_W_md_cmd has a unix path for installed_exe1, should be a windows path" + fi + ;; + installed_file1=/*) + if [ -n "$_W_wine_not_needed" ]; then + # "_W_wine_not_needed set, no installed_file1" + : + else + w_die "bug: w_metadata $_W_md_cmd has a unix path for installed_file1, should be a windows path" + fi + ;; + media=download_manual) + w_die "bug: verb $_W_md_cmd has media=download_manual, should be manual_download";; esac # Use longest match when stripping value, # and shortest match when stripping name, @@ -2800,8 +2921,7 @@ w_conflicts() verb="$1" conflicting_verbs="$2" - for x in $conflicting_verbs - do + for x in $conflicting_verbs; do if grep -qw "$x" "$WINEPREFIX/winetricks.log" 2>/dev/null; then w_die "error: $verb conflicts with $x, which is already installed. You can run \`$0 --force $verb\` to ignore this check and attempt installation." fi @@ -2863,16 +2983,14 @@ w_do_call() case "$W_PLATFORM" in windows_cmd|wine_cmd) ;; *) - # shellcheck disable=SC2154 - case "${category}-${WINETRICKS_OPT_SHAREDPREFIX}" in - apps-0|benchmarks-0|games-0) - winetricks_set_wineprefix "$cmd" - # If it's a new wineprefix, give it metadata - if test ! -f "$WINEPREFIX"/wrapper.cfg; then - echo ww_name=\""$title"\" > "$WINEPREFIX"/wrapper.cfg - fi - ;; + case "${_W_category}-${WINETRICKS_OPT_SHAREDPREFIX}" in + apps-0|benchmarks-0|games-0) winetricks_set_wineprefix "$cmd";; + *) winetricks_set_wineprefix "$_W_prefix_name";; esac + # If it's a new wineprefix, give it metadata + if test ! -f "$WINEPREFIX"/wrapper.cfg; then + echo ww_name=\""$title"\" > "$WINEPREFIX"/wrapper.cfg + fi ;; esac @@ -2882,12 +3000,18 @@ w_do_call() # Don't install if a conflicting verb is already installed: # shellcheck disable=SC2154 if test "$WINETRICKS_FORCE" != 1 && test "$conflicts" && test -f "$WINEPREFIX/winetricks.log"; then - for x in $conflicts - do + for x in $conflicts; do w_conflicts "$1" "$x" done fi + # Allow verifying a verb separately from installing it + if test "$WINETRICKS_VERIFY" = 1 && winetricks_is_installed "$1" && test -z "$WINETRICKS_FORCE"; then + echo "$1 is already installed. --force wasn't given, --verify was, so re-verifying." + winetricks_verify + return 0 + fi + # Don't install if already installed if test "$WINETRICKS_FORCE" != 1 && winetricks_is_installed "$1"; then echo "$1 already installed, skipping" @@ -2917,14 +3041,7 @@ w_do_call() # If the user specified --verify, also run GUI tests: if test "$WINETRICKS_VERIFY" = 1; then - # command -v isn't POSIX :( - "verify_$cmd" 2>/dev/null - verify_status=$? - case $verify_status in - 0) w_warn "verify_$cmd succeeded!" ;; - 127) echo "verify_$cmd not found, not verifying $cmd" ;; - *) w_die "verify_$cmd failed!" ;; - esac + winetricks_verify fi # Clean up after this verb @@ -2989,13 +3106,16 @@ _EOF_ unset W_file W_font } +# Note: we use UTF-16 (little endian) in .reg file for native (non-English) font names. w_register_font_replacement() { _W_alias=$1 shift _W_font=$1 + # UTF-16 BOM (U+FEFF, "0xEF 0xBB 0xBF" in UTF-8) + printf "\357\273\277" | iconv -f UTF-8 -t UTF-16LE > "$W_TMP"/_register-font-replacements.reg # Kludge: use _r to avoid \r expansion in w_try - cat > "$W_TMP"/_register-font-replacements.reg <<_EOF_ + iconv -f UTF-8 -t UTF-16LE >> "$W_TMP"/_register-font-replacements.reg <<_EOF_ REGEDIT4 [HKEY_CURRENT_USER\\Software\\Wine\\Fonts\\Replacements] @@ -3095,7 +3215,7 @@ winetricks_dl_url_to_stdout() rm "${stdout_tmpfile}" fi $torify aria2c \ - $aria2c_torify_opts \ + ${aria2c_torify_opts:+"$aria2c_torify_opts"} \ --continue \ --daemon=false \ --dir="${W_TMP_EARLY}" \ @@ -3142,24 +3262,6 @@ winetricks_dl_warning() { esac } -winetricks_get_sha1sum_prog() { - # Linux/Solaris: - if [ -x "$(command -v sha1sum 2>/dev/null)" ] ; then - WINETRICKS_SHA1SUM="sha1sum" - # FreeBSD/NetBSD: - elif [ -x "$(command -v sha1 2>/dev/null)" ] ; then - WINETRICKS_SHA1SUM="sha1" - # OSX 10.6+: - elif [ -x "$(command -v shasum 2>/dev/null)" ] ; then - WINETRICKS_SHA1SUM="shasum -a 1" - # OSX 10.5: - elif [ -x "$(command -v openssl 2>/dev/null)" ] ; then - WINETRICKS_SHA1SUM="openssl dgst -sha1" - else - w_die "No sha1sum utility available." - fi -} - winetricks_get_sha256sum_prog() { # Linux/Solaris: if [ -x "$(command -v sha256sum 2>/dev/null)" ] ; then @@ -3178,12 +3280,15 @@ winetricks_get_sha256sum_prog() { winetricks_get_platform() { if [ "${OS}" = "Windows_NT" ]; then - if [ ! -v "${WINELOADERNOEXEC}" ]; then + if [ -n "${WINELOADERNOEXEC}" ]; then + # Windows/Cygwin export W_PLATFORM="windows_cmd" else + # wineconsole/cmd under wine export W_PLATFORM="wine_cmd" fi else + # Normal Unix shell export W_PLATFORM="wine" fi } @@ -3264,6 +3369,14 @@ winetricks_early_wine() WINEDEBUG=-all "$WINE" "$@" 2> "$W_TMP_EARLY"/early_wine.err.txt | ( sed 's/.*1h.=//' | tr -d '\r' | grep -v -e "Module not found" -e "Could not load wine-gecko" || true) } +# Wrapper around winetricks_early_wine() +# Same idea, but use $WINE_ARCH, i.e., always use wine64 for 64-bit prefixes +# Currently only used by w_expand_env() +winetricks_early_wine_arch() +{ + WINE="$WINE_ARCH" winetricks_early_wine "$@" +} + winetricks_detect_gui() { if test -x "$(command -v zenity 2>/dev/null)"; then @@ -3283,7 +3396,7 @@ winetricks_detect_gui() fi # Print zenity/dialog version info for debugging: - if [ ! "$WINETRICKS_SUPER_QUIET" ] ; then + if [ -z "$WINETRICKS_SUPER_QUIET" ] ; then echo "winetricks GUI enabled, using $WINETRICKS_GUI $WINETRICKS_GUI_VERSION" fi } @@ -3378,8 +3491,6 @@ winetricks_prefixmenu() _W_msg_mkprefix="Создать новый путь wine" _W_msg_unattended0="Отключить автоматическую установку" _W_msg_unattended1="Включить автоматическую установку" - _W_msg_showbroken0="Спрятать нерабочие программы (например, использующие DRM)" - _W_msg_showbroken1="Отобразить нерабочие программы (например, использующие DRM)" _W_msg_help="Просмотр справки (в веб-браузере)" ;; uk*) _W_msg_title="Winetricks - виберіть wineprefix" @@ -3391,8 +3502,6 @@ winetricks_prefixmenu() _W_msg_mkprefix="створити новий wineprefix" _W_msg_unattended0="Вимкнути автоматичне встановлення" _W_msg_unattended1="Увімкнути автоматичне встановлення" - _W_msg_showbroken0="Сховати нестабільні додатки (наприклад з проблемами з DRM)" - _W_msg_showbroken1="Показати нестабільні додатки (наприклад з проблемами з DRM)" _W_msg_help="Переглянути довідку" ;; zh_CN*) _W_msg_title="Winetricks - 选择一个 Wine 容器" @@ -3404,8 +3513,6 @@ winetricks_prefixmenu() _W_msg_mkprefix="创建新的 Wine 容器" _W_msg_unattended0="禁用静默安装" _W_msg_unattended1="启用静默安装" - _W_msg_showbroken0="隐藏有争议的程序 (比如存在版权问题的程序)" - _W_msg_showbroken1="有争议的程序 (比如存在版权问题的程序)" _W_msg_help="查看帮助" ;; zh_TW*|zh_HK*) _W_msg_title="Winetricks - 選取一個 Wine 容器" @@ -3417,8 +3524,6 @@ winetricks_prefixmenu() _W_msg_mkprefix="建立新的 Wine 容器" _W_msg_unattended0="禁用靜默安裝" _W_msg_unattended1="啟用靜默安裝" - _W_msg_showbroken0="隱藏有爭議的程式 (比如存在著作權問題的程式)" - _W_msg_showbroken1="有爭議的程式 (比如存在著作權問題的程式)" _W_msg_help="檢視輔助說明" ;; de*) _W_msg_title="Winetricks - wineprefix auswählen" @@ -3430,8 +3535,6 @@ winetricks_prefixmenu() _W_msg_mkprefix="Neuen wineprefix erstellen" _W_msg_unattended0="Automatische Installation deaktivieren" _W_msg_unattended1="Automatische Installation aktivieren" - _W_msg_showbroken0="Defekte Programme nicht anzeigen (z.B. solche mit DRM Problemen)" - _W_msg_showbroken1="Defekte Programme anzeigen (z.B. solche mit DRM Problemen)" _W_msg_help="Hilfe anzeigen" ;; pl*) _W_msg_title="Winetricks - wybierz prefiks Wine" @@ -3443,8 +3546,6 @@ winetricks_prefixmenu() _W_msg_mkprefix="Stwórz nowy prefiks Wine" _W_msg_unattended0="Wyłącz cichą instalację" _W_msg_unattended1="Włącz cichą instalację" - _W_msg_showbroken0="Ukrywaj uszkodzone aplikacje (np. z problemami z DRM)" - _W_msg_showbroken1="Pokazuj uszkodzone aplikacje (np. z problemami z DRM)" _W_msg_help="Wyświetl pomoc" ;; *) _W_msg_title="Winetricks - choose a wineprefix" @@ -3456,8 +3557,6 @@ winetricks_prefixmenu() _W_msg_mkprefix="Create new wineprefix" _W_msg_unattended0="Disable silent install" _W_msg_unattended1="Enable silent install" - _W_msg_showbroken0="Hide broken apps (e.g. those with DRM problems)" - _W_msg_showbroken1="Show broken apps (e.g. those with DRM problems)" _W_msg_help="View help" ;; esac @@ -3465,10 +3564,6 @@ winetricks_prefixmenu() 1) _W_cmd_unattended=attended; _W_msg_unattended="$_W_msg_unattended0" ;; *) _W_cmd_unattended=unattended; _W_msg_unattended="$_W_msg_unattended1" ;; esac - case "$W_OPT_SHOWBROKEN" in - 1) _W_cmd_showbroken=hidebroken; _W_msg_showbroken="$_W_msg_showbroken0" ;; - *) _W_cmd_showbroken=showbroken; _W_msg_showbroken="$_W_msg_showbroken1" ;; - esac case $WINETRICKS_GUI in zenity) @@ -3493,8 +3588,7 @@ winetricks_prefixmenu() > "$WINETRICKS_WORKDIR"/zenity.sh if ls -d "$W_PREFIXES_ROOT"/*/dosdevices > /dev/null 2>&1; then - for prefix in "$W_PREFIXES_ROOT"/*/dosdevices - do + for prefix in "$W_PREFIXES_ROOT"/*/dosdevices; do q="${prefix%%/dosdevices}" p="${q##*/}" if test -f "$W_PREFIXES_ROOT/$p/wrapper.cfg"; then @@ -3512,7 +3606,6 @@ winetricks_prefixmenu() done >> "$WINETRICKS_WORKDIR"/zenity.sh fi printf %s " FALSE $_W_cmd_unattended '$_W_msg_unattended'" >> "$WINETRICKS_WORKDIR"/zenity.sh - printf %s " FALSE $_W_cmd_showbroken '$_W_msg_showbroken'" >> "$WINETRICKS_WORKDIR"/zenity.sh sh "$WINETRICKS_WORKDIR"/zenity.sh | tr '|' ' ' ;; @@ -3532,8 +3625,7 @@ winetricks_prefixmenu() mkprefix '$_W_msg_mkprefix' off \ " if ls -d "$W_PREFIXES_ROOT"/*/dosdevices > /dev/null 2>&1; then - for prefix in "$W_PREFIXES_ROOT"/*/dosdevices - do + for prefix in "$W_PREFIXES_ROOT"/*/dosdevices; do q="${prefix%%/dosdevices}" p="${q##*/}" if test -f "$W_PREFIXES_ROOT/$p/wrapper.cfg"; then @@ -3545,7 +3637,6 @@ winetricks_prefixmenu() done fi printf %s " $_W_cmd_unattended '$_W_msg_unattended' off" - printf %s " $_W_cmd_showbroken '$_W_msg_showbroken' off" ) > "$WINETRICKS_WORKDIR"/kdialog.sh sh "$WINETRICKS_WORKDIR"/kdialog.sh ;; @@ -3667,28 +3758,28 @@ winetricks_mainmenu() _W_msg_dlls="安装 Windows DLL 或组件" _W_msg_fonts='安装字体' _W_msg_settings='修改设置' - _W_msg_winecfg='运行 winecfg' + _W_msg_winecfg='运行 Wine 配置程序' _W_msg_regedit='运行注册表' _W_msg_taskmgr='运行任务管理器' _W_msg_explorer='运行资源管理器' _W_msg_uninstaller='运行卸载程序' _W_msg_shell='运行命令提示窗口 (作为调试)' _W_msg_folder='浏览容器中的文件' - _W_msg_annihilate="删除当前容器所有相关文件,包括启动器,完全卸载" + _W_msg_annihilate="删除容器中所有数据和应用程序" ;; zh_TW*|zh_HK*) _W_msg_title="Winetricks - 目前容器路徑是 \"$WINEPREFIX\"" _W_msg_body='管理目前容器' - _W_msg_dlls="裝載 Windows DLL 或套件" - _W_msg_fonts='裝載字型' + _W_msg_dlls="安裝 Windows DLL 或套件" + _W_msg_fonts='安裝字型' _W_msg_settings='修改設定' - _W_msg_winecfg='執行 winecfg' - _W_msg_regedit='執行註冊表' - _W_msg_taskmgr='執行工作管理者' - _W_msg_explorer='執行資源經理' - _W_msg_uninstaller='執行反安裝程式' - _W_msg_shell='執行指令輔助說明視窗 (作為除錯)' + _W_msg_winecfg='執行 Wine 設定程式' + _W_msg_regedit='執行登錄編輯程式' + _W_msg_taskmgr='執行工作管理員' + _W_msg_explorer='執行檔案總管' + _W_msg_uninstaller='執行解除安裝程式' + _W_msg_shell='執行命令提示視窗 (作為偵錯)' _W_msg_folder='瀏覽容器中的檔案' - _W_msg_annihilate="移除目前容器所有相依檔案,包括啟動器,完全卸載" + _W_msg_annihilate="刪除容器中所有資料和應用程式" ;; *) _W_msg_title="Winetricks - current prefix is \"$WINEPREFIX\"" _W_msg_body='What would you like to do to this wineprefix?' @@ -3892,8 +3983,7 @@ winetricks_settings_menu() ;; esac > "$WINETRICKS_WORKDIR"/zenity.sh - for metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars - do + for metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars; do code=$(winetricks_metadata_basename "$metadatafile") ( title='?' @@ -3987,8 +4077,6 @@ winetricks_showmenu() --column År \ --column Medie \ --column Status \ - --column 'Size (MB)' \ - --column 'Time (sec)' \ --height $WINETRICKS_MENU_HEIGHT \ --width $WINETRICKS_MENU_WIDTH \ " @@ -4005,8 +4093,6 @@ winetricks_showmenu() --column Jahr \ --column Media \ --column Status \ - --column 'Größe (MB)' \ - --column 'Zeit (sec)' \ --height $WINETRICKS_MENU_HEIGHT \ --width $WINETRICKS_MENU_WIDTH \ " @@ -4023,8 +4109,6 @@ winetricks_showmenu() --column Rok \ --column Media \ --column Status \ - --column 'Rozmiar (MB)' \ - --column 'Czas (sek)' \ --height $WINETRICKS_MENU_HEIGHT \ --width $WINETRICKS_MENU_WIDTH \ " @@ -4041,8 +4125,6 @@ winetricks_showmenu() --column Год \ --column Источник \ --column Статус \ - --column 'Размер (МБ)' \ - --column 'Время (сек)' \ --height $WINETRICKS_MENU_HEIGHT \ --width $WINETRICKS_MENU_WIDTH \ " @@ -4059,8 +4141,6 @@ winetricks_showmenu() --column Рік \ --column Медіа \ --column Статус \ - --column 'Розмір (МБ)' \ - --column 'Час (сек)' \ --height $WINETRICKS_MENU_HEIGHT \ --width $WINETRICKS_MENU_WIDTH \ " @@ -4077,8 +4157,6 @@ winetricks_showmenu() --column 发行年 \ --column 媒介 \ --column 状态 \ - --column '文件大小 (MB)' \ - --column '时间 (秒)' \ --height $WINETRICKS_MENU_HEIGHT \ --width $WINETRICKS_MENU_WIDTH \ " @@ -4095,8 +4173,6 @@ winetricks_showmenu() --column 發行年 \ --column 媒介 \ --column 狀態 \ - --column '檔案大小 (MB)' \ - --column '時間 (秒)' \ --height $WINETRICKS_MENU_HEIGHT \ --width $WINETRICKS_MENU_WIDTH \ " @@ -4113,8 +4189,6 @@ winetricks_showmenu() --column Year \ --column Media \ --column Status \ - --column 'Size (MB)' \ - --column 'Time (sec)' \ --height $WINETRICKS_MENU_HEIGHT \ --width $WINETRICKS_MENU_WIDTH \ " @@ -4123,34 +4197,28 @@ winetricks_showmenu() true > "$WINETRICKS_WORKDIR"/installed.txt - for metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars - do + for metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars; do code=$(winetricks_metadata_basename "$metadatafile") ( title='?' # shellcheck disable=SC1090 . "$metadatafile" - # shellcheck disable=SC2154 - if test "$W_OPT_SHOWBROKEN" = 1 || test "$wine_showstoppers" = ""; then - # Compute cached and downloadable flags - flags="" - winetricks_is_cached "$code" && flags="$_W_cached" - installed=FALSE - if winetricks_is_installed "$code"; then - installed=TRUE - echo "$code" >> "$WINETRICKS_WORKDIR"/installed.txt - fi - printf %s " $installed \ - $code \ - \"$title\" \ - \"$publisher\" \ - \"$year\" \ - \"$media\" \ - \"$flags\" \ - \"$size_MB\" \ - \"$time_sec\" \ - " + # Compute cached and downloadable flags + flags="" + winetricks_is_cached "$code" && flags="$_W_cached" + installed=FALSE + if winetricks_is_installed "$code"; then + installed=TRUE + echo "$code" >> "$WINETRICKS_WORKDIR"/installed.txt fi + printf %s " $installed \ + $code \ + \"$title\" \ + \"$publisher\" \ + \"$year\" \ + \"$media\" \ + \"$flags\" \ + " ) done >> "$WINETRICKS_WORKDIR"/zenity.sh @@ -4248,7 +4316,7 @@ winetricks_is_installed() ;; *) # Compute wineprefix for this app - case "${category}-${WINETRICKS_OPT_SHAREDPREFIX}" in + case "${_W_category}-${WINETRICKS_OPT_SHAREDPREFIX}" in apps-0|benchmarks-0|games-0) _W_prefix="$W_PREFIXES_ROOT/$1" ;; @@ -4261,8 +4329,7 @@ winetricks_is_installed() # so let it specify multiple, separated by | _W_IFS="$IFS" IFS='|' - for _W_file_ in $_W_file - do + for _W_file_ in $_W_file; do _W_file_unix="$(WINEPREFIX="$_W_prefix" w_pathconv -u "$_W_file_")" if test -f "$_W_file_unix" && ! grep -q "Wine placeholder DLL" "$_W_file_unix"; then IFS="$_W_IFS" @@ -4281,8 +4348,7 @@ winetricks_is_installed() # List verbs which are already fully cached locally winetricks_list_cached() { - for _W_metadatafile in "$WINETRICKS_METADATA"/*/*.vars - do + for _W_metadatafile in "$WINETRICKS_METADATA"/*/*.vars; do # Use a subshell to avoid putting metadata in global space # If this is too slow, we can unset known metadata by hand ( @@ -4353,8 +4419,7 @@ winetricks_list_all() *) _W_cached="cached" ; _W_download="downloadable" ;; esac - for _W_metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars - do + for _W_metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars; do # Use a subshell to avoid putting metadata in global space # If this is too slow, we can unset known metadata by hand ( @@ -4534,8 +4599,7 @@ winetricks_detect_optical_drive() *) return ;; esac - for WINETRICKS_DEV in /dev/cdrom /dev/dvd /dev/sr0 - do + for WINETRICKS_DEV in /dev/cdrom /dev/dvd /dev/sr0; do test -b $WINETRICKS_DEV && break done @@ -4561,12 +4625,10 @@ winetricks_cache_iso() esac fi - while true - do + while true; do # Wait for user to insert disc. # Sleep long to make it less likely to close the drive during insertion. - while ! dd if=$WINETRICKS_DEV of=/dev/null count=1 - do + while ! dd if=$WINETRICKS_DEV of=/dev/null count=1; do sleep 5 done @@ -4616,15 +4678,13 @@ winetricks_cache_iso() # FIXME: add progress bar for kde, too case $WINETRICKS_GUI in none|kdialog) - while ps -p "$WINETRICKS_DD_PID" > /dev/null 2>&1 - do + while ps -p "$WINETRICKS_DD_PID" > /dev/null 2>&1; do sleep 5 ls -l "$W_CACHE"/temp.iso done ;; zenity) - while ps -p "$WINETRICKS_DD_PID" > /dev/null 2>&1 - do + while ps -p "$WINETRICKS_DD_PID" > /dev/null 2>&1; do echo 1 sleep 2 done | $WINETRICKS_GUI --title "Copying to $_W_expected_volname.iso" --progress --pulsate --auto-kill @@ -4685,10 +4745,8 @@ winetricks_mount_cached_iso() w_try vcdmount.exe /l="$letter" "$my_img_win" tries=0 - while test $tries -lt 20 - do - for W_ISO_MOUNT_LETTER in e f g h i j k - do + while test $tries -lt 20; do + for W_ISO_MOUNT_LETTER in e f g h i j k; do # let user blacklist drive letters echo "$WINETRICKS_MOUNT_LETTER_IGNORE" | grep -q "$W_ISO_MOUNT_LETTER" && continue W_ISO_MOUNT_ROOT=/cygdrive/$W_ISO_MOUNT_LETTER @@ -4823,8 +4881,7 @@ winetricks_is_mounted() # If that fails, read volume name the hard way for each volume # Have to use file to return results from implicit subshell rm -f "$W_TMP_EARLY/_W_tmp.$LOGNAME" - winetricks_list_mounts . | while true - do + winetricks_list_mounts . | while true; do IFS= read -r _W_tmp _W_dev=$(echo "$_W_tmp" | sed 's/ .*//') @@ -4873,8 +4930,7 @@ winetricks_mount_real_volume() W_ISO_MOUNT_LETTER=$(awk '/iso/ {print $1}' < /proc/mounts | tr -d :) W_ISO_MOUNT_ROOT=$(awk '/iso/ {print $2}' < /proc/mounts) else - while ! winetricks_is_mounted "$_W_expected_volname" - do + while ! winetricks_is_mounted "$_W_expected_volname"; do w_try w_warn_cancel "$_W_mountmsg" # In non-gui case, give user two seconds to futz with disc drive before spamming him again sleep 2 @@ -4910,42 +4966,14 @@ winetricks_cleanup() test "$W_OPT_NOCLEAN" = 1 || rm -rf "$WINETRICKS_WORKDIR" # if $W_TMP_EARLY was created by mktemp, remove it (but not if W_OPT_NOCLEAN is set to 1): test "$W_OPT_NOCLEAN" = 1 || rm -rf "$W_TMP_EARLY" + test "$W_OPT_NOCLEAN" = 1 || rm -rf "$WINEPREFIX"/wrapper.cfg } winetricks_set_unattended() { - # We shouldn't use all these extra variables. Instead, we should - # use ${foo:+bar} to jam in commandline options for silent install - # only if W_OPT_UNATTENDED is nonempty. See - # https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02 - # So in attended mode, W_OPT_UNATTENDED should be empty. - case "$1" in - 1) - W_OPT_UNATTENDED=1 - # Might want to trim our stable of variables here a bit... - W_UNATTENDED_SLASH_Q="/q" - W_UNATTENDED_SLASH_QB="/qb" - W_UNATTENDED_SLASH_QN="/qn" - W_UNATTENDED_SLASH_QNT="/qnt" - W_UNATTENDED_SLASH_QT="/qt" - W_UNATTENDED_SLASH_QUIET="/quiet" - W_UNATTENDED_SLASH_S="/S" - W_UNATTENDED_DASH_SILENT="-silent" - W_UNATTENDED_SLASH_SILENT="/silent" - ;; - *) - W_OPT_UNATTENDED="" - W_UNATTENDED_SLASH_Q="" - W_UNATTENDED_SLASH_QB="" - W_UNATTENDED_SLASH_QN="" - W_UNATTENDED_SLASH_QNT="" - W_UNATTENDED_SLASH_QT="" - W_UNATTENDED_SLASH_QUIET="" - W_UNATTENDED_SLASH_S="" - W_UNATTENDED_DASH_SILENT="" - W_UNATTENDED_SLASH_SILENT="" - ;; + 1) W_OPT_UNATTENDED=1;; + *) unset W_OPT_UNATTENDED;; esac } @@ -4978,8 +5006,12 @@ winetricks_set_winearch() # Usage: winetricks_set_wineprefix [bottlename] # Bottlename must not contain spaces, slashes, or other special characters # If bottlename is omitted, the default bottle (~/.wine) is used. +# +# shellcheck disable=SC2034 winetricks_set_wineprefix() { + # Note: these are arch independent, but are needed by some arch dependent variables + # Defining here to avoid having two arch checks: if ! test "$1"; then WINEPREFIX="$WINETRICKS_ORIGINAL_WINEPREFIX" else @@ -4987,17 +5019,7 @@ winetricks_set_wineprefix() fi export WINEPREFIX - #echo "WINEPREFIX is now $WINEPREFIX" >&2 - mkdir -p "$(dirname "$WINEPREFIX")" - - # Run wine here to force creation of the wineprefix so it's there when we want to make the cache symlink a bit later. - # The folder-name is localized! - W_PROGRAMS_WIN="$(w_expand_env ProgramFiles)" - case "$W_PROGRAMS_WIN" in - "") w_info "$(winetricks_print_wineprefix_info)" ; w_die "$WINE cmd.exe /c echo '%ProgramFiles%' returned empty string, error message \"$(cat $W_TMP_EARLY/early_wine.err.txt)\" ";; - %*) w_info "$(winetricks_print_wineprefix_info)" ; w_die "$WINE cmd.exe /c echo '%ProgramFiles%' returned unexpanded string '$W_PROGRAMS_WIN' ... this can be caused by a corrupt wineprefix (\`wineboot -u\` may help), by an old wine, or by not owning $WINEPREFIX" ;; - *unknown*) w_info "$(winetricks_print_wineprefix_info)" ; w_die "$WINE cmd.exe /c echo '%ProgramFiles%' returned a string containing the word 'unknown', as if a voice had cried out in terror, and was suddenly silenced." ;; - esac + w_try mkdir -p "$(dirname "$WINEPREFIX")" case "$W_PLATFORM" in windows_cmd) @@ -5005,6 +5027,102 @@ winetricks_set_wineprefix() *) W_DRIVE_C="$WINEPREFIX/dosdevices/c:" ;; esac + W_WINDIR_UNIX="$W_DRIVE_C/windows" + + # Make sure the prefix is initialized: + w_try winetricks_early_wine cmd /c "echo init" > /dev/null 2>&1 + + # Win(e) 32/64? + # Using the variable W_SYSTEM32_DLLS instead of SYSTEM32 because some stuff does go under system32 for both arch's + # e.g., spool/drivers/color + if test -d "$W_DRIVE_C/windows/syswow64"; then + # Probably need fancier handling/checking, but for a basic start: + # Note 'wine' may be named 'wine-stable'/'wine-staging'/etc.): + # WINE64 = wine64, available on 64-bit prefixes + # WINE_ARCH = the native wine for the prefix (wine for 32-bit, wine64 for 64-bit) + # WINE_MULTI = generic wine, new name + if [ "${WINE%??}64" = "$WINE" ]; then + WINE64="${WINE}" + 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/')" + fi + WINE_ARCH="${WINE64}" + WINE_MULTI="${WINE}" + W_ARCH=win64 + + W_PROGRAMS_WIN="$(w_expand_env ProgramFiles)" + W_PROGRAMS_UNIX="$(w_pathconv -u "$W_PROGRAMS_WIN")" + + # Common variable for 32-bit dlls on win32/win64: + W_SYSTEM32_DLLS="$W_WINDIR_UNIX/syswow64" + W_SYSTEM32_DLLS_WIN="C:\\windows\\syswow64" + + W_SYSTEM64_DLLS="$W_WINDIR_UNIX/system32" + W_SYSTEM64_DLLS_WIN32="C:\\windows\\sysnative" # path to access 64-bit dlls from 32-bit apps + W_SYSTEM64_DLLS_WIN64="C:\\windows\\system32" # path to access 64-bit dlls from 64-bit apps + + # There's also ProgramW6432, which =%ProgramFiles%(but only available when running under a 64 bit OS) + # See https://ss64.com/nt/syntax-variables.html + W_PROGRAMW6432_WIN="$(w_expand_env ProgramW6432)" + W_PROGRAMW6432_UNIX="$(w_pathconv -u "$W_PROGRAMW6432_WIN")" + + # 64-bit Windows has a second directory for program files + W_PROGRAMS_X86_WIN="${W_PROGRAMS_WIN} (x86)" + W_PROGRAMS_X86_UNIX="${W_PROGRAMS_UNIX} (x86)" + + W_COMMONFILES_X86_WIN="$(w_expand_env CommonProgramFiles\(x86\))" + W_COMMONFILES_X86="$(w_pathconv -u "$W_COMMONFILES_X86_WIN")" + W_COMMONFILES_WIN="$(w_expand_env CommonProgramW6432)" + W_COMMONFILES="$(w_pathconv -u "$W_COMMONFILES_WIN")" + + # 64-bit prefixes still have plenty of issues: + case $LANG in + ru*) w_warn "Вы используете 64-битный WINEPREFIX. Важно: многие ветки устанавливают только 32-битные версии пакетов. Если у вас возникли проблемы, пожалуйста, проверьте еще раз на чистом 32-битном WINEPREFIX до отправки отчета об ошибке." ;; + *) w_warn "You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug." ;; + esac + else + WINE64="false" + WINE_ARCH="${WINE}" + WINE_MULTI="${WINE}" + W_ARCH=win32 + + W_PROGRAMS_WIN="$(w_expand_env ProgramFiles)" + W_PROGRAMS_UNIX="$(w_pathconv -u "$W_PROGRAMS_WIN")" + + # Common variable for 32-bit dlls on win32/win64: + W_SYSTEM32_DLLS="$W_WINDIR_UNIX/system32" + W_SYSTEM32_DLLS_WIN="C:\\windows\\system32" + + # These don't exist on win32, but are defined in case they are used on 32-bit. + # W_SYSTEM64_DLLS_WIN64 in particular is needed by w_metadata() + W_SYSTEM64_DLLS="/dev/null" + W_SYSTEM64_DLLS_WIN32="C:\\does-not-exist-on-win32" # path to access 64-bit dlls from 32-bit apps + W_SYSTEM64_DLLS_WIN64="C:\\does-not-exist-on-win32" # path to access 64-bit dlls from 64-bit apps + + W_PROGRAMS_X86_WIN="${W_PROGRAMS_WIN}" + W_PROGRAMS_X86_UNIX="${W_PROGRAMS_UNIX}" + + W_COMMONFILES_X86_WIN="$(w_expand_env CommonProgramFiles)" + W_COMMONFILES_X86="$(w_pathconv -u "$W_COMMONFILES_X86_WIN")" + W_COMMONFILES_WIN="$(w_expand_env CommonProgramFiles)" + W_COMMONFILES="$(w_pathconv -u "$W_COMMONFILES_WIN")" + fi + + ## Arch independent variables: + + # Note: using AppData since it's arch indepedent + W_APPDATA_WIN="$(w_expand_env AppData)" + W_APPDATA_UNIX="$(w_pathconv -u "$W_APPDATA_WIN")" + + case "$W_APPDATA_WIN" in + "") w_info "$(winetricks_print_wineprefix_info)" ; w_die "$WINE cmd.exe /c echo '%AppData%' returned empty string, error message \"$(cat $W_TMP_EARLY/early_wine.err.txt)\" ";; + %*) w_info "$(winetricks_print_wineprefix_info)" ; w_die "$WINE cmd.exe /c echo '%AppData%' returned unexpanded string '$W_PROGRAMS_WIN' ... this can be caused by a corrupt wineprefix (\`wineboot -u\` may help), by an old wine, or by not owning $WINEPREFIX" ;; + esac # Kludge: use Temp instead of temp to avoid \t expansion in w_try # but use temp in Unix path because that's what Wine creates, and having both temp and Temp @@ -5022,10 +5140,9 @@ winetricks_set_wineprefix() "windows_cmd|wine_cmd") W_CACHE_WIN="$(w_pathconv -w "$W_CACHE")" ;; *) # For case where Z: doesn't exist or / is writable (!), - # make a drive letter for W_CACHE. Clean it up on exit. + # make a drive letter for W_CACHE. Clean it up on exit. test "$WINETRICKS_CACHE_SYMLINK" && rm -f "$WINETRICKS_CACHE_SYMLINK" - for letter in y x w v u t s r q p o n m - do + for letter in y x w v u t s r q p o n m; do if ! test -d "$WINEPREFIX"/dosdevices/${letter}:; then mkdir -p "$WINEPREFIX"/dosdevices WINETRICKS_CACHE_SYMLINK="$WINEPREFIX"/dosdevices/${letter}: @@ -5037,34 +5154,8 @@ winetricks_set_wineprefix() ;; esac - W_COMMONFILES_X86_WIN="$(w_expand_env CommonProgramFiles)" - W_COMMONFILES_WIN="$(w_expand_env CommonProgramW6432)" - - # CommonProgramW6432 is only defined on win64, not win32 arches - # win32: %CommonProgramW6432% - # win64: 'C:\Program Files\Common Files' - if [ -z "$W_COMMONFILES_WIN" ] || [ "$W_COMMONFILES_WIN" = "%CommonProgramW6432%" ] ; then - W_COMMONFILES_WIN="$W_COMMONFILES_X86_WIN" - fi - - W_COMMONFILES_X86="$(w_pathconv -u "$W_COMMONFILES_X86_WIN")" - #W_COMMONFILES="$(w_pathconv -u "$W_COMMONFILES_WIN")" - - W_PROGRAMS_UNIX="$(w_pathconv -u "$W_PROGRAMS_WIN")" W_WINDIR_UNIX="$W_DRIVE_C/windows" - # 64-bit Windows has a second directory for program files - W_PROGRAMS_X86_WIN="${W_PROGRAMS_WIN} (x86)" - W_PROGRAMS_X86_UNIX="${W_PROGRAMS_UNIX} (x86)" - if ! test -d "$W_PROGRAMS_X86_UNIX"; then - W_PROGRAMS_X86_WIN="${W_PROGRAMS_WIN}" - W_PROGRAMS_X86_UNIX="${W_PROGRAMS_UNIX}" - fi - - W_APPDATA_WIN="$(w_expand_env AppData)" - # shellcheck disable=SC2034 - W_APPDATA_UNIX="$(w_pathconv -u "$W_APPDATA_WIN")" - # FIXME: get fonts path from SHGetFolderPath # See also https://blogs.msdn.microsoft.com/oldnewthing/20031103-00/?p=41973/ W_FONTSDIR_WIN="c:\\windows\\Fonts" @@ -5078,55 +5169,6 @@ winetricks_set_wineprefix() fi mkdir -p "${W_FONTSDIR_UNIX}" - # Win(e) 32/64? - # Using the variable W_SYSTEM32_DLLS instead of SYSTEM32 because some stuff does go under system32 for both arch's - # e.g., spool/drivers/color - if test -d "$W_DRIVE_C/windows/syswow64"; then - W_ARCH=win64 - W_SYSTEM32_DLLS="$W_WINDIR_UNIX/syswow64" - W_SYSTEM32_DLLS_WIN="C:\\windows\\syswow64" - W_SYSTEM64_DLLS="$W_WINDIR_UNIX/system32" - # shellcheck disable=SC2034 - W_SYSTEM64_DLLS_WIN32="C:\\windows\\sysnative" # path to access 64-bit dlls from 32-bit apps - # shellcheck disable=SC2034 - W_SYSTEM64_DLLS_WIN64="C:\\windows\\system32" # path to access 64-bit dlls from 64-bit apps - # Common variable for 32-bit dlls on win32/win64: - W_32BIT_DLLS="$W_WINDIR_UNIX/syswow64" - - # Probably need fancier handling/checking, but for a basic start: - # Note 'wine' may be named 'wine-stable'/'wine-staging'/etc.): - # WINE64 = wine64, available on 64-bit prefixes - # WINE_ARCH = the native wine for the prefix (wine for 32-bit, wine64 for 64-bit) - # WINE_MULTI = generic wine, new name - if [ "${WINE%??}64" = "$WINE" ]; then - WINE64="${WINE}" - 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/')" - fi - WINE_ARCH="${WINE64}" - WINE_MULTI="${WINE}" - - # 64-bit prefixes still have plenty of issues: - case $LANG in - ru*) w_warn "Вы используете 64-битный WINEPREFIX. Важно: многие ветки устанавливают только 32-битные версии пакетов. Если у вас возникли проблемы, пожалуйста, проверьте еще раз на чистом 32-битном WINEPREFIX до отправки отчета об ошибке." ;; - *) w_warn "You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug." ;; - esac - else - W_ARCH=win32 - W_SYSTEM32_DLLS="$W_WINDIR_UNIX/system32" - W_SYSTEM32_DLLS_WIN="C:\\windows\\system32" - # Common variable for 32-bit dlls on win32/win64: - W_32BIT_DLLS="$W_WINDIR_UNIX/system32" - - WINE64="false" - WINE_ARCH="${WINE}" - WINE_MULTI="${WINE}" - fi # Unset WINEARCH which might be set from winetricks_set_winearch(). # It is no longer necessary after the new wineprefix was created @@ -5147,7 +5189,7 @@ winetricks_annihilate_wineprefix() rm -rf "$WINEPREFIX" # Also remove menu items. - find "$XDG_DATA_HOME/applications/wine" -type f -name '*.desktop' -exec grep -q -l "$WINEPREFIX" '{}' ';' -exec rm '{}' ';' + find "$XDG_DATA_HOME/applications" -type f -name '*.desktop' -exec grep -q -l "$WINEPREFIX" '{}' ';' -exec rm '{}' ';' # Also remove desktop items. # Desktop might be synonym for home directory, so only go one level @@ -5191,8 +5233,7 @@ winetricks_init() # The list of categories is also hardcoded in winetricks_mainmenu() :-( WINETRICKS_CATEGORIES="apps benchmarks dlls fonts games settings mkprefix" - for _W_cat in $WINETRICKS_CATEGORIES - do + for _W_cat in $WINETRICKS_CATEGORIES; do mkdir -p "$WINETRICKS_METADATA/$_W_cat" done @@ -5212,9 +5253,6 @@ winetricks_init() # whether to use shared wineprefix (1) or unique wineprefix for each app (0) WINETRICKS_OPT_SHAREDPREFIX=${WINETRICKS_OPT_SHAREDPREFIX:-0} - WINETRICKS_SOURCEFORGE=https://downloads.sourceforge.net - - winetricks_get_sha1sum_prog winetricks_get_sha256sum_prog winetricks_get_platform @@ -5272,6 +5310,31 @@ winetricks_init() W_TASKSET="" fi + # Whether to automate installs (0=no, 1=yes) + winetricks_set_unattended "${W_OPT_UNATTENDED:-0}" + + # We have to call this here, because it needs to be called before w_metadata + # Unfortunately, that means we run wine before the gui runs. Avoiding that would take quite the refactor.. + winetricks_wine_setup "$@" +} + +winetricks_wine_setup() +{ + # This used to be part of winetricks_init(), factored out because not everything needs Wine. + if [ -n "$_W_wine_not_needed" ]; then + # no-op + : + return + fi + + winetricks_latest_version_check + + # Overridden for windows + W_ISO_MOUNT_ROOT=/mnt/winetricks + W_ISO_USER_MOUNT_ROOT="$HOME"/winetricks-iso + W_ISO_MOUNT_LETTER=i + + ###################### # System-specific variables case "$W_PLATFORM" in windows_cmd) @@ -5290,7 +5353,7 @@ winetricks_init() "$WINESERVER" \ "${WINE}server" \ "$(command -v wineserver 2> /dev/null)" \ - "$(dirname $WINE)/server/wineserver" \ + "$(dirname "$WINE")/server/wineserver" \ /usr/bin/wineserver-development \ /usr/lib/wine/wineserver \ /usr/lib/i386-kfreebsd-gnu/wine/wineserver \ @@ -5304,8 +5367,8 @@ winetricks_init() /usr/lib/i386-linux-gnu/wine-development/wineserver \ /usr/lib/powerpc-linux-gnu/wine-development/wineserver \ /usr/lib/x86_64-linux-gnu/wine-development/wineserver \ - file-not-found - do + file-not-found; do + if test -x "$x"; then case "$x" in /usr/lib/*/wine-development/wineserver|/usr/bin/wineserver-development) @@ -5336,16 +5399,6 @@ winetricks_init() ;; esac - winetricks_set_wineprefix "$1" - - # Whether to automate installs (0=no, 1=yes) - winetricks_set_unattended ${W_OPT_UNATTENDED:-0} - - # Overridden for windows - W_ISO_MOUNT_ROOT=/mnt/winetricks - W_ISO_USER_MOUNT_ROOT="$HOME"/winetricks-iso - W_ISO_MOUNT_LETTER=i - WINETRICKS_WINE_VERSION=${WINETRICKS_WINE_VERSION:-$(winetricks_early_wine --version | sed 's/.*wine/wine/')} WINETRICKS_ORIG_WINE_VERSION="${WINETRICKS_WINE_VERSION}" @@ -5358,17 +5411,17 @@ winetricks_init() # wine-2.8 _wine_version_stripped="$(echo "$WINETRICKS_WINE_VERSION" | cut -d ' ' -f1 | sed -e 's/wine-//' -e 's/-rc.*//')" - # If WINE is < 3.0, warn user: - # 3.0 doesn't do what I thought it would - if w_wine_version_in 2.99, ; then - w_warn "Your version of wine $_wine_version_stripped is no longer supported upstream. You should upgrade to 3.x" + # If WINE is < 4.0, warn user: + # 4.0 doesn't do what I thought it would + if w_wine_version_in 3.99, ; then + w_warn "Your version of wine $_wine_version_stripped is no longer supported upstream. You should upgrade to 4.x" fi - if [ ! "$WINETRICKS_SUPER_QUIET" ] ; then + winetricks_set_wineprefix "$1" + + if [ -z "$WINETRICKS_SUPER_QUIET" ] ; then echo "Using winetricks $(winetricks_print_version) with ${WINETRICKS_ORIG_WINE_VERSION} and WINEARCH=${W_ARCH}" fi - - winetricks_latest_version_check } winetricks_usage() @@ -5409,7 +5462,6 @@ Optionen: --no-clean Temp Verzeichnisse nicht löschen (nützlich beim debuggen) -q, --unattended Keine Fragen stellen, alles automatisch installieren -r, --ddrescue Alternativer Zugriffsmodus (hilft bei zerkratzten Disks) - --showbroken Auch Verben anzeigen die momentan in Wine nicht funktionieren -t --torify Run downloads under torify, if available --verify Wenn Möglisch automatische GUI Tests für Verben starten -v, --verbose Alle ausgeführten Kommandos anzeigen @@ -5442,7 +5494,7 @@ Executes given verbs. Each verb installs an application or changes a setting. Options: --country=CC Set country code to CC and don't detect your IP address - --force Don't check whether packages were already installed +-f, --force Don't check whether packages were already installed --gui Show gui diagnostics even when driven by commandline --isolate Install each app or game in its own bottle (WINEPREFIX) --self-update Update this application to the last version @@ -5451,7 +5503,6 @@ Options: --no-clean Don't delete temp directories (useful during debugging) -q, --unattended Don't ask any questions, just install automatically -r, --ddrescue Retry hard when caching scratched discs - --showbroken Even show verbs that are currently broken in wine -t --torify Run downloads under torify, if available --verify Run (automated) GUI tests for verbs, if available -v, --verbose Echo all commands as they are executed @@ -5484,7 +5535,7 @@ winetricks_handle_option() { case "$1" in --country=*) W_COUNTRY="${1##--country=}" ;; - --force) WINETRICKS_FORCE=1;; + -f|--force) WINETRICKS_FORCE=1;; --gui) winetricks_detect_gui;; -h|--help) winetricks_usage ; exit 0 ;; --isolate) WINETRICKS_OPT_SHAREDPREFIX=0 ;; @@ -5496,7 +5547,6 @@ winetricks_handle_option() -q|--unattended) winetricks_set_unattended 1 ;; -r|--ddrescue) WINETRICKS_OPT_DD=ddrescue ;; --self-update) winetricks_selfupdate;; - --showbroken) W_OPT_SHOWBROKEN=1 ;; -t|--torify) WINETRICKS_OPT_TORIFY=1 ;; --update-rollback) winetricks_selfupdate_rollback;; -v|--verbose) WINETRICKS_OPT_VERBOSE=1 ; set -x;; @@ -5504,6 +5554,7 @@ winetricks_handle_option() --verify) WINETRICKS_VERIFY=1 ;; -vv|--really-verbose) WINETRICKS_OPT_VERBOSE=2 ; set -x ;; -*) w_die "unknown option $1" ;; + prefix=*) export WINEPREFIX="${W_PREFIXES_ROOT}/${1##prefix=}" ;; *) return 1 ;; esac return 0 @@ -5514,8 +5565,7 @@ winetricks_handle_option() [ -w "$W_TMP_EARLY" ] || w_die "temporary directory: '$W_TMP_EARLY' ; is not user writeable" # Must initialize variables before calling w_metadata -if ! test "$WINETRICKS_LIB" -then +if ! test "$WINETRICKS_LIB"; then WINETRICKS_SRCDIR=$(dirname "$0") WINETRICKS_SRCDIR=$(w_try_cd "$WINETRICKS_SRCDIR"; pwd) @@ -5525,11 +5575,17 @@ then WINETRICKS_OPT_SHAREDPREFIX=${WINETRICKS_OPT_SHAREDPREFIX:-1} # Handle options before init, to avoid starting wine for --help or --version - while winetricks_handle_option "$1" - do + while winetricks_handle_option "$1"; do shift done + # Super gross, but I couldn't find a cleaner way. This needs to be set for the list verbs (maybe others) + # while also supporting `dlls list` (etc.) + # This used by w_metadata() to skip checking installed files if wine isn't available/needed + if echo "$*" | grep -v list-installed | grep -q -w list; then + export _W_wine_not_needed=1 + fi + # Workaround for https://github.com/Winetricks/winetricks/issues/599 # If --isolate is used, pass verb to winetricks_init, so it can set the wineprefix using winetricks_set_wineprefix() # Otherwise, an arch mismatch between ${WINEPREFIX:-$HOME/.wine} and the prefix to be made for the isolated app would cause it to fail @@ -5558,6 +5614,17 @@ winetricks_install_app() fi } +winetricks_verify() +{ + "verify_$cmd" 2>/dev/null + verify_status=$? + case $verify_status in + 0) w_warn "verify_$cmd succeeded!" ;; + 127) echo "verify_$cmd not found, not verifying $cmd" ;; + *) w_die "verify_$cmd failed!" ;; + esac +} + #---- Builtin Verbs ---- #---------------------------------------------------------------- @@ -5599,16 +5666,14 @@ helper_d3dx9_xx() # Even kinder, less invasive directx - only extract and override d3dx9_xx.dll w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*.cab - do + for x in "$W_TMP"/*.cab; do w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" done if test "$W_ARCH" = "win64"; then w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*x64.cab - do + for x in "$W_TMP"/*x64.cab; do w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" done fi @@ -5642,6 +5707,18 @@ helper_win2ksp4() w_try_cabextract -d "$W_TMP" -L -F "$filename" "$W_CACHE"/win2ksp4/W2KSP4_EN.EXE } +# Filelist at ./misc/filelists/winxpsp2_support_tools.txt +helper_winxpsp2_support_tools() +{ + filename="$1" + + # https://www.microsoft.com/en-us/download/details.aspx?id=18546 + w_download_to winxpsp2_support_tools https://download.microsoft.com/download/d/3/8/d38066aa-4e37-4ae8-bce3-a4ce662b2024/WindowsXP-KB838079-SupportTools-ENU.exe 7927e87af616d2fb8d4ead0db0103eb845a4e6651b20a5bffea9eebc3035c24d + + w_try_cabextract -d "$W_TMP" -L -F support.cab "$W_CACHE"/winxpsp2_support_tools/WindowsXP-KB838079-SupportTools-ENU.exe + w_try_cabextract -d "$W_TMP" -L -F "$filename" "$W_TMP"/support.cab +} + # Filelist at ./misc/filelists/winxpsp3.txt helper_winxpsp3() { @@ -5709,7 +5786,8 @@ load_adobeair() # 2018/06/08: 30.0.0.107 (strings 'Adobe AIR.dll' | grep -E "^30\..+\..+" ) sha256sum bcc36174f6f70baba27e5ed1c0df67e55c306ac7bc86b1d280eff4db8c314985 # 2018/09/12: 31.0.0.96 (strings 'Adobe AIR.dll' | grep -E "^31\..+\..+" ) sha256sum dc82421f135627802b21619bdb7e4b9b0ec16d351120485c575aa6c16cd2737e # 2018/12/22: 32.0.0.89 (strings 'Adobe AIR.dll' | grep -E "^32\..+\..+" ) sha256sum 24532d41ef2588c0daac4b6f8b7f863ee3c1a1b1e90b2d8d8b3eb4faa657e5e3 - w_download https://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe 24532d41ef2588c0daac4b6f8b7f863ee3c1a1b1e90b2d8d8b3eb4faa657e5e3 + # 2019/06/11: 32.0.0.125 (strings 'Adobe AIR.dll' | grep -E "^32\..+\..+" ) sha256sum 6718308e10a45176155d0ecc8458bd3606308925b91f26a7d08c148cf52c9db3 + w_download https://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe 6718308e10a45176155d0ecc8458bd3606308925b91f26a7d08c148cf52c9db3 w_try_cd "$W_CACHE/$W_PACKAGE" # See https://bugs.winehq.org/show_bug.cgi?id=43506 @@ -5717,7 +5795,7 @@ load_adobeair() if w_workaround_wine_bug 43506 "Forcing quiet install"; then w_try "$WINE" AdobeAIRInstaller.exe -silent else - w_try "$WINE" AdobeAIRInstaller.exe $W_UNATTENDED_DASH_SILENT + w_try "$WINE" AdobeAIRInstaller.exe ${W_OPT_UNATTENDED:+-silent} fi } @@ -5735,6 +5813,9 @@ load_amstream() { helper_win7sp1 x86_microsoft-windows-directshow-other_31bf3856ad364e35_6.1.7601.17514_none_0f58f1e53efca91e/amstream.dll w_try cp "$W_TMP/x86_microsoft-windows-directshow-other_31bf3856ad364e35_6.1.7601.17514_none_0f58f1e53efca91e/amstream.dll" "$W_SYSTEM32_DLLS/amstream.dll" + + w_override_dlls native,builtin amstream + w_try_regsvr amstream.dll if [ "$W_ARCH" = "win64" ]; then @@ -5742,8 +5823,6 @@ load_amstream() w_try cp "$W_TMP/amd64_microsoft-windows-directshow-other_31bf3856ad364e35_6.1.7601.17514_none_6b778d68f75a1a54/amstream.dll" "$W_SYSTEM64_DLLS/amstream.dll" w_try_regsvr64 amstream.dll fi - - w_override_dlls native,builtin amstream } #---------------------------------------------------------------- @@ -5759,9 +5838,11 @@ w_metadata art2kmin dlls \ load_art2kmin() { # See https://www.microsoft.com/en-us/download/details.aspx?id=4438 - w_download https://download.microsoft.com/download/D/2/A/D2A2FC8B-0447-491C-A5EF-E8AA3A74FB98/AccessRuntime.exe a00a92fdc4ddc0dcf5d1964214a8d7e4c61bb036908a4b43b3700063eda9f4fb + # Originally at https://download.microsoft.com/download/D/2/A/D2A2FC8B-0447-491C-A5EF-E8AA3A74FB98/AccessRuntime.exe + # 2019/11/22: moved to https://www.fmsinc.com/microsoftaccess/runtime/AccessRuntime2007.exe + w_download https://www.fmsinc.com/microsoftaccess/runtime/AccessRuntime2007.exe a00a92fdc4ddc0dcf5d1964214a8d7e4c61bb036908a4b43b3700063eda9f4fb AccessRuntime.exe w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" AccessRuntime.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" AccessRuntime.exe ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- @@ -5878,13 +5959,13 @@ load_comctl32() # 2011/01/17: https://www.microsoft.com/en-us/download/details.aspx?id=14672 # 2012/08/11: w_download https://download.microsoft.com/download/platformsdk/redist/5.80.2614.3600/w9xnt4/en-us/cc32inst.exe d68c0cca721870aed39f5f2efd80dfb74f3db66d5f9a49e7578b18279edfa4a7 # 2016/01/07: w_download ftp://ftp.ie.debian.org/disk1/download.sourceforge.net/pub/sourceforge/p/po/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe - # 2017/03/12: w_download $WINETRICKS_SOURCEFORGE/project/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe + # 2017/03/12: w_download https://downloads.sourceforge.net/project/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe - w_download $WINETRICKS_SOURCEFORGE/project/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe d68c0cca721870aed39f5f2efd80dfb74f3db66d5f9a49e7578b18279edfa4a7 + w_download https://downloads.sourceforge.net/project/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe d68c0cca721870aed39f5f2efd80dfb74f3db66d5f9a49e7578b18279edfa4a7 - w_try "$WINE" "$W_CACHE"/comctl32/cc32inst.exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q + w_try "$WINE" "$W_CACHE"/comctl32/cc32inst.exe "/T:$W_TMP_WIN" /c ${W_OPT_UNATTENDED:+/q} w_try_unzip "$W_TMP" "$W_TMP"/comctl32.exe - w_try "$WINE" "$W_TMP"/x86/50ComUpd.Exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q + w_try "$WINE" "$W_TMP"/x86/50ComUpd.Exe "/T:$W_TMP_WIN" /c ${W_OPT_UNATTENDED:+/q} w_try cp "$W_TMP"/comcnt.dll "$W_SYSTEM32_DLLS"/comctl32.dll w_override_dlls native,builtin comctl32 @@ -5979,30 +6060,61 @@ load_binkw32() #---------------------------------------------------------------- +w_metadata d3dcompiler_42 dlls \ + title="MS d3dcompiler_42.dll" \ + publisher="Microsoft" \ + year="2010" \ + media="download" \ + file1="../directx9/directx_Jun2010_redist.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3dcompiler_42.dll" + +load_d3dcompiler_42() +{ + dllname=d3dcompiler_42 + + helper_directx_Jun2010 + + w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME + for x in "$W_TMP"/*.cab; do + w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" + done + if test "$W_ARCH" = "win64"; then + w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME + for x in "$W_TMP"/*x64.cab; do + w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" + done + fi + + w_override_dlls native $dllname +} + +#---------------------------------------------------------------- + w_metadata d3dcompiler_43 dlls \ title="MS d3dcompiler_43.dll" \ publisher="Microsoft" \ year="2010" \ media="download" \ file1="../directx9/directx_Jun2010_redist.exe" \ - installed_file1="$W_SYSTEM32_DLLS_WIN/d3dcompiler_43.dll" \ - wine_showstoppers="24013" # list a showstopper to hide this from average users for now + installed_file1="$W_SYSTEM32_DLLS_WIN/d3dcompiler_43.dll" load_d3dcompiler_43() { + if w_workaround_wine_bug 24013; then + w_warn "Native d3dcompiler_43 may cause some d3d10 apps to crash, see https://bugs.winehq.org/show_bug.cgi?id=24013" + fi + dllname=d3dcompiler_43 helper_directx_Jun2010 w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*.cab - do + for x in "$W_TMP"/*.cab; do w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" done if test "$W_ARCH" = "win64"; then w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*x64.cab - do + for x in "$W_TMP"/*x64.cab; do w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" done fi @@ -6073,14 +6185,12 @@ load_d3dx9() # Kinder, less invasive directx - only extract and override d3dx9_??.dll w_try_cabextract -d "$W_TMP" -L -F '*d3dx9*x86*' "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*.cab - do + for x in "$W_TMP"/*.cab; do w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'd3dx9*.dll' "$x" done if test "$W_ARCH" = "win64"; then w_try_cabextract -d "$W_TMP" -L -F '*d3dx9*x64*' "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*x64.cab - do + for x in "$W_TMP"/*x64.cab; do w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'd3dx9*.dll' "$x" done fi @@ -6408,14 +6518,12 @@ load_d3dx11_42() helper_directx_Jun2010 w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*.cab - do + for x in "$W_TMP"/*.cab; do w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" done if test "$W_ARCH" = "win64"; then w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*x64.cab - do + for x in "$W_TMP"/*x64.cab; do w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" done fi @@ -6440,14 +6548,12 @@ load_d3dx11_43() helper_directx_Jun2010 w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*.cab - do + for x in "$W_TMP"/*.cab; do w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" done if test "$W_ARCH" = "win64"; then w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*x64.cab - do + for x in "$W_TMP"/*x64.cab; do w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" done fi @@ -6471,14 +6577,12 @@ load_d3dx10() # Kinder, less invasive directx10 - only extract and override d3dx10_??.dll w_try_cabextract -d "$W_TMP" -L -F '*d3dx10*x86*' "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*.cab - do + for x in "$W_TMP"/*.cab; do w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'd3dx10*.dll' "$x" done if test "$W_ARCH" = "win64"; then w_try_cabextract -d "$W_TMP" -L -F '*d3dx10*x64*' "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*x64.cab - do + for x in "$W_TMP"/*x64.cab; do w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'd3dx10*.dll' "$x" done fi @@ -6505,14 +6609,12 @@ load_d3dx10_43() helper_directx_Jun2010 w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*.cab - do + for x in "$W_TMP"/*.cab; do w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" done if test "$W_ARCH" = "win64"; then w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*x64.cab - do + for x in "$W_TMP"/*x64.cab; do w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" done fi @@ -6575,8 +6677,8 @@ load_devenum() w_try_cabextract -d "$W_TMP" -L -F 'dxnt.cab' "$W_CACHE/directx9/$DIRECTX_NAME" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'devenum.dll' "$W_TMP/dxnt.cab" - w_try_regsvr devenum.dll w_override_dlls native devenum + w_try_regsvr devenum.dll } #---------------------------------------------------------------- @@ -6595,8 +6697,8 @@ load_dinput() w_try_cabextract -d "$W_TMP" -L -F 'dxnt.cab' "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dinput.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dinput w_override_dlls native dinput + w_try_regsvr dinput } #---------------------------------------------------------------- @@ -6615,6 +6717,8 @@ load_dinput8() w_try_cabextract -d "$W_TMP" -L -F 'dxnt.cab' "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dinput8.dll' "$W_TMP/dxnt.cab" + + # Don't try to register native dinput8; it doesn't export DllRegisterServer(). w_try_regsvr dinput8 w_override_dlls native dinput8 } @@ -6626,15 +6730,15 @@ w_metadata directmusic dlls \ publisher="Microsoft" \ year="2010" \ media="download" \ - file1="../directx9/directx_feb2010_redist.exe" + file1="../directx9/directx_feb2010_redist.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/dmusic.dll" load_directmusic() { -# Untested. Based off https://bugs.winehq.org/show_bug.cgi?id=4805 and https://bugs.winehq.org/show_bug.cgi?id=24911 + # Untested. Based off https://bugs.winehq.org/show_bug.cgi?id=4805 and https://bugs.winehq.org/show_bug.cgi?id=24911 w_warn "You can specify individual DirectMusic verbs instead. e.g. 'winetricks dmsynth dmusic'" - w_call devenum w_call dmband w_call dmcompos w_call dmime @@ -6646,7 +6750,6 @@ load_directmusic() w_call dmusic32 w_call dsound w_call dswave - w_call quartz # FIXME: dxnt.cab doesn't contain this DLL. Is this really needed? w_override_dlls native streamci @@ -6654,6 +6757,27 @@ load_directmusic() #---------------------------------------------------------------- +w_metadata directshow dlls \ + title="DirectShow runtime DLLs (amstream, qasf, qcap, qdvd, qedit, quartz)" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X86.exe" + +load_directshow() +{ + w_warn "You can specify individual DirectShow verbs instead. e.g. 'winetricks quartz'" + + w_call amstream + w_call qasf + w_call qcap + w_call qdvd + w_call qedit + w_call quartz +} + +#---------------------------------------------------------------- + w_metadata directplay dlls \ title="MS DirectPlay from DirectX user redistributable" \ publisher="Microsoft" \ @@ -6684,56 +6808,16 @@ load_directplay() #---------------------------------------------------------------- w_metadata directx9 dlls \ - title="MS DirectX 9 (Usually overkill. Try d3dx9_36 first)" \ + title="MS DirectX 9 (Deprecated, no-op)" \ publisher="Microsoft" \ year="2010" \ - media="download" \ - file1="directx_feb2010_redist.exe" \ - installed_file1="$W_SYSTEM32_DLLS_WIN/d3dx10_33.dll" + media="download" load_directx9() { - helper_directx_dl - - w_warn "You probably shouldn't be using this. d3dx9 or, better, d3dx9_36 usually suffice." - - # Stefan suggested that, when installing, one should override as follows: - # 1) use built-in wintrust (we don't run native properly somehow?) - # 2) disable mscoree (else if it's present some module misbehaves?) - # 3) override native any DirectX DLL whose Wine version doesn't register itself well yet - # For #3, I have no idea which DLLs don't register themselves well yet, - # so I'm just listing a few of the basic ones. Let's whittle that - # list down as soon as we can. - - # Setting Windows version to win2k apparently crashes the installer on OS X. - # FIXME: seems this didn't get migrated to Github? - # See https://code.google.com/p/winezeug/issues/detail?id=71 - w_set_winver winxp - - w_try_cd "$W_CACHE/$W_PACKAGE" - WINEDLLOVERRIDES="wintrust=b,mscoree=,ddraw,d3d8,d3d9,dsound,dinput=n" \ - w_try "$WINE" $DIRECTX_NAME /t:"$W_TMP_WIN" $W_UNATTENDED_SLASH_Q - - # How many of these do we really need? - # We should probably remove most of these...? - w_call devenum - w_call quartz - - w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME - w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "msdmo.dll" "$W_TMP/dxnt.cab" - w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "qcap.dll" "$W_TMP/dxnt.cab" - w_try_regsvr qcap.dll - - w_override_dlls native d3dim d3drm d3dx8 d3dx9_24 d3dx9_25 d3dx9_26 d3dx9_27 d3dx9_28 d3dx9_29 - w_override_dlls native d3dx9_30 d3dx9_31 d3dx9_32 d3dx9_33 d3dx9_34 d3dx9_35 d3dx9_36 d3dx9_37 - w_override_dlls native d3dx9_38 d3dx9_39 d3dx9_40 d3dx9_41 d3dx9_42 d3dx9_43 d3dxof - w_override_dlls native dciman32 ddrawex dmband dmcompos dmime dmloader dmscript dmstyle - w_override_dlls native dmsynth dmusic dmusic32 dplay dplayx dpnaddr dpnet dpnhpast dpnlobby - w_override_dlls native dswave dxdiagn msdmo qcap streamci - w_override_dlls native dxdiag.exe - w_override_dlls builtin d3d8 d3d9 dinput dinput8 dsound - - w_try "$WINE" "$W_TMP_WIN"\\DXSETUP.exe $W_UNATTENDED_SLASH_SILENT + # There are 54 as of 2019/04/23, so listing them all (especially in GUI) would be hard. + # Besides, that would probably encourage people to install more native stuff than necessary. + w_warn "directx9 is deprecated. Please install individual directx components (e.g., \`$0 d3dx9\`) instead." } #---------------------------------------------------------------- @@ -6753,18 +6837,15 @@ load_dpvoice() helper_directx_dl w_try_cabextract -d "$W_TMP" -L -F 'dxnt.cab' "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*.cab - do + for x in "$W_TMP"/*.cab; do w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dpvoice.dll' "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dpvvox.dll' "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dpvacm.dll' "$x" done + w_override_dlls native dpvoice dpvvox dpvacm w_try_regsvr dpvoice.dll w_try_regsvr dpvvox.dll w_try_regsvr dpvacm.dll - w_override_dlls native dpvoice - w_override_dlls native dpvvox - w_override_dlls native dpvacm } #---------------------------------------------------------------- @@ -6780,7 +6861,6 @@ w_metadata dsdmo dlls \ load_dsdmo() { helper_directx_dl - mkdir "$W_CACHE"/dsdmo # kludge so test -f $file1 works w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dsdmo.dll' "$W_TMP/dxnt.cab" @@ -6791,7 +6871,7 @@ load_dsdmo() #---------------------------------------------------------------- -w_metadata dxsdk_nov2006 dlls \ +w_metadata dxsdk_nov2006 apps \ title="MS DirectX SDK, November 2006 (developers only)" \ publisher="Microsoft" \ year="2006" \ @@ -6809,12 +6889,12 @@ load_dxsdk_nov2006() w_try_cabextract "$W_CACHE"/dxsdk_nov2006/dxsdk_aug2006.exe w_try_unzip "$W_TMP" dxsdk.exe w_try_cd "$W_TMP" - w_try "$WINE" msiexec /i Microsoft_DirectX_SDK.msi $W_UNATTENDED_SLASH_Q + w_try "$WINE" msiexec /i Microsoft_DirectX_SDK.msi ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- -w_metadata dxsdk_jun2010 dlls \ +w_metadata dxsdk_jun2010 apps \ title="MS DirectX SDK, June 2010 (developers only)" \ publisher="Microsoft" \ year="2010" \ @@ -6835,174 +6915,452 @@ load_dxsdk_jun2010() #---------------------------------------------------------------- -# $1 - dxvk archive name (required) -# $2 - dxvk d3d10_enabled / d3d10_disabled (required) -# $3 - minimum Wine version (optional) -# $4 - minimum Vulkan API version (optional, requires $3 be set) -helper_dxvk() +w_metadata dxtrans dlls \ + title="MS dxtrans.dll" \ + publisher="Microsoft" \ + year="2002" \ + media="download" \ + file1="../winxpsp3/WindowsXP-KB936929-SP3-x86-ENU.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/dxtrans.dll" \ + +load_dxtrans() { - _W_dxvk_archive="${1}" - _W_dxvk_d3d10="${2}" - _W_min_wine_version="${3}" - _W_min_vulkan_version="${4}" - - case $_W_dxvk_d3d10 in - d3d10_enabled) _W_dll_overrides="d3d10 d3d10_1 d3d10core d3d11 dxgi";; - d3d10_disabled) _W_dll_overrides="d3d11 dxgi";; - *) w_die "parameter unsupported: $_W_dxvk_d3d10 ; supported parameters: d3d10_enabled d3d10_disabled" - esac - - _W_dxvk_dir="${_W_dxvk_archive%.tar.gz}" - _W_dxvk_version="${_W_dxvk_dir#*-}" - - w_warn "Please refer to dxvk version ${_W_dxvk_version} release notes... See: https://github.com/doitsujin/dxvk/releases/tag/v${_W_dxvk_version}" - if [ -n "$_W_min_wine_version" ] && ! w_wine_version_in ",${_W_min_wine_version}" ; then - [ -z "$_W_min_vulkan_version" ] || _W_vulkan_info=" The base requirement is Vulkan $_W_min_vulkan_version API support." - w_warn "dxvk ${_W_dxvk_version} does not support wine version ${_wine_version_stripped}. dxvk ${_W_dxvk_version} requires wine version ${_W_min_wine_version} (or newer).${_W_vulkan_info}" - unset _W_vulkan_info - fi - w_warn "Please refer to current dxvk base graphics driver requirements... See: https://github.com/doitsujin/dxvk/wiki/Driver-support" - - w_try_cd "$W_TMP" - w_try tar -zxf "$W_CACHE/$W_PACKAGE/$_W_dxvk_archive" - for _W_dll in $_W_dll_overrides; do - w_try mv "$W_TMP/$_W_dxvk_dir/x32/$_W_dll.dll" "$W_SYSTEM32_DLLS/" - done - if test "$W_ARCH" = "win64"; then - for _W_dll in $_W_dll_overrides; do - w_try mv "$W_TMP/$_W_dxvk_dir/x64/$_W_dll.dll" "$W_SYSTEM64_DLLS/" - done - fi - # shellcheck disable=SC2086 - w_override_dlls native $_W_dll_overrides - - unset _W_dll _W_dll_overrides _W_dxvk_archive _W_dxvk_d3d10 _W_dxvk_dir _W_dxvk_version _W_min_vulkan_version _W_min_wine_version + helper_winxpsp3 i386/dxtrans.dl_ + w_try_cabextract --directory="$W_SYSTEM32_DLLS" "$W_TMP"/i386/dxtrans.dl_ + w_override_dlls native,builtin dxtrans + w_try_regsvr dxtrans.dll } #---------------------------------------------------------------- -w_metadata dxvk54 dlls \ +# $1 - dxvk archive name (required) +# $2 - minimum Wine version (required) +# $3 - minimum Vulkan API version (required) +# $4 - [dxgi,][d3d9,][d3d10core,][d3d10,]d3d11 (required) +helper_dxvk_d9vk() +{ + _W_package_archive="${1}" + _W_min_wine_version="${2}" + _W_min_vulkan_version="${3}" + _W_dll_overrides="$(echo "${4}" | sed 's/,/ /g')" + + _W_supported_overrides="dxgi d3d9 d3d10core d3d10 d3d11" + _W_invalid_overrides="$(echo "${_W_dll_overrides}" | awk -vvalid_overrides_regex="$(echo "${_W_supported_overrides}" | sed 's/ /|/g')" '{ gsub(valid_overrides_regex,""); sub("[ ]*",""); print $0 }')" + if [ "${_W_invalid_overrides}" != "" ]; then + w_die "parameter (4) unsupported dll override: '${_W_invalid_overrides}' ; supported dll overrides: ${_W_supported_overrides}" + fi + + _W_dll_overrides="$(echo "${_W_dll_overrides}" | sed 's/d3d10 /&d3d10_1 /')" + + case "${_W_package_archive}" in + d9vk*) + # dvk9 repository, for d3d9/d3d10/d3d11 support + _W_repository="Joshua-Ashton/d9vk" + ;; + dxvk*) + # dxvk repository, for d3d9/d3d10/d3d11 support + _W_repository="doitsujin/dxvk" + ;; + *) + w_die "parameter (1): unsupported package archive repository: '${_W_package_archive}'; supported: d9vk dxvk" + ;; + esac + + case "${_W_package_archive}" in + *master*) + _W_package_dir="build/dxvk-release" + _W_package_version="master" + w_warn "Using master ${_W_repository} build" + ;; + *) + _W_package_dir="${_W_package_archive%.tar.gz}" + _W_package_version="${_W_package_dir#*-}" + w_warn "Please refer to ${_W_repository#*/} version ${_W_package_version} release notes... See: https://github.com/${_W_repository}/releases/tag/${_W_package_version}" + ;; + esac + w_warn "Please refer to current dxvk base graphics driver requirements... See: https://github.com/doitsujin/dxvk/wiki/Driver-support" + + if ! w_wine_version_in ",${_W_min_wine_version}" ; then + # shellcheck disable=SC2140 + w_warn "${_W_repository#*/} ${_W_package_version} does not support wine version ${_wine_version_stripped} . "\ + "${_W_repository#*/} ${_W_package_version} requires wine version ${_W_min_wine_version} (or newer). "\ + "Vulkan ${_W_min_vulkan_version} API (or newer) support is recommended." + fi + + if [ "${_W_package_archive##*.}" = "zip" ]; then + w_try_unzip "$W_TMP" "${W_CACHE}/${W_PACKAGE}/${_W_package_archive}" + else + w_try_cd "${W_TMP}" + w_try tar -zxf "${W_CACHE}/${W_PACKAGE}/${_W_package_archive}" + fi + + for _W_dll in ${_W_dll_overrides}; do + w_try mv "${W_TMP}/${_W_package_dir}/x32/${_W_dll}.dll" "${W_SYSTEM32_DLLS}/" + [ "${_W_dll}" = "d3d9" ] && _W_d3d9_support="1" + done + if test "${W_ARCH}" = "win64"; then + for _W_dll in ${_W_dll_overrides}; do + w_try mv "${W_TMP}/${_W_package_dir}/x64/${_W_dll}.dll" "${W_SYSTEM64_DLLS}/" + done + fi + # shellcheck disable=SC2086 + w_override_dlls native ${_W_dll_overrides} + if [ -n "${_W_d3d9_support}" ]; then + w_call d3dcompiler_43 + w_call d3dx9 + fi + + unset _W_d3d9_support _W_dll _W_dll_overrides _W_invalid_overrides _W_min_vulkan_version _W_min_wine_version \ + _W_package_archive _W_package_dir _W_package_version \ + _W_repository _W_supported_overrides +} + + +#---------------------------------------------------------------- + +w_metadata d9vk010 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.10)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.10.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk010() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.10/d9vk-0.10.tar.gz" 9e50f2609aafaa7dd24c327f6af83c821c2259ca4967656029782faa71398ae2 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata d9vk011 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.11)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.11.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk011() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.11/d9vk-0.11.tar.gz" fac8eab2a7de7af2404d4bac13ed24ff60c1cf36ba6b8ab7fc5f0d405f284e08 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata d9vk012 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.12)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.12.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk012() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.12/d9vk-0.12.tar.gz" 13a657cce7d7a03aace794ab52f0d09cb5aaf1c59a9c9971eae294fc50f39f41 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata d9vk013 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.13)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.13.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk013() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.13/d9vk-0.13.tar.gz" 53eeca60e94d3bbe5dbf57eaaf3d15746d4bca48a15968cf841ffdf68d999e59 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata d9vk013f dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.13f)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.13f.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk013f() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.13f/d9vk-0.13f.tar.gz" 7408ba54c4104b2a18ab4a4a575665f66e1517b46282724111d129bf127bfb8a + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata d9vk020 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.20)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.20.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk020() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.20/d9vk-0.20.tar.gz" bd53c17eafeffcf2251d3911b7814b92c8f7e4c6b7364217da38645093a1db35 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata d9vk021 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.21)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.21.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk021() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.21/d9vk-0.21.tar.gz" e58d11733b6471718b4652e5be66bfd1a4d908d0ddf96be0ecb9efb2fb748055 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata d9vk022 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.22)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.22.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk022() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.22/d9vk-0.22.tar.gz" 45d2b5d20cd6d96a43673b999814d3d9d3e64360a514757df3ef49b9a28ae65a + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata d9vk030 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.30)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.30.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk030() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.30/d9vk-0.30.tar.gz" 9654b888665184bf795aa33a0c7287d04666ebe21e56e53df0f6c331fde24927 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata d9vk040 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.40.1)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + file1="d9vk-0.40.1.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk040() +{ + # https://github.com/Joshua-Ashton/d9vk + w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/0.40.1/d9vk-0.40.1.tar.gz" 6bfcf05d68207b140dbfaa938f8e3807d938466682b531d6daa36b22fa0a6d03 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +#---------------------------------------------------------------- + +w_metadata d9vk dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (latest)" \ + publisher="Joshua Ashton" \ + year="2019" \ + media="download" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_d9vk() +{ + # https://github.com/Joshua-Ashton/d9vk + _W_d9vk_version="$(w_get_github_latest_prerelease Joshua-Ashton d9vk)" + _W_d9vk_version="${_W_d9vk_version#v}" + w_linkcheck_ignore=1 w_download "https://github.com/Joshua-Ashton/d9vk/releases/download/${_W_d9vk_version}/d9vk-${_W_d9vk_version}.tar.gz" + helper_dxvk_d9vk "d9vk-${_W_d9vk_version}.tar.gz" "4.5" "1.1.104" "dxgi,d3d9,d3d10core,d3d10,d3d11" + unset _W_d9vk_version +} + + +#---------------------------------------------------------------- + +w_metadata dxvk054 dlls \ title="Vulkan-based D3D11 implementation for Linux / Wine (0.54)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.54.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file2="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk54() +load_dxvk054() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.54/dxvk-0.54.tar.gz" 1c2f186baaa01d2de7b832f6f05021bdd29eccb65fc197c8b15adfd4e08f9640 - helper_dxvk "$file1" "d3d10_disabled" "3.6" + helper_dxvk_d9vk "$file1" "3.10" "1.1.72" "dxgi,d3d11" } -#---------------------------------------------------------------- - -w_metadata dxvk60 dlls \ +w_metadata dxvk060 dlls \ title="Vulkan-based D3D11 implementation for Linux / Wine (0.60)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.60.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file2="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk60() +load_dxvk060() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.60/dxvk-0.60.tar.gz" 27d6f700241d3ec3b6c002c3d739bb0e3f210ec916ecb5a62d9204e9e50f2c4a - helper_dxvk "$file1" "d3d10_disabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.10" "1.1.72" "dxgi,d3d11" } -#---------------------------------------------------------------- - -w_metadata dxvk61 dlls \ +w_metadata dxvk061 dlls \ title="Vulkan-based D3D11 implementation for Linux / Wine (0.61)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.61.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file2="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk61() +load_dxvk061() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.61/dxvk-0.61.tar.gz" d04388f026dc0d8b276b08f7db74fb3556cbbc8f762401eb5ef52629ee39ded1 - helper_dxvk "$file1" "d3d10_disabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.10" "1.1.72" "dxgi,d3d11" } -#---------------------------------------------------------------- - -w_metadata dxvk62 dlls \ +w_metadata dxvk062 dlls \ title="Vulkan-based D3D11 implementation for Linux / Wine (0.62)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.62.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file2="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk62() +load_dxvk062() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.62/dxvk-0.62.tar.gz" b9dbb57908e24b094b68f665ad729b6ee277eecc8ba04a6e6e4f8a4d2dfd94e3 - helper_dxvk "$file1" "d3d10_disabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.10" "1.1.72" "dxgi,d3d11" } -w_metadata dxvk63 dlls \ +w_metadata dxvk063 dlls \ title="Vulkan-based D3D11 implementation for Linux / Wine (0.63)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.63.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file2="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk63() +load_dxvk063() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.63/dxvk-0.63.tar.gz" 696df816bd9640770dee14f932bc641a16261fccf76be7c28d812a64ca6040fa - helper_dxvk "$file1" "d3d10_disabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.18" "1.1.80" "dxgi,d3d11" } -w_metadata dxvk64 dlls \ +w_metadata dxvk064 dlls \ title="Vulkan-based D3D11 implementation for Linux / Wine (0.64)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.64.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file2="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk64() +load_dxvk064() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.64/dxvk-0.64.tar.gz" 2e03e40ff0a9d36f96a06137f3fa9110ebaea230d0bf6c22cf6399e16e97fb9c - helper_dxvk "$file1" "d3d10_disabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.18" "1.1.80" "dxgi,d3d11" } -w_metadata dxvk65 dlls \ +w_metadata dxvk065 dlls \ title="Vulkan-based D3D11 implementation for Linux / Wine (0.65)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.65.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file2="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk65() +load_dxvk065() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.65/dxvk-0.65.tar.gz" 7b4eb42e693f925d0aff90bae261b20c50428602382ee94a3e3860b2ad1ebad0 - helper_dxvk "$file1" "d3d10_disabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.18" "1.1.80" "dxgi,d3d11" } -w_metadata dxvk70 dlls \ +w_metadata dxvk070 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.70)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.70.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7011,17 +7369,17 @@ w_metadata dxvk70 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk70() +load_dxvk070() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.70/dxvk-0.70.tar.gz" 310546d530be494a35cae49b707fef4b073269d811aac25bdf72899ed1df4e9f - helper_dxvk "$file1" "d3d10_enabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.18" "1.1.80" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk71 dlls \ +w_metadata dxvk071 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.71)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.71.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7030,17 +7388,17 @@ w_metadata dxvk71 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk71() +load_dxvk071() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.71/dxvk-0.71.tar.gz" fbe66337d1450f366961a7699253cd7a96c12a88c2fcda64b79be1cbb13d37d5 - helper_dxvk "$file1" "d3d10_enabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.18" "1.1.80" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk72 dlls \ +w_metadata dxvk072 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.72)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.72.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7049,17 +7407,17 @@ w_metadata dxvk72 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk72() +load_dxvk072() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.72/dxvk-0.72.tar.gz" bc84f48f99cf5add3c8919a43d7a9c0bf208c994dc58326a636b56b8db650c52 - helper_dxvk "$file1" "d3d10_enabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.18" "1.1.84" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk80 dlls \ +w_metadata dxvk080 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.80)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.80.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7068,20 +7426,20 @@ w_metadata dxvk80 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk80() +load_dxvk080() { # https://github.com/doitsujin/dxvk - # 2018/09/23: f9e736cdbf1e83e45ca748652a94a3a189fc5accde1eac549b2ba5af8f7acacb - # 2018/11/17: 7058a834bb006cad5462933110449b434df561e67d83f68d3965ecc74e2e1cbc + # 2017/09/23: f9e736cdbf1e83e45ca748652a94a3a189fc5accde1eac549b2ba5af8f7acacb + # 2017/11/17: 7058a834bb006cad5462933110449b434df561e67d83f68d3965ecc74e2e1cbc # See: https://github.com/doitsujin/dxvk/issues/773 w_download "https://github.com/doitsujin/dxvk/releases/download/v0.80/dxvk-0.80.tar.gz" 7058a834bb006cad5462933110449b434df561e67d83f68d3965ecc74e2e1cbc - helper_dxvk "$file1" "d3d10_enabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.18" "1.1.84" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk81 dlls \ +w_metadata dxvk081 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.81)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.81.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7090,17 +7448,17 @@ w_metadata dxvk81 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk81() +load_dxvk081() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.81/dxvk-0.81.tar.gz" 9bf6eda9ae4ee74b509e07dfe9cc003dfa4bba192b519dacdd542a57f6a43869 - helper_dxvk "$file1" "d3d10_enabled" "3.10" "1.0.76" + helper_dxvk_d9vk "$file1" "3.18" "1.1.84" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk90 dlls \ +w_metadata dxvk090 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.90)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.90.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7109,17 +7467,17 @@ w_metadata dxvk90 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk90() +load_dxvk090() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.90/dxvk-0.90.tar.gz" 15bce7b282065054ff9233b33738bf1d2c74b16829361cbd6843bc2f5dfe4509 - helper_dxvk "$file1" "d3d10_enabled" "3.19" "1.1.88" + helper_dxvk_d9vk "$file1" "3.19" "1.1.87" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk91 dlls \ +w_metadata dxvk091 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.91)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.91.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7128,17 +7486,17 @@ w_metadata dxvk91 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk91() +load_dxvk091() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.91/dxvk-0.91.tar.gz" 5296106ac3a8c631d7f26fa46dbff4be1332cda14fa493fd89ccf97e050c4855 - helper_dxvk "$file1" "d3d10_enabled" "3.19" "1.1.88" + helper_dxvk_d9vk "$file1" "3.19" "1.1.87" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk92 dlls \ +w_metadata dxvk092 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.92)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.92.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7147,17 +7505,17 @@ w_metadata dxvk92 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk92() +load_dxvk092() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.92/dxvk-0.92.tar.gz" e22c0ae4693aac88562c7a9a97b3316e086b9048c9f8f9e128923ac1611a5c49 - helper_dxvk "$file1" "d3d10_enabled" "3.19" "1.1.88" + helper_dxvk_d9vk "$file1" "3.19" "1.1.87" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk93 dlls \ +w_metadata dxvk093 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.93)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.93.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7166,17 +7524,17 @@ w_metadata dxvk93 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk93() +load_dxvk093() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.93/dxvk-0.93.tar.gz" 4d964e4e10e67ba7705312496e472ae9859520a78d8742d6d377886318c95e53 - helper_dxvk "$file1" "d3d10_enabled" "3.19" "1.1.88" + helper_dxvk_d9vk "$file1" "4.0" "1.1.93" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk94 dlls \ +w_metadata dxvk094 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.94)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.94.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7185,17 +7543,17 @@ w_metadata dxvk94 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk94() +load_dxvk094() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.94/dxvk-0.94.tar.gz" 1f06bfac5b435b62b972806fb3bbd86f7ccae2399b4451e85ae414e03d3712a3 - helper_dxvk "$file1" "d3d10_enabled" "3.19" "1.1.88" + helper_dxvk_d9vk "$file1" "4.0" "1.1.93" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk95 dlls \ +w_metadata dxvk095 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.95)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.95.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7204,17 +7562,17 @@ w_metadata dxvk95 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk95() +load_dxvk095() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.95/dxvk-0.95.tar.gz" 1eea48149f6e94c3c74ecddd92df4f9daa67ab28d0fca548bde5cd40f0e486bf - helper_dxvk "$file1" "d3d10_enabled" "3.19" "1.1.88" + helper_dxvk_d9vk "$file1" "4.0" "1.1.93" "dxgi,d3d10core,d3d10,d3d11" } -w_metadata dxvk96 dlls \ +w_metadata dxvk096 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (0.96)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-0.96.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7223,17 +7581,17 @@ w_metadata dxvk96 dlls \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" -load_dxvk96() +load_dxvk096() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v0.96/dxvk-0.96.tar.gz" 9d054c1e7a4f59825c651b14d3cfbf0d8c724763f485b3d59c89f1d7194b2206 - helper_dxvk "$file1" "d3d10_enabled" "3.19" "1.1.88" + helper_dxvk_d9vk "$file1" "4.0" "1.1.93" "dxgi,d3d10core,d3d10,d3d11" } w_metadata dxvk100 dlls \ title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.0)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ file1="dxvk-1.0.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ @@ -7246,32 +7604,609 @@ load_dxvk100() { # https://github.com/doitsujin/dxvk w_download "https://github.com/doitsujin/dxvk/releases/download/v1.0/dxvk-1.0.tar.gz" 8c8d26544609532201c10e6f5309bf5e913b5ca5b985932928ef9ab238de6dc2 - helper_dxvk "$file1" "d3d10_enabled" "3.19" "1.1.88" + helper_dxvk_d9vk "$file1" "4.5" "1.1.101" "dxgi,d3d10core,d3d10,d3d11" } - -#---------------------------------------------------------------- - -w_metadata dxvk dlls \ - title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (latest)" \ +w_metadata dxvk101 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.0.1)" \ publisher="Philip Rebohle" \ - year="2018" \ + year="2017" \ media="download" \ + file1="dxvk-1.0.1.tar.gz" \ installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" +load_dxvk101() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.0.1/dxvk-1.0.1.tar.gz" 739847cdd14b302dac600c66bc6617d7814945df6d4d7b6c91fecfa910e3b1b1 + helper_dxvk_d9vk "$file1" "4.5" "1.1.101" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk102 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.0.2)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.0.2.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk102() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.0.2/dxvk-1.0.2.tar.gz" f9504b188488d1102cba7e82c28681708f39e151af1c1ef7ebeac82d729c01ac + helper_dxvk_d9vk "$file1" "4.5" "1.1.101" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk103 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.0.3)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.0.3.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk103() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.0.3/dxvk-1.0.3.tar.gz" 984d28ab3a112be207d6339da19113d1117e56731ed413d0e202e6fd1391a6ae + helper_dxvk_d9vk "$file1" "4.5" "1.1.101" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk111 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.1.1)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.1.1.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk111() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.1.1/dxvk-1.1.1.tar.gz" 346c523953f72ac5885071c4384039faf01f6f43a88d5b0c12d94bfaa9598c1d + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk120 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.2)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.2.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk120() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.2/dxvk-1.2.tar.gz" 414751a810143ced34d1f4f0eb2a40e79b4c9726318994b244b70d1b3a6f8b32 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk121 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.2.1)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.2.1.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk121() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.2.1/dxvk-1.2.1.tar.gz" 192beca0a34d13f101e9c2545d9533cf84830a23b566bed185c022ed754c3daa + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk122 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.2.2)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.2.2.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk122() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.2.2/dxvk-1.2.2.tar.gz" dfe620a387222dc117a6722171e0bca400755a3e1c6459350c710dfda40b6701 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk123 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.2.3)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.2.3.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk123() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.2.3/dxvk-1.2.3.tar.gz" 29ce345b3d962dbd8ec8bfda190635a21f62124e3e46f06e89aa2f3b1e230321 + helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk130 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.3.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk130() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3/dxvk-1.3.tar.gz" d15fac6503ea614986237052d554d7cbd2dbf5f3486feb6217e64bae83cfc2cf + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk131 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.1)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.3.1.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk131() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3.1/dxvk-1.3.1.tar.gz" 2f6636dbd591ea9de20b30a33c9c8c0985a4939f6503f90ca5c7edafd01524a3 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk132 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.2)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.3.2.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk132() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3.2/dxvk-1.3.2.tar.gz" aa70890a17b48be27648d15cb837b5167c99f75ee32ae0c94a85ec1f1fdc4675 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk133 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.3)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.3.3.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk133() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3.3/dxvk-1.3.3.tar.gz" 828171ad1dbb6b51f367fa46cf33f8db4a0b1b990cd2e95654d6a65500d230b7 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk134 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.4)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.3.4.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk134() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3.4/dxvk-1.3.4.tar.gz" 4683e2ad4221b16572b0d939da5a05ab9a16b2b62c2f4e0c8bf3b2cdb27918ff + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk140 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.4.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk140() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.4/dxvk-1.4.tar.gz" bf22785de1ce728bbdcfb4615035924112b4718049ca2cade5861b03735181de + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk141 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.1)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.4.1.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk141() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.4.1/dxvk-1.4.1.tar.gz" 574ec4dc5201e45d70472228f0c6695426f0392503ec7a47d6092600aac53a07 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk142 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.2)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.4.2.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk142() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.4.2/dxvk-1.4.2.tar.gz" 5adfd71ee0299798af4402f09f113f88929af429b6889af334cff5b84b84dbe6 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk143 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.3)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.4.3.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk143() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.4.3/dxvk-1.4.3.tar.gz" e4b9e7fc8faf2dd1ddf5206e14939a822034a85778d54a6950767d68909726f7 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk144 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.4)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.4.4.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk144() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.4.4/dxvk-1.4.4.tar.gz" a845285c8dfc63c7d00c14520b58fc6048796fef69fea49617edb46662a0ba31 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk145 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.5)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.4.5.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk145() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.4.5/dxvk-1.4.5.tar.gz" 566c93dce84c3c2f39938428ddcca27a5bb2f5068eb4f868ff2126389b965cd1 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk146 dlls \ + title="Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.6)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.4.6.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk146() +{ + # https://github.com/doitsujin/dxvk + # Original sha256sum: 1aa069f5ea7d3d6e374bda332d12f9207f1a21e9811c4d4d82487416420ee73e + # Upstream later rebuilt with commit 1ae7d4b30283d2eb06b467c581aafdbbd9d36cdf: c9e3a96d8c5e693e20f69f27ac3f8b55198449fddd24205195476d6af7e8a339 + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.4.6/dxvk-1.4.6.tar.gz" c9e3a96d8c5e693e20f69f27ac3f8b55198449fddd24205195476d6af7e8a339 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk150 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.5.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk150() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.5/dxvk-1.5.tar.gz" 90cfae0bb43fed1e46442d20e2ab3bf448ebdff1e9f4f59841dc922aa3a36d3b + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk151 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5.1)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.5.1.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk151() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.5.1/dxvk-1.5.1.tar.gz" 474ce9995edd47a3bd347a8f3263f35cf8df2676f5b16668bf38efa298d75c01 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk152 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5.2)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.5.2.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk152() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.5.2/dxvk-1.5.2.tar.gz" 684ba886b5ed922c2417753d8178f923c695258c69cc8f778bb59b99bbf62477 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk153 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5.3)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.5.3.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk153() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.5.3/dxvk-1.5.3.tar.gz" b845c9c492e32648dee44d058c189eff8534e5490a80a3b2a921248bc72e33bd + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk154 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5.4)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.5.4.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk154() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.5.4/dxvk-1.5.4.tar.gz" 8e4fd15525def9bcaa9cc1b4496f76a2664ba4806b02a5ac0eddd703d7bbdea7 + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk155 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5.5)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.5.5.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d10.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10_1.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file5="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk155() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.5.5/dxvk-1.5.5.tar.gz" f4c57274ac85d71b192e2a0ac095f285e26cc054c87c6c34c081f919147539eb + helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d9,d3d10core,d3d10,d3d11" +} + +w_metadata dxvk160 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.6)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.6.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk160() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.6/dxvk-1.6.tar.gz" a493e0802e02629244672c44ad92c40fa0813b38908677ae14ee07feefcf7227 + helper_dxvk_d9vk "$file1" "5.3" "1.1.113" "dxgi,d3d9,d3d10core,d3d11" +} + +w_metadata dxvk161 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.6.1)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.6.1.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk161() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.6.1/dxvk-1.6.1.tar.gz" cdef8735313ed9ccb7af23b37bcceaad54553e29505c269246d5e347f1359136 + helper_dxvk_d9vk "$file1" "5.3" "1.1.113" "dxgi,d3d9,d3d10core,d3d11" +} + +w_metadata dxvk170 dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.7)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk-1.7.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk170() +{ + # https://github.com/doitsujin/dxvk + w_download "https://github.com/doitsujin/dxvk/releases/download/v1.7/dxvk-1.7.tar.gz" 67d78239906c24bd50a5ecbc2fd792c1721e274a7a60dd22f74b21b08ca4c7a1 + helper_dxvk_d9vk "$file1" "5.8" "1.2.140" "dxgi,d3d9,d3d10core,d3d11" +} + +#---------------------------------------------------------------- + +w_metadata dxvk dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (latest)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + load_dxvk() { # https://github.com/doitsujin/dxvk - # There's no stable exe URL, but they do provide a RELEASE file that lets us build one: - w_download_to "${W_TMP_EARLY}" "https://raw.githubusercontent.com/doitsujin/dxvk/master/RELEASE" - dxvk_version="$(cat "${W_TMP_EARLY}/RELEASE")" - w_linkcheck_ignore=1 w_download "https://github.com/doitsujin/dxvk/releases/download/v${dxvk_version}/dxvk-${dxvk_version}.tar.gz" - helper_dxvk "dxvk-${dxvk_version}.tar.gz" "d3d10_enabled" "3.19" "1.1.88" - unset dxvk_version + _W_dxvk_version="$(w_get_github_latest_release doitsujin dxvk)" + _W_dxvk_version="${_W_dxvk_version#v}" + w_linkcheck_ignore=1 w_download "https://github.com/doitsujin/dxvk/releases/download/v${_W_dxvk_version}/dxvk-${_W_dxvk_version}.tar.gz" + helper_dxvk_d9vk "dxvk-${_W_dxvk_version}.tar.gz" "5.8" "1.2.140" "dxgi,d3d9,d3d10core,d3d11" + unset _W_dxvk_version +} + +#---------------------------------------------------------------- + +w_metadata dxvk_master dlls \ + title="Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (master)" \ + publisher="Philip Rebohle" \ + year="2017" \ + media="download" \ + file1="dxvk_master.zip" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/d3d10core.dll" \ + installed_file3="$W_SYSTEM32_DLLS_WIN/d3d11.dll" \ + installed_file4="$W_SYSTEM32_DLLS_WIN/dxgi.dll" + +load_dxvk_master() +{ + # https://git.froggi.es/doitsujin/dxvk + # FIXME: Delete cached file, when verb is forced. Gitlab artifacts do not supply any version/commit hash information. + if test "$WINETRICKS_FORCE" = 1 && test -f "${W_CACHE}/${W_PACKAGE}/${file1}"; then + w_try rm -f "${W_CACHE}/${W_PACKAGE}/${file1}" + fi + w_linkcheck_ignore=1 w_download_to "${W_CACHE}/${W_PACKAGE}" "https://git.froggi.es/doitsujin/dxvk/-/jobs/artifacts/master/download?job=dxvk" "" "dxvk_master.zip" + helper_dxvk_d9vk "$file1" "5.8" "1.2.140" "dxgi,d3d9,d3d10core,d3d11" } #---------------------------------------------------------------- @@ -7311,9 +8246,8 @@ load_dmband() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmband.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dmband.dll - w_override_dlls native dmband + w_try_regsvr dmband.dll } #---------------------------------------------------------------- @@ -7333,9 +8267,8 @@ load_dmcompos() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmcompos.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dmcompos.dll - w_override_dlls native dmcompos + w_try_regsvr dmcompos.dll } #---------------------------------------------------------------- @@ -7355,9 +8288,8 @@ load_dmime() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmime.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dmime.dll - w_override_dlls native dmime + w_try_regsvr dmime.dll } #---------------------------------------------------------------- @@ -7377,9 +8309,8 @@ load_dmloader() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmloader.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dmloader.dll - w_override_dlls native dmloader + w_try_regsvr dmloader.dll } #---------------------------------------------------------------- @@ -7399,9 +8330,8 @@ load_dmscript() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmscript.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dmscript.dll - w_override_dlls native dmscript + w_try_regsvr dmscript.dll } #---------------------------------------------------------------- @@ -7421,9 +8351,8 @@ load_dmstyle() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmstyle.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dmstyle.dll - w_override_dlls native dmstyle + w_try_regsvr dmstyle.dll } #---------------------------------------------------------------- @@ -7443,9 +8372,8 @@ load_dmsynth() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmsynth.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dmsynth.dll - w_override_dlls native dmsynth + w_try_regsvr dmsynth.dll } #---------------------------------------------------------------- @@ -7465,9 +8393,8 @@ load_dmusic() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmusic.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dmusic.dll - w_override_dlls native dmusic + w_try_regsvr dmusic.dll } #---------------------------------------------------------------- @@ -7487,9 +8414,8 @@ load_dswave() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dswave.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dswave.dll - w_override_dlls native dswave + w_try_regsvr dswave.dll } #---------------------------------------------------------------- @@ -7499,7 +8425,7 @@ w_metadata dotnet11 dlls \ publisher="Microsoft" \ year="2003" \ media="download" \ - conflicts="dotnet20 dotnet20sdk dotnet20sp1 dotnet20sp2 dotnet30 dotnet30sp1 dotnet35 dotnet35sp1 vjrun20" \ + conflicts="dotnet20sdk" \ file1="dotnetfx.exe" \ installed_file1="c:/windows/Microsoft.NET/Framework/v1.1.4322/ndpsetup.ico" @@ -7515,9 +8441,9 @@ load_dotnet11() w_call corefonts w_call fontfix - w_try w_try_cd "$W_CACHE/$W_PACKAGE" + w_try_cd "$W_CACHE/$W_PACKAGE" # Use builtin regsvcs.exe to work around https://bugs.winehq.org/show_bug.cgi?id=25120 - if test $W_OPT_UNATTENDED; then + if [ -n "$W_OPT_UNATTENDED" ]; then WINEDLLOVERRIDES="regsvcs.exe=b" w_ahk_do " SetTitleMatchMode, 2 run, dotnetfx.exe /q /C:\"install /q\" @@ -7542,6 +8468,8 @@ load_dotnet11() WINEDLLOVERRIDES="regsvcs.exe=b" w_try "$WINE" dotnetfx.exe fi + w_override_dlls native mscorwks + W_NGEN_CMD="w_try $WINE $W_DRIVE_C/windows/Microsoft.NET/Framework/v1.1.4322/ngen.exe executequeueditems" } @@ -7570,9 +8498,9 @@ load_dotnet11sp1() w_call remove_mono w_call dotnet11 - w_try w_try_cd "$W_CACHE/$W_PACKAGE" + w_try_cd "$W_CACHE/$W_PACKAGE" # Use builtin regsvcs.exe to work around https://bugs.winehq.org/show_bug.cgi?id=25120 - if test $W_OPT_UNATTENDED; then + if [ -n "$W_OPT_UNATTENDED" ]; then WINEDLLOVERRIDES="regsvcs.exe=b" w_ahk_do " SetTitleMatchMode, 2 run, NDP1.1sp1-KB867460-X86.exe /q /C:"install /q" @@ -7597,6 +8525,8 @@ load_dotnet11sp1() WINEDLLOVERRIDES="regsvcs.exe=b" w_try "$WINE" "$W_CACHE"/dotnet11sp1/NDP1.1sp1-KB867460-X86.exe fi + w_override_dlls native mscorwks + W_NGEN_CMD="w_try $WINE $W_DRIVE_C/windows/Microsoft.NET/Framework/v1.1.4322/ngen.exe executequeueditems" } @@ -7612,7 +8542,7 @@ w_metadata dotnet20 dlls \ publisher="Microsoft" \ year="2006" \ media="download" \ - conflicts="dotnet11" \ + conflicts="dotnet20sp1 dotnet20sp2 dotnet30sp1 dotnet35" \ file1="dotnetfx.exe" \ installed_file1="c:/windows/Microsoft.NET/Framework/v2.0.50727/MSBuild.exe" @@ -7628,9 +8558,37 @@ load_dotnet20() # Needed for https://bugs.winehq.org/show_bug.cgi?id=12401 w_set_winver win2k - w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" dotnetfx.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} - w_unset_winver + # if dotnet11 if installed there is a warning dialog, but it still verifies + # dotnet11 doesn't work on 64-bit, so no need to run there + w_try_cd "$W_CACHE/$W_PACKAGE" + if [ -n "${W_OPT_UNATTENDED}" ]; then + w_ahk_do " + SetTitleMatchMode, 2 + ; FIXME: this isn't silent? + run, dotnetfx.exe /q /c:\"install.exe /q\" + + Loop + { + sleep 1000 + ifwinexist, .NET Framework Initialization Error + { + WinClose, .NET Framework Initialization Error + continue + } + + Process, exist, dotnetfx.exe + dotnet_pid = %ErrorLevel% + if dotnet_pid = 0 + { + break + } + } + " + else + w_try_ms_installer "$WINE" dotnetfx.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} + fi + + w_set_winver 'default' # We can't stop installing dotnet20 in win2k mode until Wine supports # reparse/junction points @@ -7647,6 +8605,8 @@ load_dotnet20() w_try "$WINE" NetFx64.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} fi + w_override_dlls native mscorwks + W_NGEN_CMD="w_try $WINE $W_DRIVE_C/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe executequeueditems" } @@ -7657,7 +8617,7 @@ verify_dotnet20() #---------------------------------------------------------------- -w_metadata dotnet20sdk dlls \ +w_metadata dotnet20sdk apps \ title="MS .NET 2.0 SDK" \ publisher="Microsoft" \ year="2006" \ @@ -7729,47 +8689,48 @@ load_dotnet20sdk() #---------------------------------------------------------------- w_metadata dotnet20sp1 dlls \ - title="MS .NET 2.0 SP1 (experimental)" \ + title="MS .NET 2.0 SP1" \ publisher="Microsoft" \ year="2008" \ media="download" \ - conflicts="dotnet11 dotnet20sp2 dotnet35sp1" \ + conflicts="dotnet20sp2" \ file1="NetFx20SP1_x86.exe" \ - installed_file1="c:/windows/winsxs/manifests/x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2.cat" + installed_file1="c:/windows/dotnet20sp1.installed.workaround" load_dotnet20sp1() { w_call remove_mono - WINEDLLOVERRIDES=ngen.exe,regsvcs.exe,mscorsvw.exe=b - export WINEDLLOVERRIDES + # Not sure when exactly it was fixed, but it works with 4.0+, and doesn't in 3.0 + # Given that 3.x is deprecated, not worth looking into. + # See https://github.com/Winetricks/winetricks/pull/1271 + # https://bugs.winehq.org/show_bug.cgi?id=47484, et al + if w_wine_version_in ,4.0 ; then + WINEDLLOVERRIDES="regsvcs.exe,mscorsvw.exe=b;$WINEDLLOVERRIDES" + export WINEDLLOVERRIDES + else + WINEDLLOVERRIDES="ngen.exe,regsvcs.exe,mscorsvw.exe=b;$WINEDLLOVERRIDES" + export WINEDLLOVERRIDES + fi if [ "$W_ARCH" = "win32" ]; then # https://www.microsoft.com/en-us/download/details.aspx?id=16614 w_download https://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe c36c3a1d074de32d53f371c665243196a7608652a2fc6be9520312d5ce560871 exe="NetFx20SP1_x86.exe" - w_warn "Setting windows version so installer works" + w_warn "Setting Windows version so installer works" w_set_winver win2k elif [ "$W_ARCH" = "win64" ]; then # https://www.microsoft.com/en-us/download/details.aspx?id=6041 w_download https://download.microsoft.com/download/9/8/6/98610406-c2b7-45a4-bdc3-9db1b1c5f7e2/NetFx20SP1_x64.exe 1731e53de5f48baae0963677257660df1329549e81c48b4d7db7f7f3f2329aab exe="NetFx20SP1_x64.exe" - w_warn "Setting windows version so installer works" + w_warn "Setting Windows version so installer works" w_set_winver winxp fi w_try_cd "$W_CACHE/$W_PACKAGE" - "$WINE" "$exe" ${W_OPT_UNATTENDED:+/q} - status=$? - - case $status in - 0) ;; - 105) echo "exit status $status - normal, user selected 'restart now'" ;; - 194) echo "exit status $status - normal, user selected 'restart later'" ;; - *) w_die "exit status $status - $W_PACKAGE installation failed" ;; - esac + w_try_ms_installer "$WINE" "$exe" ${W_OPT_UNATTENDED:+/q} if [ "$W_ARCH" = "win32" ]; then # We can't stop installing dotnet20sp1 in win2k mode until Wine supports @@ -7782,9 +8743,14 @@ load_dotnet20sp1() fi - w_unset_winver + w_set_winver 'default' W_NGEN_CMD="w_try $WINE $W_DRIVE_C/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe executequeueditems" + + w_override_dlls native mscorwks + + # Installs the same file(name)s as dotnet35sp1, let users install dotnet35sp1 after dotnet20sp1 + w_try touch "${W_WINDIR_UNIX}/dotnet20sp1.installed.workaround" } verify_dotnet20sp1() @@ -7795,7 +8761,7 @@ verify_dotnet20sp1() #---------------------------------------------------------------- w_metadata dotnet20sp2 dlls \ - title="MS .NET 2.0 SP2 (experimental)" \ + title="MS .NET 2.0 SP2" \ publisher="Microsoft" \ year="2009" \ media="download" \ @@ -7807,10 +8773,18 @@ load_dotnet20sp2() { w_call remove_mono - WINEDLLOVERRIDES=ngen.exe,regsvcs.exe,mscorsvw.exe=b - export WINEDLLOVERRIDES - - w_warn "Setting windows version so installer works" + # Not sure when exactly it was fixed, but it works with 4.0+, and doesn't in 3.0 + # Given that 3.x is deprecated, not worth looking into. + # See https://github.com/Winetricks/winetricks/pull/1271 + # https://bugs.winehq.org/show_bug.cgi?id=47484, et al + if w_wine_version_in ,4.0 ; then + WINEDLLOVERRIDES="regsvcs.exe,mscorsvw.exe=b;$WINEDLLOVERRIDES" + export WINEDLLOVERRIDES + else + WINEDLLOVERRIDES="ngen.exe,regsvcs.exe,mscorsvw.exe=b;$WINEDLLOVERRIDES" + export WINEDLLOVERRIDES + fi + w_warn "Setting Windows version so installer works" w_set_winver winxp if [ "$W_ARCH" = "win32" ]; then @@ -7824,15 +8798,7 @@ load_dotnet20sp2() fi w_try_cd "$W_CACHE/$W_PACKAGE" - "$WINE" "$exe" ${W_OPT_UNATTENDED:+ /q /c:"install.exe /q"} - status=$? - - case $status in - 0) ;; - 105) echo "exit status $status - normal, user selected 'restart now'" ;; - 194) echo "exit status $status - normal, user selected 'restart later'" ;; - *) w_die "exit status $status - $W_PACKAGE installation failed" ;; - esac + w_try_ms_installer "$WINE" "$exe" ${W_OPT_UNATTENDED:+ /q /c:"install.exe /q"} if [ "$W_ARCH" = "win32" ]; then # We can't stop installing dotnet20sp1 in win2k mode until Wine supports @@ -7844,7 +8810,8 @@ load_dotnet20sp2() rm -f "$W_SYSTEM32_DLLS"/msvc?80.dll fi - w_unset_winver + w_set_winver 'default' + w_override_dlls native mscorwks W_NGEN_CMD="w_try $WINE $W_DRIVE_C/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe executequeueditems" } @@ -7861,7 +8828,7 @@ w_metadata dotnet30 dlls \ publisher="Microsoft" \ year="2006" \ media="download" \ - conflicts="dotnet11 dotnet20sp1 dotnet20sp2 dotnet30sp1 dotnet35 dotnet35sp1 dotnet45 dotnet452" \ + conflicts="dotnet11 dotnet30sp1 dotnet35 dotnet35sp1" \ file1="dotnetfx3.exe" \ installed_file1="c:/windows/Microsoft.NET/Framework/v3.0/Microsoft .NET Framework 3.0/logo.bmp" @@ -7871,10 +8838,13 @@ load_dotnet30() w_package_unsupported_win64 # Originally at https://msdn.microsoft.com/en-us/netframework/bb264589.aspx - # No longer on microsoft.com, and archive.org is unreliablel. Choose amongst the oldest/most reliable looking from + # No longer on microsoft.com, and archive.org is unreliable. Choose amongst the oldest/most reliable looking from # http://www.filewatcher.com/m/dotnetfx3.exe.52770576-0.html # (and verify sha256sum, of course ;)) - w_download http://descargas.udenar.edu.co/Framework.net/dotnetfx3.exe 6cf8921e00f52bbd888aa7a520a7bac47e818e2a850bcc44494c64d6cbfafdac + # 2017/04/20: http://descargas.udenar.edu.co/Framework.net/dotnetfx3.exe + # 2019/08/18: ftp://support.danbit.dk/I/IPP15-C2D/Net%20Framework%203.0/dotnetfx3.exe + # 2020/04/12: couldn't find a working mirror, so back to archive.org for now: + w_download https://web.archive.org/web/20061130220825/http://download.microsoft.com/download/3/F/0/3F0A922C-F239-4B9B-9CB0-DF53621C57D9/dotnetfx3.exe 6cf8921e00f52bbd888aa7a520a7bac47e818e2a850bcc44494c64d6cbfafdac w_call remove_mono @@ -7898,9 +8868,7 @@ load_dotnet30() LANGPACKS_BASE_PATH="${W_WINDIR_UNIX}/SYSMSICache/Framework/v3.0" test -d "${LANGPACKS_BASE_PATH}" || mkdir -p "${LANGPACKS_BASE_PATH}" # shellcheck disable=SC1010 - for lang in ar cs da de el es fi fr he it jp ko nb nl pl pt-BR pt-PT ru \ - sv tr zh-CHS zh-CHT - do + for lang in ar cs da de el es fi fr he it jp ko nb nl pl pt-BR pt-PT ru sv tr zh-CHS zh-CHT; do ln -sf "${W_SYSTEM32_DLLS}/spupdsvc.exe" "${LANGPACKS_BASE_PATH}/dotnetfx3langpack${lang}.exe" done @@ -7910,12 +8878,24 @@ load_dotnet30() # OK if this fails, that just means you have an older Wine. "$WINE" sc delete "FontCache3.0.0.0" - WINEDLLOVERRIDES="ngen.exe,mscorsvw.exe=b;$WINEDLLOVERRIDES" + # Not sure when exactly it was fixed, but it works with 4.0+, and doesn't in 3.0 + # Given that 3.x is deprecated, not worth looking into. + # See https://github.com/Winetricks/winetricks/pull/1271 + # https://bugs.winehq.org/show_bug.cgi?id=47484, et al + if w_wine_version_in ,4.0 ; then + WINEDLLOVERRIDES="mscorsvw.exe=b;$WINEDLLOVERRIDES" + export WINEDLLOVERRIDES + else + WINEDLLOVERRIDES="ngen.exe,mscorsvw.exe=b;$WINEDLLOVERRIDES" + export WINEDLLOVERRIDES + fi 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_override_dlls native mscorwks + # Doesn't install any ngen.exe # W_NGEN_CMD="" } @@ -7932,7 +8912,7 @@ w_metadata dotnet30sp1 dlls \ publisher="Microsoft" \ year="2007" \ media="download" \ - conflicts="dotnet11 dotnet20sdk dotnet20sp1 dotnet20sp2" \ + conflicts="dotnet11 dotnet20sdk" \ file1="NetFx30SP1_x86.exe" \ installed_file1="c:/windows/system32/XpsFilt.dll" # we're cheating a bit here @@ -7941,6 +8921,12 @@ load_dotnet30sp1() # I can't find a 64-bit installer anywhere w_package_unsupported_win64 + w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=47436" 4.8 4.15 + w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=48277" 4.16 4.21 + + # And a third way, but only with mingw enabled in wine-4.12.1 through wine-4.14 + w_package_broken_mingw "https://bugs.winehq.org/show_bug.cgi?id=47484" 4.12.1 4.14 + # FIXME: URL? w_download https://download.microsoft.com/download/8/F/E/8FEEE89D-9E4F-4BA3-993E-0FFEA8E21E1B/NetFx30SP1_x86.exe 3100df4d4db3965ead9520c887a534115cf6fc7ba100abde45226958b865695b # Recipe from https://bugs.winehq.org/show_bug.cgi?id=25060#c10 @@ -7952,17 +8938,24 @@ load_dotnet30sp1() w_call dotnet20sp1 w_wineserver -w + if w_workaround_wine_bug 47436 "Installing native prntvpt" 4.11, ; then + w_call prntvpt + fi + w_try_cd "$W_CACHE/$W_PACKAGE" "$WINE" reg add "HKLM\\Software\\Microsoft\\Net Framework Setup\\NDP\\v3.0" /v Version /t REG_SZ /d "3.0" /f "$WINE" reg add "HKLM\\Software\\Microsoft-\\Net Framework Setup\\NDP\\v3.0" /v SP /t REG_DWORD /d 0001 /f - w_try "$WINE" msiexec /i "XPSEP XP and Server 2003 32 bit.msi" ${W_UNATTENDED_SLASH_QB} + w_set_winver winxp + + w_try "$WINE" msiexec /i "XPSEP XP and Server 2003 32 bit.msi" ${W_OPT_UNATTENDED:+/qb} "$WINE" sc delete FontCache3.0.0.0 - "$WINE" "$file1" ${W_OPT_UNATTENDED:+/q} - status=$? - w_info "$file1 exited with status $status" + w_try_ms_installer "$WINE" "$file1" ${W_OPT_UNATTENDED:+/q} + + w_override_dlls native mscorwks + w_set_winver 'default' # Doesn't install any ngen.exe # W_NGEN_CMD="" @@ -7980,7 +8973,7 @@ w_metadata dotnet35 dlls \ publisher="Microsoft" \ year="2007" \ media="download" \ - conflicts="dotnet11 dotnet20 dotnet20sdk dotnet20sp1 dotnet20sp2" \ + conflicts="dotnet11 dotnet20sdk dotnet20sp2 dotnet30" \ file1="dotnetfx35.exe" \ installed_file1="c:/windows/Microsoft.NET/Framework/v3.5/MSBuild.exe" @@ -8004,11 +8997,11 @@ load_dotnet35() w_set_winver winxp - w_override_dlls native mscoree + w_override_dlls native mscoree mscorwks w_wineserver -w w_try_cd "$W_CACHE/$W_PACKAGE" - "$WINE" "${file1}" /lang:ENU $W_UNATTENDED_SLASH_Q + w_try_ms_installer "$WINE" "${file1}" /lang:ENU ${W_OPT_UNATTENDED:+/q} # Doesn't install any ngen.exe # W_NGEN_CMD="" @@ -8026,7 +9019,7 @@ w_metadata dotnet35sp1 dlls \ publisher="Microsoft" \ year="2008" \ media="download" \ - conflicts="dotnet11 dotnet20sp1 dotnet20sp2" \ + conflicts="dotnet11 dotnet20sp1" \ file1="dotnetfx35.exe" \ installed_file1="c:/windows/Microsoft.NET/Framework/v3.5/msbuild.exe.config" @@ -8051,7 +9044,7 @@ load_dotnet35sp1() w_set_winver winxp w_try_cd "$W_CACHE/$W_PACKAGE" - "$WINE" dotnetfx35.exe /lang:ENU $W_UNATTENDED_SLASH_Q + w_try_ms_installer "$WINE" dotnetfx35.exe /lang:ENU ${W_OPT_UNATTENDED:+/q} # Doesn't install any ngen.exe # W_NGEN_CMD="" @@ -8082,8 +9075,8 @@ load_dotnet40() *) w_warn "dotnet40 does not yet fully work or install on wine. Caveat emptor." ;; esac - if [ "$W_ARCH" = "win64" ] && w_workaround_wine_bug 42701; then - w_warn "On 64-bit, you'll run into https://bugs.winehq.org/show_bug.cgi?id=42701 (missing api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll.RoGetParameterizedTypeInstanceIID" + if [ "$W_ARCH" = "win64" ]; then + w_workaround_wine_bug 42701 "On 64-bit, you'll run into https://bugs.winehq.org/show_bug.cgi?id=42701 (missing api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll.RoGetParameterizedTypeInstanceIID", 2.22 fi # https://www.microsoft.com/en-us/download/details.aspx?id=17718 @@ -8095,7 +9088,7 @@ load_dotnet40() w_try_cd "$W_CACHE/$W_PACKAGE" - WINEDLLOVERRIDES=fusion=b "$WINE" dotNetFx40_Full_x86_x64.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} || true + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" dotNetFx40_Full_x86_x64.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} w_override_dlls native mscoree @@ -8104,7 +9097,7 @@ load_dotnet40() W_NGEN_CMD="$WINE $WINEPREFIX/drive_c/windows/Microsoft.NET/Framework/v4.0.30319/ngen.exe executequeueditems" - w_unset_winver + w_set_winver 'default' } verify_dotnet40() @@ -8114,12 +9107,46 @@ verify_dotnet40() #---------------------------------------------------------------- +w_metadata dotnet40_kb2468871 dlls \ + title="MS .NET 4.0 KB2468871" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + conflicts="dotnet20sdk" \ + file1="NDP40-KB2468871-v2-x86.exe" + +load_dotnet40_kb2468871() +{ + w_call dotnet40 + + # Install KB2468871: + if [ "$W_ARCH" = "win32" ]; then + w_download https://download.microsoft.com/download/2/B/F/2BF4D7D1-E781-4EE0-9E4F-FDD44A2F8934/NDP40-KB2468871-v2-x86.exe 8822672fc864544e0766c80b635973bd9459d719b1af75f51483ff36cfb26f03 + w_try_7z "$W_TMP" "${W_CACHE}/${W_PACKAGE}/NDP40-KB2468871-v2-x86.exe" NDP40-KB2468871.msp + elif [ "$W_ARCH" = "win64" ]; then + w_download https://download.microsoft.com/download/2/B/F/2BF4D7D1-E781-4EE0-9E4F-FDD44A2F8934/NDP40-KB2468871-v2-x64.exe b1b53c3953377b111fe394dd57592d342cfc8a3261a5575253b211c1c2e48ff8 + w_try_7z "$W_TMP" "${W_CACHE}/${W_PACKAGE}/NDP40-KB2468871-v2-x64.exe" NDP40-KB2468871.msp + fi + + w_try_cd "$W_TMP" + w_try "$WINE" msiexec /p NDP40-KB2468871.msp + + w_set_winver 'default' +} + +verify_dotnet40_kb2468871() +{ + w_dotnet_verify dotnet40 +} + +#---------------------------------------------------------------- + w_metadata dotnet45 dlls \ title="MS .NET 4.5" \ publisher="Microsoft" \ year="2012" \ media="download" \ - conflicts="dotnet20 dotnet20sdk dotnet20sp1 dotnet20sp2 dotnet35sp1 dotnet40 vjrun20" \ + conflicts="dotnet20sdk" \ file1="dotnetfx45_full_x86_x64.exe" \ installed_file1="c:/windows/Microsoft.NET/Framework/v4.0.30319/Microsoft.Windows.ApplicationServer.Applications.45.man" @@ -8143,15 +9170,7 @@ load_dotnet45() w_try_cd "$W_CACHE/$W_PACKAGE" - WINEDLLOVERRIDES=fusion=b "$WINE" dotnetfx45_full_x86_x64.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} - status=$? - - case $status in - 0) ;; - 105) echo "exit status $status - normal, user selected 'restart now'" ;; - 194) echo "exit status $status - normal, user selected 'restart later'" ;; - *) w_die "exit status $status - $W_PACKAGE installation failed" ;; - esac + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" dotnetfx45_full_x86_x64.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} w_override_dlls native mscoree @@ -8171,8 +9190,8 @@ w_metadata dotnet452 dlls \ publisher="Microsoft" \ year="2012" \ media="download" \ - conflicts="dotnet20 dotnet20sdk dotnet20sp1 dotnet20sp2 dotnet35sp1 dotnet40 dotnet45 vjrun20" \ - file1="dotnetfx45_full_x86_x64.exe" \ + conflicts="dotnet20sdk dotnet46 dotnet462" \ + file1="NDP452-KB2901907-x86-x64-AllOS-ENU.exe" \ installed_file1="c:/windows/Microsoft.NET/Framework/v4.0.30319/Microsoft.Windows.ApplicationServer.Applications.45.man" load_dotnet452() @@ -8195,15 +9214,7 @@ load_dotnet452() w_try_cd "$W_CACHE/$W_PACKAGE" - WINEDLLOVERRIDES=fusion=b "$WINE" NDP452-KB2901907-x86-x64-AllOS-ENU.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} - status=$? - - case $status in - 0) ;; - 105) echo "exit status $status - normal, user selected 'restart now'" ;; - 194) echo "exit status $status - normal, user selected 'restart later'" ;; - *) w_die "exit status $status - $W_PACKAGE installation failed" ;; - esac + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" NDP452-KB2901907-x86-x64-AllOS-ENU.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} w_override_dlls native mscoree @@ -8224,7 +9235,7 @@ w_metadata dotnet46 dlls \ year="2015" \ media="download" \ file1="NDP46-KB3045557-x86-x64-AllOS-ENU.exe" \ - conflicts="dotnet20 dotnet20sdk dotnet20sp1 dotnet20sp2 dotnet35sp1 dotnet40 vjrun20" \ + conflicts="dotnet20sdk" \ installed_file1="c:/windows/Migration/WTR/netfx45_upgradecleanup.inf" load_dotnet46() @@ -8245,23 +9256,12 @@ load_dotnet46() w_warn "If you see heap timeouts like: 'err:ntdll:RtlpWaitForCriticalSection section 0x110060 \"heap.c: main process heap section\" wait timed out in thread 0064, blocked by 0000, retrying (60 sec)', try the patch from https://bugs.winehq.org/show_bug.cgi?id=42470" fi - if w_workaround_wine_bug 38959 ; then - echo "This installer will fail unless run in quiet mode." - echo "See: https://bugs.winehq.org/show_bug.cgi?id=38959" - - WINEDLLOVERRIDES=fusion=b "$WINE" "$file1" /q /c:"install.exe /q" - # Once bug is fixed, use: - #WINEDLLOVERRIDES=fusion=b "$WINE" "$file1" ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} - status=$? + if w_workaround_wine_bug 38959 "This installer will fail unless run in quiet mode. See: https://bugs.winehq.org/show_bug.cgi?id=38959" ,3.6; then + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" "$file1" /q /c:"install.exe /q" + else + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" "$file1" ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} fi - case $status in - 0) ;; - 105) echo "exit status $status - normal, user selected 'restart now'" ;; - 194) echo "exit status $status - normal, user selected 'restart later'" ;; - *) w_die "exit status $status - $W_PACKAGE installation failed" ;; - esac - w_override_dlls native mscoree } @@ -8278,7 +9278,7 @@ w_metadata dotnet461 dlls \ year="2015" \ media="download" \ file1="NDP461-KB3102436-x86-x64-AllOS-ENU.exe" \ - conflicts="dotnet20 dotnet20sdk dotnet20sp1 dotnet20sp2 dotnet35sp1 dotnet40 dotnet46 vjrun20" \ + conflicts="dotnet20sdk" \ installed_file1="c:/windows/dotnet461.installed.workaround" load_dotnet461() @@ -8295,17 +9295,7 @@ load_dotnet461() w_try_cd "$W_CACHE/$W_PACKAGE" - WINEDLLOVERRIDES=fusion=b "$WINE" "$file1" /sfxlang:1027 ${W_OPT_UNATTENDED:+/q /norestart} - status=$? - - echo "exit status: $status" - - case $status in - 0) ;; - 105) echo "exit status $status - normal, user selected 'restart now'" ;; - 194) echo "exit status $status - normal, user selected 'restart later'" ;; - *) w_die "exit status $status - $W_PACKAGE installation failed" ;; - esac + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" "$file1" /sfxlang:1027 ${W_OPT_UNATTENDED:+/q /norestart} w_override_dlls native mscoree @@ -8325,7 +9315,7 @@ w_metadata dotnet462 dlls \ publisher="Microsoft" \ year="2016" \ media="download" \ - conflicts="dotnet20 dotnet20sdk dotnet20sp1 dotnet20sp2 dotnet35sp1 dotnet40 dotnet46 dotnet461 vjrun20" \ + conflicts="dotnet20sdk" \ installed_file1="c:/windows/dotnet462.installed.workaround" load_dotnet462() @@ -8335,7 +9325,6 @@ load_dotnet462() # Official version. See https://www.microsoft.com/en-us/download/details.aspx?id=53344 w_download https://download.microsoft.com/download/F/9/4/F942F07D-F26F-4F30-B4E3-EBD54FABA377/NDP462-KB3151800-x86-x64-AllOS-ENU.exe 28886593e3b32f018241a4c0b745e564526dbb3295cb2635944e3a393f4278d4 file_package="NDP462-KB3151800-x86-x64-AllOS-ENU.exe" - unattended_args="/sfxlang:1027 /q /norestart" w_call remove_mono @@ -8344,18 +9333,7 @@ load_dotnet462() w_try_cd "$W_CACHE/$W_PACKAGE" - WINEDLLOVERRIDES=fusion=b "$WINE" "$file_package" ${W_OPT_UNATTENDED:+$unattended_args} - status=$? - - echo "exit status: $status" - - case $status in - 0) ;; - 105) echo "exit status $status - normal, user selected 'restart now'" ;; - 194) echo "exit status $status - normal, user selected 'restart later'" ;; - 5) w_die "exit status $status - user selected 'Cancel'" ;; - *) w_die "exit status $status - $W_PACKAGE installation failed" ;; - esac + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" "$file_package" ${W_OPT_UNATTENDED:+/sfxlang:1027 /q /norestart} w_override_dlls native mscoree @@ -8369,32 +9347,23 @@ verify_dotnet462() w_dotnet_verify dotnet462 } - #---------------------------------------------------------------- -w_metadata dotnet472 dlls \ - title="MS .NET 4.7.2" \ +w_metadata dotnet471 dlls \ + title="MS .NET 4.7.1" \ publisher="Microsoft" \ - year="2018" \ + year="2017" \ media="download" \ - conflicts="dotnet20 dotnet20sdk dotnet20sp1 dotnet20sp2 dotnet35sp1 dotnet40 dotnet46 dotnet461 dotnet462 vjrun20" \ - installed_file1="c:/windows/dotnet472.installed.workaround" + file1="NDP471-KB4033342-x86-x64-AllOS-ENU.exe" \ + conflicts="dotnet20sdk dotnet30sp1" \ + installed_file1="c:/windows/dotnet471.installed.workaround" -load_dotnet472() +load_dotnet471() { w_package_warn_win64 - if w_workaround_wine_bug 42170 "Running un-official repacked .NET 4.7.2 setup until the official version is fixed."; then - # Un-official slim version. See https://repacks.net/forum/viewtopic.php?t=7 - file_package="dotNetFx472_Full_x86_x64_Slim.exe" - w_download "https://drive.google.com/uc?export=download&id=1aLBCH0Yt2-6ROpWRBxZ01kqGMyhc_8hM&confirm" a36da041b8f46079f8e16647312d642953cde520f4a600ad5b3f4f90a23495a7 $file_package - unattended_args="/ai /gm2" - else - # Official version. See https://www.microsoft.com/en-us/download/details.aspx?id=53344 - w_download https://download.microsoft.com/download/6/E/4/6E48E8AB-DC00-419E-9704-06DD46E5F81D/NDP472-KB4054530-x86-x64-AllOS-ENU.exe c908f0a5bea4be282e35acba307d0061b71b8b66ca9894943d3cbb53cad019bc - file_package="NDP472-KB4054530-x86-x64-AllOS-ENU.exe" - unattended_args="/sfxlang:1027 /q /norestart" - fi + # https://www.microsoft.com/en-US/download/details.aspx?id=56116 + w_download https://download.microsoft.com/download/9/E/6/9E63300C-0941-4B45-A0EC-0008F96DD480/NDP471-KB4033342-x86-x64-AllOS-ENU.exe 63dc850df091f3f137b5d4392f47917f847f8926dc8af1da9bfba6422e495805 w_call remove_mono @@ -8403,18 +9372,44 @@ load_dotnet472() w_try_cd "$W_CACHE/$W_PACKAGE" - WINEDLLOVERRIDES=fusion=b "$WINE" "$file_package" ${W_OPT_UNATTENDED:+$unattended_args} - status=$? + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" "$file1" ${W_OPT_UNATTENDED:+/sfxlang:1027 /q /norestart} - echo "exit status: $status" + w_override_dlls native mscoree - case $status in - 0) ;; - 105) echo "exit status $status - normal, user selected 'restart now'" ;; - 194) echo "exit status $status - normal, user selected 'restart later'" ;; - 5) w_die "exit status $status - user selected 'Cancel'" ;; - *) w_die "exit status $status - $W_PACKAGE installation failed" ;; - esac + # Do not rely on temporary files. As a workaround, touch a file instead so that we know it's been installed for list-installed + w_try touch "${W_WINDIR_UNIX}/dotnet471.installed.workaround" +} + +verify_dotnet471() +{ + w_dotnet_verify dotnet471 +} + +#---------------------------------------------------------------- + +w_metadata dotnet472 dlls \ + title="MS .NET 4.7.2" \ + publisher="Microsoft" \ + year="2018" \ + media="download" \ + conflicts="dotnet20sdk" \ + installed_file1="c:/windows/dotnet472.installed.workaround" + +load_dotnet472() +{ + w_package_warn_win64 + + # Official version. See https://www.microsoft.com/en-us/download/details.aspx?id=53344 + w_download https://download.microsoft.com/download/6/E/4/6E48E8AB-DC00-419E-9704-06DD46E5F81D/NDP472-KB4054530-x86-x64-AllOS-ENU.exe c908f0a5bea4be282e35acba307d0061b71b8b66ca9894943d3cbb53cad019bc + + w_call remove_mono + + w_call dotnet462 + w_set_winver win7 + + w_try_cd "$W_CACHE/$W_PACKAGE" + + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" NDP472-KB4054530-x86-x64-AllOS-ENU.exe ${W_OPT_UNATTENDED:+/sfxlang:1027 /q /norestart} w_override_dlls native mscoree @@ -8429,6 +9424,69 @@ verify_dotnet472() #---------------------------------------------------------------- +w_metadata dotnet48 dlls \ + title="MS .NET 4.8" \ + publisher="Microsoft" \ + year="2019" \ + media="download" \ + file1="ndp48-x86-x64-allos-enu.exe" \ + conflicts="dotnet20sdk" \ + installed_file1="c:/windows/dotnet48.installed.workaround" + +load_dotnet48() +{ + w_package_warn_win64 + + # Official version. See https://dotnet.microsoft.com/download/dotnet-framework/net48 + w_download https://download.visualstudio.microsoft.com/download/pr/7afca223-55d2-470a-8edc-6a1739ae3252/abd170b4b0ec15ad0222a809b761a036/ndp48-x86-x64-allos-enu.exe 95889d6de3f2070c07790ad6cf2000d33d9a1bdfc6a381725ab82ab1c314fd53 + + w_call remove_mono + + w_call dotnet40 + w_set_winver win7 + + w_try_cd "$W_CACHE/$W_PACKAGE" + + WINEDLLOVERRIDES=fusion=b w_try_ms_installer "$WINE" "$file1" ${W_OPT_UNATTENDED:+/sfxlang:1027 /q /norestart} + + w_override_dlls native mscoree + + # Do not rely on temporary files. As a workaround, touch a file instead so that we know it's been installed for list-installed + w_try touch "${W_WINDIR_UNIX}/dotnet48.installed.workaround" +} + +verify_dotnet48() +{ + w_dotnet_verify dotnet48 +} + +#---------------------------------------------------------------- + +w_metadata dotnetcore2 dlls \ + title="MS .NET Core Runtime 2.1 LTS" \ + publisher="Microsoft" \ + year="2020" \ + media="download" \ + file1="dotnet-runtime-2.1.17-win-x86.exe" \ + installed_file1="$W_PROGRAMS_WIN/dotnet/dotnet.exe" + +load_dotnetcore2() +{ + # Official version, see https://dotnet.microsoft.com/download/dotnet-core/2.1 + w_download https://download.visualstudio.microsoft.com/download/pr/73a0ea97-57d6-4263-ac36-ea3a9b373bcf/cd5f7e08e749c1d3468cdae89e4518de/dotnet-runtime-2.1.17-win-x86.exe 706a7f0ad998c3c1b321e89e4bcd6304bef31c95c83eda119e8d4adccccbc915 + + 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/cd223083-8c0e-4963-9fcd-fcf01a55e56c/15500e764899442ed6e014687caa34e9/dotnet-runtime-2.1.17-win-x64.exe 5a065ae6f9e031399cb7084c6315ce977342dec069cd6386caed1c5b69d49260 + w_try "$WINE" "dotnet-runtime-2.1.17-win-x64.exe" ${W_OPT_UNATTENDED:+/quiet} + fi +} + +#---------------------------------------------------------------- + w_metadata dotnet_verifier dlls \ title="MS .NET Verifier" \ publisher="Microsoft" \ @@ -8487,6 +9545,7 @@ load_dxdiagn() { helper_win7sp1 x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.1.7601.17514_none_25cb021dbc0611db/dxdiagn.dll w_try cp "$W_TMP/x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.1.7601.17514_none_25cb021dbc0611db/dxdiagn.dll" "$W_SYSTEM32_DLLS/dxdiagn.dll" + w_override_dlls native,builtin dxdiagn w_try_regsvr dxdiagn.dll if [ "$W_ARCH" = "win64" ]; then @@ -8494,8 +9553,6 @@ load_dxdiagn() w_try cp "$W_TMP/amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.1.7601.17514_none_81e99da174638311/dxdiagn.dll" "$W_SYSTEM64_DLLS/dxdiagn.dll" w_try_regsvr64 dxdiagn.dll fi - - w_override_dlls native,builtin dxdiagn } #---------------------------------------------------------------- @@ -8515,8 +9572,8 @@ load_dxdiagn_feb2010() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dxdiagn.dll' "$W_TMP/dxnt.cab" - w_try_regsvr dxdiagn.dll w_override_dlls native dxdiagn + w_try_regsvr dxdiagn.dll } #---------------------------------------------------------------- @@ -8536,8 +9593,8 @@ load_dsound() w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dsound.dll' "$W_TMP/dxnt.cab" + # Don't try to register native dsound; it doesn't export DllRegisterServer(). w_try_regsvr dsound.dll - w_override_dlls native dsound } @@ -8566,35 +9623,26 @@ load_esent() #---------------------------------------------------------------- -w_metadata faudio dlls \ - title="FAudio (xaudio reimplemntation, with xna support) builds for win32" \ - publisher="Kron4ek" \ - year="2019" \ - media="download" \ - file1="faudio-git-a756af4.tar.xz" \ - installed_file1="$W_SYSTEM32_DLLS_WIN/FAudio.dll" - -load_faudio() +# $1 - faudio archive name (required) +helper_faudio() { - # FIXME: they have a LATEST file that may be useful in the future - # Not sure if we want to have multiple versions like dxvk - # Especially when some are prefixed with 'git-'! - # https://raw.githubusercontent.com/Kron4ek/FAudio-Builds/master/LATEST - faudio_version="$(basename "${file1}" .tar.xz)" - - # 2018/01/26: b491e9a1eb2052f62d6639be86639203ec1c7e803101db86ef8817a07baaf0a8 - w_download https://github.com/Kron4ek/FAudio-Builds/releases/download/git-a756af4/faudio-git-a756af4.tar.xz b491e9a1eb2052f62d6639be86639203ec1c7e803101db86ef8817a07baaf0a8 + faudio_archive="$1" + faudio_version="$(basename "${faudio_archive}" .tar.xz)" w_try_cd "$W_TMP" - w_try tar -Jxf "${W_CACHE}/${W_PACKAGE}/${file1}" + w_try tar -Jxf "${W_CACHE}/${W_PACKAGE}/${faudio_archive}" - # They ship an installation script, but it's bash (and we have all needed functionality already) - # Unless they add something more complex, this should suffice: - for dll in "${faudio_version}/x32/"*.dll; do - shortdll="$(basename "${dll}" .dll)" - w_try cp "${dll}" "$W_SYSTEM32_DLLS" - w_override_dlls native "$shortdll" - done + if [ -d "${faudio_version}/x32" ]; then + w_info "Installing 32-bit binaries since present; upstreams says they may be broken" + + # They ship an installation script, but it's bash (and we have all needed functionality already) + # Unless they add something more complex, this should suffice: + for dll in "${faudio_version}/x32/"*.dll; do + shortdll="$(basename "${dll}" .dll)" + w_try cp "${dll}" "$W_SYSTEM32_DLLS" + w_override_dlls native "$shortdll" + done + fi if [ "$W_ARCH" = "win64" ]; then for dll in "${faudio_version}/x64/"*.dll; do @@ -8608,6 +9656,155 @@ load_faudio() #---------------------------------------------------------------- +w_metadata faudio1901 dlls \ + title="FAudio (xaudio reimplementation, with xna support) builds for win32 (19.01)" \ + publisher="Kron4ek" \ + year="2019" \ + media="download" \ + file1="faudio-19.01.tar.xz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/FAudio.dll" + +load_faudio1901() +{ + w_download https://github.com/Kron4ek/FAudio-Builds/releases/download/19.01/faudio-19.01.tar.xz f3439090ba36061ee47ebda93e409ae4b2d8886c780c86a197c66ff08b9b573f + helper_faudio "$file1" +} + +#---------------------------------------------------------------- + +w_metadata faudio1902 dlls \ + title="FAudio (xaudio reimplementation, with xna support) builds for win32 (19.02)" \ + publisher="Kron4ek" \ + year="2019" \ + media="download" \ + file1="faudio-19.02.tar.xz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/FAudio.dll" + +load_faudio1902() +{ + w_download https://github.com/Kron4ek/FAudio-Builds/releases/download/19.02/faudio-19.02.tar.xz 849fec35482748a2b441d8dd7e9a171c7c5c2207d1037c7ffd0265e65f2a4b2b + helper_faudio "$file1" +} + +#---------------------------------------------------------------- + +w_metadata faudio1903 dlls \ + title="FAudio (xaudio reimplementation, with xna support) builds for win32 (19.03)" \ + publisher="Kron4ek" \ + year="2019" \ + media="download" \ + file1="faudio-19.03.tar.xz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/FAudio.dll" + +load_faudio1903() +{ + w_download https://github.com/Kron4ek/FAudio-Builds/releases/download/19.03/faudio-19.03.tar.xz d5c62437fd5b185e82f464f6a82334af5d666cb506aba218358ea7a3697fdf63 + helper_faudio "$file1" +} + +#---------------------------------------------------------------- + +w_metadata faudio1904 dlls \ + title="FAudio (xaudio reimplementation, with xna support) builds for win32 (19.04)" \ + publisher="Kron4ek" \ + year="2019" \ + media="download" \ + file1="faudio-19.04.tar.xz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/FAudio.dll" + +load_faudio1904() +{ + w_download https://github.com/Kron4ek/FAudio-Builds/releases/download/19.04/faudio-19.04.tar.xz c364db1a18bfb6f6c0f375c641672ca40140b8e5db69dc2c8c9b41d79d0fc56f + helper_faudio "$file1" +} + +#---------------------------------------------------------------- + +w_metadata faudio1905 dlls \ + title="FAudio (xaudio reimplementation, with xna support) builds for win32 (19.05)" \ + publisher="Kron4ek" \ + year="2019" \ + media="download" \ + file1="faudio-19.05.tar.xz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/FAudio.dll" + +load_faudio1905() +{ + w_download https://github.com/Kron4ek/FAudio-Builds/releases/download/19.05/faudio-19.05.tar.xz 94b44c43c0b2260f8061dd699292c8d58ce56fae330a53314417804df4f5f723 + helper_faudio "$file1" +} + +#---------------------------------------------------------------- + +w_metadata faudio1906 dlls \ + title="FAudio (xaudio reimplementation, with xna support) builds for win32 (19.06)" \ + publisher="Kron4ek" \ + year="2019" \ + media="download" \ + file1="faudio-19.06.tar.xz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/FAudio.dll" + +load_faudio1906() +{ + w_download https://github.com/Kron4ek/FAudio-Builds/releases/download/19.06/faudio-19.06.tar.xz 87639e30f9e913685829e05b925809598409e54c4c51e3d74b977cedd658aaf3 + helper_faudio "$file1" +} + +#---------------------------------------------------------------- + +w_metadata faudio190607 dlls \ + title="FAudio (xaudio reimplementation, with xna support) builds for win32 (19.06.07)" \ + publisher="Kron4ek" \ + year="2019" \ + media="download" \ + file1="faudio-19.06.07.tar.xz" \ + installed_file1="$W_SYSTEM64_DLLS_WIN64/FAudio.dll" + +load_faudio190607() +{ + # Starting in 19.06.07; before that ships them, but they're supposedly broken + w_package_unsupported_win32 + + w_download https://github.com/Kron4ek/FAudio-Builds/releases/download/19.06.07/faudio-19.06.07.tar.xz e17e3a9dadeb1017dc369fe0d46c3d1945ebceadb7ad2f94a3a1448435ab3f6c + helper_faudio "$file1" +} +#---------------------------------------------------------------- + +w_metadata faudio dlls \ + title="FAudio (xaudio reimplementation, with xna support) builds for win32 (latest)" \ + publisher="Kron4ek" \ + year="2019" \ + media="download" \ + installed_file1="$W_SYSTEM64_DLLS_WIN64/FAudio.dll" + +load_faudio() +{ + # Starting in 19.06.07; before that ships them, but they're supposedly broken + w_package_unsupported_win32 + + w_download_to "${W_TMP_EARLY}" "https://raw.githubusercontent.com/Kron4ek/FAudio-Builds/master/LATEST" + faudio_version="$(cat "${W_TMP_EARLY}/LATEST")" + w_linkcheck_ignore=1 w_download "https://github.com/Kron4ek/FAudio-Builds/releases/download/${faudio_version}/faudio-${faudio_version}.tar.xz" + helper_faudio "faudio-${faudio_version}.tar.xz" +} + +#---------------------------------------------------------------- + +w_metadata filever dlls \ + title="Microsoft's filever, for dumping file version info" \ + publisher="Microsoft" \ + year="20??" \ + media="download" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/filever.exe" + +load_filever() +{ + helper_winxpsp2_support_tools filever.exe + w_try cp "$W_TMP/filever.exe" "$W_SYSTEM32_DLLS/filever.exe" +} + +#---------------------------------------------------------------- + # FIXME: update winetricks_is_installed to look at installed_file2..n # https://github.com/Winetricks/winetricks/issues/988 w_metadata flash dlls \ @@ -8640,7 +9837,7 @@ load_flash() # https://helpx.adobe.com/flash-player/kb/archived-flash-player-versions.html # 2018/06/24: d4b6f9a5e42cc9f2c7cbd1fd72059d4c1bead91b076afa2ca042d28f0fd7bedb - w_download "https://fpdownload.macromedia.com/pub/flashplayer/installers/archive/$_W_archive" d4b6f9a5e42cc9f2c7cbd1fd72059d4c1bead91b076afa2ca042d28f0fd7bedb + w_linkcheck_ignore=1 w_download "https://fpdownload.macromedia.com/pub/flashplayer/installers/archive/$_W_archive" d4b6f9a5e42cc9f2c7cbd1fd72059d4c1bead91b076afa2ca042d28f0fd7bedb # If OS version is Vista or newer: # 1. NPAPI plugin doesn't work @@ -8743,6 +9940,38 @@ load_galliumnine03() helper_galliumnine "$file1" } +w_metadata galliumnine04 dlls \ + title="Gallium Nine Standalone (v0.4)" \ + publisher="Gallium Nine Team" \ + year="2019" \ + media="download" \ + file1="gallium-nine-standalone-v0.4.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9-nine.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/ninewinecfg.exe" \ + homepage="https://github.com/iXit/wine-nine-standalone" + +load_galliumnine04() +{ + w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.4/gallium-nine-standalone-v0.4.tar.gz" 4423c32d46419830c8e68fea86d28e740f17f182c365250c379b5493176e19ab + helper_galliumnine "$file1" +} + +w_metadata galliumnine05 dlls \ + title="Gallium Nine Standalone (v0.5)" \ + publisher="Gallium Nine Team" \ + year="2019" \ + media="download" \ + file1="gallium-nine-standalone-v0.5.tar.gz" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/d3d9-nine.dll" \ + installed_file2="$W_SYSTEM32_DLLS_WIN/ninewinecfg.exe" \ + homepage="https://github.com/iXit/wine-nine-standalone" + +load_galliumnine05() +{ + w_download "https://github.com/iXit/wine-nine-standalone/releases/download/v0.5/gallium-nine-standalone-v0.5.tar.gz" c46e06b13a3ba0adee75b27a8b54e9d772f83ed29dee5e203364460771fb1bcd + helper_galliumnine "$file1" +} + w_metadata galliumnine dlls \ title="Gallium Nine Standalone (latest)" \ publisher="Gallium Nine Team" \ @@ -8754,8 +9983,7 @@ w_metadata galliumnine dlls \ load_galliumnine() { - w_download_to "${W_TMP_EARLY}" "https://api.github.com/repos/iXit/wine-nine-standalone/releases/latest" "" "release.json" - _W_galliumnine_version="$(grep -w tag_name ${W_TMP_EARLY}/release.json | cut -d '"' -f 4)" + _W_galliumnine_version="$(w_get_github_latest_release iXit wine-nine-standalone)" w_linkcheck_ignore=1 w_download "https://github.com/iXit/wine-nine-standalone/releases/download/${_W_galliumnine_version}/gallium-nine-standalone-${_W_galliumnine_version}.tar.gz" helper_galliumnine "gallium-nine-standalone-${_W_galliumnine_version}.tar.gz" unset _W_galliumnine_version @@ -8791,18 +10019,18 @@ load_gdiplus() w_metadata gdiplus_winxp dlls \ title="MS GDI+" \ publisher="Microsoft" \ - year="2004" \ + year="2009" \ media="manual_download" \ - file1="NDP1.0sp2-KB830348-X86-Enu.exe" \ + file1="WindowsXP-KB975337-x86-ENU.exe" \ installed_file1="$W_SYSTEM32_DLLS_WIN/gdiplus.dll" load_gdiplus_winxp() { # https://www.microsoft.com/en-us/download/details.aspx?id=5339 - w_download https://download.microsoft.com/download/1/4/6/1467c2ba-4d1f-43ad-8d9b-3e8bc1c6ac3d/NDP1.0sp2-KB830348-X86-Enu.exe 3c6c7eed4a0ccd2ea2ce0446359b8c752dd2a3b82332663f655e803ce0b05335 + w_download https://web.archive.org/web/20140615000000/http://download.microsoft.com/download/a/b/c/abc45517-97a0-4cee-a362-1957be2f24e1/WindowsXP-KB975337-x86-ENU.exe 699e76e9f100db3d50da8762c484a369df4698d4b84f7821d4df0e37ce68bcbe w_try_cd "$W_CACHE/$W_PACKAGE" - w_try_cabextract -d "$W_TMP" -F FL_gdiplus_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 "$W_CACHE/${W_PACKAGE}/$file1" - w_try cp "$W_TMP/FL_gdiplus_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" "$W_SYSTEM32_DLLS/gdiplus.dll" + w_try_cabextract -d "$W_TMP" -F _sfx_0005._p "$W_CACHE/${W_PACKAGE}/$file1" + w_try cp "$W_TMP/_sfx_0005._p" "$W_SYSTEM32_DLLS/gdiplus.dll" # For some reason, native, builtin isn't good enough...? w_override_dlls native gdiplus @@ -8825,7 +10053,7 @@ load_glidewrapper() # The installer opens its README in a web browser, really annoying when doing make check/test: # FIXME: maybe we should back up this key first? - if test ${W_OPT_UNATTENDED}; then + if [ -n "${W_OPT_UNATTENDED}" ]; then cat > "$W_TMP"/disable-browser.reg <<_EOF_ REGEDIT4 @@ -8840,7 +10068,7 @@ _EOF_ # NSIS installer w_try "$WINE" "$file1" ${W_OPT_UNATTENDED:+ /S} - if test ${W_OPT_UNATTENDED}; then + if [ -n "${W_OPT_UNATTENDED}" ]; then "$WINE" reg delete "HKEY_CURRENT_USER\\Software\\Wine\\WineBrowser" /v Browsers /f || true fi } @@ -8863,7 +10091,7 @@ load_gfw() # FIXME: Depends on .NET 20, but is it really needed? For now, skip it. w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" gfwlivesetupmin.exe /nodotnet $W_UNATTENDED_SLASH_Q + w_try "$WINE" gfwlivesetupmin.exe /nodotnet ${W_OPT_UNATTENDED:+/q} w_call msasn1 } @@ -8942,7 +10170,7 @@ w_metadata dirac dlls \ load_dirac() { - w_download $WINETRICKS_SOURCEFORGE/dirac/DiracDirectShowFilter-1.0.2.exe 7257de4be940405637bb5d11c1179f7db86f165f21fc0ba24f42a9ecbc55fe20 + w_download https://downloads.sourceforge.net/dirac/DiracDirectShowFilter-1.0.2.exe 7257de4be940405637bb5d11c1179f7db86f165f21fc0ba24f42a9ecbc55fe20 # Avoid mfc90 not found error. (DiracSplitter-libschroedinger.ax needs mfc90 to register itself, I think.) w_call vcrun2008 @@ -8987,9 +10215,9 @@ w_metadata ffdshow dlls \ load_ffdshow() { - w_download $WINETRICKS_SOURCEFORGE/ffdshow-tryout/ffdshow_beta7_rev3154_20091209.exe 86fb22e9a79a1c83340a99fd5722974a4d03948109d404a383c4334fab8f8860 + w_download https://downloads.sourceforge.net/ffdshow-tryout/ffdshow_beta7_rev3154_20091209.exe 86fb22e9a79a1c83340a99fd5722974a4d03948109d404a383c4334fab8f8860 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" ffdshow_beta7_rev3154_20091209.exe $W_UNATTENDED_SLASH_SILENT + w_try "$WINE" ffdshow_beta7_rev3154_20091209.exe ${W_OPT_UNATTENDED:+/silent} } #---------------------------------------------------------------- @@ -9029,26 +10257,11 @@ load_icodecs() # 2014/04/11: http://www.cucusoft.com/codecdownload/codinstl.exe (linked from http://www.cucusoft.com/codec.asp) w_download "http://www.cucusoft.com/codecdownload/codinstl.exe" 0979d43568111cadf0b3bf43cd8d746ac3de505759c14f381592b4f8439f6c95 - w_try_cd "$W_CACHE/$W_PACKAGE" - - w_ahk_do " - SetTitleMatchMode, 2 - run codinstl.exe - winwait, Welcome - if ( w_opt_unattended > 0 ) { - sleep 1000 - controlclick, Button1 ; Next - winwait, Software License Agreement - sleep 1000 - controlclick, Button2 ; Yes - } - winwait, Setup Complete - if ( w_opt_unattended > 0 ) { - sleep 1000 - controlclick, Button4 ; Finish - } - winwaitclose - " + # Extract the installer so that we can use the included Install Shield + # response file for unattended installations + w_try_cabextract -d "$W_TMP/codinstl/" "$W_CACHE/$W_PACKAGE/codinstl.exe" + w_try_cd "$W_TMP/codinstl/" + w_try "$WINE" "setup.exe" ${W_OPT_UNATTENDED:+/s} # Work around bug in codec's installer? # https://support.britannica.com/other/touchthesky/win/issues/TSTUw_150.htm @@ -9059,60 +10272,105 @@ load_icodecs() # Download at https://www.moviecodec.com/download-codec-packs/indeo-codecs-legacy-package-31/ w_download https://s3.amazonaws.com/moviecodec/files/iv5setup.exe 51bec25488b5b94eb3ce49b0a117618c9526161fd0753817a7a724ce25ff0cad - w_ahk_do " - SetTitleMatchMode, 2 - run iv5setup.exe - winwait, InstallShield Wizard - if ( w_opt_unattended > 0 ) { - sleep 1000 - controlclick, Button2 ; Next - winwait, Welcome - controlclick, Button1 ; Next - winwait, Software License Agreement - sleep 1000 - controlclick, Button2 ; Yes - winwait, Choose Destination - sleep 1000 - controlclick, Button1 ; Next - winwait, Setup Type - sleep 1000 - controlclick, ListBox1 ; Next - sleep 1000 - Send C ; Custom - sleep 1000 - controlclick, Button2 ; Next - winwait, Select Components - controlclick, ISAVIEWCMPTCLASS1 ; Component Selection - Send {Home} - Send {Down} ; - Send {Down} ; IV5 Directshow plugin (gives error about missing Ivfsrc.ax) - Send {Space} ; Disable it (directshow plugin) - Send {End} ; Web browser (Netscape) plugin - sleep 1000 - Send {Space} ; Disable it (web plugin) - sleep 1000 - controlclick, Button3 ; Next - winwait, Question - sleep 1000 - controlclick, Button2 ; No - winwait, Start Copying Files - sleep 1000 - controlclick, Button1 ; No - } - winwait, Setup Complete - if ( w_opt_unattended > 0 ) { - sleep 1000 - controlclick, Button4 ; Finish - } - winwaitclose - " - # Note, this leaves a dangling explorer window. The window name changed at some point - # because of a fixed wine bug that I'm too lazy to find. Since AHK doesn't make command line - # arguments easily accessible, we'd have to just kill all explorer.exe processes. - # - # So instead, use system kill - inode_pid="$(pgrep -f "explorer.exe.*Indeo")" - kill -HUP "$inode_pid" + # Extract the installer so that we can create and use a pre-recorded + # Install Shield response file for unattended installations + w_try_cabextract -d "$W_TMP/iv5setup/" "$W_CACHE/$W_PACKAGE/iv5setup.exe" + + # Create the response file with the following excluded components + # - IV5 Directshow plugin (gives error about missing Ivfsrc.ax) + # - Web browser (Netscape) plugin + # http://www.silentinstall.org/InstallShield + cat > "$W_TMP/iv5setup/setup.iss" <<_EOF_ +[InstallShield Silent] +Version=v5.00.000 +File=Response File +[File Transfer] +OverwriteReadOnly=NoToAll +[DlgOrder] +Dlg0=SdWelcome-0 +Count=8 +Dlg1=SdLicense-0 +Dlg2=SdAskDestPath-0 +Dlg3=SdSetupTypeEx-0 +Dlg4=SdComponentDialog2-0 +Dlg5=AskYesNo-0 +Dlg6=SdStartCopy-0 +Dlg7=SdFinish-0 +[SdWelcome-0] +Result=1 +[SdLicense-0] +Result=1 +[SdAskDestPath-0] +szDir=C:\Program Files\Ligos\Indeo +Result=1 +[SdSetupTypeEx-0] +Result=Custom +[SdComponentDialog2-0] +Indeo Audio Codec-type=string +Indeo Audio Codec-count=1 +Indeo Audio Codec-0=Indeo Audio Codec\Indeo Audio Encoder +Component-type=string +Component-count=12 +Component-0=Indeo Video 5 Quick Compressors +Component-1=Indeo® Video 5 Codec +Component-2=Indeo Video 4 Codec +Component-3=Indeo Video 3.2 Codec +Component-4=Indeo Audio Codec +Component-5=Indeo Video Raw (YVU9) Codec +Component-6=Indeo Video 4 Quick Compressors +Component-7=Indeo Video 5 Compressor Help Files +Component-8=Indeo Video 4 Compressor Help Files +Component-9=Indeo Software Release Notes +Component-10=Indeo Software Installation Source Code +Component-11=Indeo Software Uninstallation +Result=1 +[AskYesNo-0] +Result=0 +[SdStartCopy-0] +Result=1 +[Application] +Name=Indeo® Software +Version=1.00.000 +Company=Ligos +Lang=0009 +[SdFinish-0] +Result=1 +bOpt1=0 +bOpt2=0 +_EOF_ + + w_try_cd "$W_TMP/iv5setup/" + w_try "$WINE" "setup.exe" ${W_OPT_UNATTENDED:+/s} + + # Note, this leaves a dangling explorer window. + # Wait for it to appear and kill it + while ! inode_pid=$(pgrep -f "explorer.exe.*Indeo"); do + sleep 1 + done + kill -HUP "$inode_pid" +} + +#---------------------------------------------------------------- + +w_metadata iertutil dlls \ + title="MS Runtime Utility" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/iertutil.dll" + +load_iertutil() +{ + helper_win7sp1 x86_microsoft-windows-ie-runtimeutilities_31bf3856ad364e35_8.0.7601.17514_none_64655b7c61c841cb/iertutil.dll + w_try cp "$W_TMP/x86_microsoft-windows-ie-runtimeutilities_31bf3856ad364e35_8.0.7601.17514_none_64655b7c61c841cb/iertutil.dll" "$W_SYSTEM32_DLLS/iertutil.dll" + + if [ "$W_ARCH" = "win64" ]; then + helper_win7sp1_x64 amd64_microsoft-windows-ie-runtimeutilities_31bf3856ad364e35_8.0.7601.17514_none_c083f7001a25b301/iertutil.dll + w_try cp "$W_TMP/amd64_microsoft-windows-ie-runtimeutilities_31bf3856ad364e35_8.0.7601.17514_none_c083f7001a25b301/iertutil.dll" "$W_SYSTEM64_DLLS/iertutil.dll" + fi + + w_override_dlls native,builtin iertutil } #---------------------------------------------------------------- @@ -9132,8 +10390,8 @@ load_itircl() w_try_cabextract -d "$W_TMP" -F hhupd.exe "$W_CACHE"/hhw/htmlhelp.exe w_try_cabextract -d "$W_SYSTEM32_DLLS" -F itircl.dll "$W_TMP"/hhupd.exe - w_try_regsvr itircl.dll w_override_dlls native itircl + w_try_regsvr itircl.dll } #---------------------------------------------------------------- @@ -9153,8 +10411,8 @@ load_itss() w_try_cabextract -d "$W_TMP" -F hhupd.exe "$W_CACHE"/hhw/htmlhelp.exe w_try_cabextract -d "$W_SYSTEM32_DLLS" -F itss.dll "$W_TMP"/hhupd.exe - w_try_regsvr itss.dll w_override_dlls native itss + w_try_regsvr itss.dll } #---------------------------------------------------------------- @@ -9209,7 +10467,7 @@ load_jet40() w_download https://download.microsoft.com/download/4/3/9/4393c9ac-e69e-458d-9f6d-2fe191c51469/jet40sp8_9xnt.exe b060246cd499085a31f15873689d5fa7df817e407c8261a5c71fa6b9f7042560 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" jet40sp8_9xnt.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" jet40sp8_9xnt.exe ${W_OPT_UNATTENDED:+/q} } # FIXME: verify_jet40() @@ -9236,19 +10494,12 @@ load_ie8_kb2936068() w_download https://download.microsoft.com/download/3/8/C/38CE0ABB-01FD-4C0A-A569-BC5E82C34A17/IE8-WindowsXP-KB2936068-x86-ENU.exe 8bda23c78cdcd9d01c364a01c6d639dfb2d11550a5521b8a81c808c1a2b1824e - if [ $W_UNATTENDED_SLASH_Q ]; then - quiet="$W_UNATTENDED_SLASH_QUIET /forcerestart" - else - quiet="" - fi + w_set_winver winxp w_try_cd "$W_CACHE/$W_PACKAGE" - "$WINE" IE8-WindowsXP-KB2936068-x86-ENU.exe $quiet - status=$? - case $status in - 0|194) ;; - *) w_die "$W_PACKAGE installation failed" - esac + w_try_ms_installer "$WINE" IE8-WindowsXP-KB2936068-x86-ENU.exe ${W_OPT_UNATTENDED:+/quiet /forcerestart} + + w_set_winver 'default' } #---------------------------------------------------------------- @@ -9298,8 +10549,8 @@ load_mdac27() load_native_mdac w_set_winver nt40 w_try_cd "${W_CACHE}/${W_PACKAGE}" - w_try "$WINE" "${file1}" ${W_OPT_UNATTENDED:+ /q /C:"setup $W_UNATTENDED_SLASH_QNT"} - w_unset_winver + w_try "$WINE" "${file1}" ${W_OPT_UNATTENDED:+/q /C:"setup /qnt"} + w_set_winver 'default' } #---------------------------------------------------------------- @@ -9314,18 +10565,13 @@ w_metadata mdac28 dlls \ load_mdac28() { - # Not a blocker, depends on gcc version - if w_workaround_wine_bug 45627 "Depending on your compiler, you may see crashes before wine-3.21. See https://bugs.winehq.org/show_bug.cgi?id=45627" ,3.21; then - true - fi - # https://www.microsoft.com/en-us/download/details.aspx?id=5793 w_download https://download.microsoft.com/download/4/a/a/4aafff19-9d21-4d35-ae81-02c48dcbbbff/MDAC_TYP.EXE 157ebae46932cb9047b58aa849ac1885e8cbd2f218810cb83e57613b49c679d6 load_native_mdac w_set_winver nt40 w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" mdac_typ.exe ${W_OPT_UNATTENDED:+ /q /C:"setup $W_UNATTENDED_SLASH_QNT"} - w_unset_winver + w_try "$WINE" mdac_typ.exe ${W_OPT_UNATTENDED:+/q /C:"setup /qnt"} + w_set_winver 'default' } #---------------------------------------------------------------- @@ -9349,8 +10595,7 @@ load_mdx() # Install assemblies w_try_cabextract -d "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code/1.0.2902.0" -F "microsoft.directx*" ./*MDX1_x86.cab - for file in mdx_*.cab - do + for file in mdx_*.cab; do ver="${file%%_x86.cab}" ver="${ver##mdx_}" w_try_cabextract -d "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code/$ver" -F "microsoft.directx*" "$file" @@ -9359,12 +10604,10 @@ load_mdx() # Add them to GAC w_try_cd "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code" - for ver in * - do + for ver in *; do ( w_try_cd "$ver" - for asm in *.dll - do + for asm in *.dll; do name="${asm%%.dll}" w_try mkdir -p "$W_WINDIR_UNIX/assembly/GAC/$name/${ver}__31bf3856ad364e35" w_try cp "$asm" "$W_WINDIR_UNIX/assembly/GAC/$name/${ver}__31bf3856ad364e35" @@ -9444,13 +10687,13 @@ w_metadata mfc40 dlls \ load_mfc40() { - w_warn "mfc40 no longer installs msvcrt40.dll, only mfc40.dll/mfc40u.dll. Please file a bug if you have an application that needs native msvcrt40.dll." - helper_win7sp1 x86_microsoft-windows-mfc40_31bf3856ad364e35_6.1.7601.17514_none_5c06580240091047/mfc40.dll w_try cp "$W_TMP/x86_microsoft-windows-mfc40_31bf3856ad364e35_6.1.7601.17514_none_5c06580240091047/mfc40.dll" "$W_SYSTEM32_DLLS/mfc40.dll" helper_win7sp1 x86_microsoft-windows-mfc40u_31bf3856ad364e35_6.1.7601.17514_none_f51a7bf0b3d25294/mfc40u.dll w_try cp "$W_TMP/x86_microsoft-windows-mfc40u_31bf3856ad364e35_6.1.7601.17514_none_f51a7bf0b3d25294/mfc40u.dll" "$W_SYSTEM32_DLLS/mfc40u.dll" + + w_call msvcrt40 } #---------------------------------------------------------------- @@ -9505,6 +10748,29 @@ load_msctf() #---------------------------------------------------------------- +w_metadata msdelta dlls \ + title="MSDelta differential compression library" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/msdelta.dll" + +load_msdelta() +{ + helper_win7sp1 x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7601.17514_none_0b66cb34258c936f/msdelta.dll + w_try cp "$W_TMP/x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7601.17514_none_0b66cb34258c936f/msdelta.dll" "$W_SYSTEM32_DLLS/msdelta.dll" + + if [ "$W_ARCH" = "win64" ]; then + helper_win7sp1_x64 amd64_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7601.17514_none_678566b7ddea04a5/msdelta.dll + w_try cp "$W_TMP/amd64_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7601.17514_none_678566b7ddea04a5/msdelta.dll" "$W_SYSTEM64_DLLS/msdelta.dll" + fi + + w_override_dlls native,builtin msdelta +} + +#---------------------------------------------------------------- + w_metadata msdxmocx dlls \ title="MS Windows Media Player 2 ActiveX control for VB6" \ publisher="Microsoft" \ @@ -9665,6 +10931,24 @@ load_msftedit() #---------------------------------------------------------------- +w_metadata msvcrt40 dlls \ + title="fixme" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../winxpsp3/WindowsXP-KB936929-SP3-x86-ENU.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/msvcrt40.dll" + +load_msvcrt40() +{ + helper_winxpsp3 i386/msvcrt40.dl_ + w_try_cabextract --directory="$W_SYSTEM32_DLLS" "$W_TMP"/i386/msvcrt40.dl_ + + w_override_dlls native,builtin msvcrt40 +} + +#---------------------------------------------------------------- + w_metadata msxml3 dlls \ title="MS XML Core Services 3.0" \ publisher="Microsoft" \ @@ -9693,7 +10977,7 @@ load_msxml3() if w_workaround_wine_bug 26925 "Forcing quiet install"; then w_try "$WINE" msiexec /i msxml3.msi /q else - w_try "$WINE" msiexec /i msxml3.msi $W_UNATTENDED_SLASH_Q + w_try "$WINE" msiexec /i msxml3.msi ${W_OPT_UNATTENDED:+/q} fi } @@ -9717,36 +11001,39 @@ load_msxml4() w_download https://download.microsoft.com/download/A/2/D/A2D8587D-0027-4217-9DAD-38AFDB0A177E/msxml.msi 47c2ae679c37815da9267c81fc3777de900ad2551c11c19c2840938b346d70bb w_override_dlls native,builtin msxml4 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" msiexec /i msxml.msi $W_UNATTENDED_SLASH_Q + w_try "$WINE" msiexec /i msxml.msi ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- w_metadata msxml6 dlls \ - title="MS XML Core Services 6.0 sp1" \ + title="MS XML Core Services 6.0 sp2" \ publisher="Microsoft" \ - year="2007" \ + year="2009" \ media="download" \ - file1="msxml6_x86.msi" \ + file1="msxml6-KB973686-enu-amd64.exe" \ installed_file1="$W_SYSTEM32_DLLS_WIN/msxml6.dll" load_msxml6() { - # Service Pack 1 - # https://www.microsoft.com/en-us/download/details.aspx?id=6276 - if [ $W_ARCH = win64 ]; then - w_download https://download.microsoft.com/download/e/a/f/eafb8ee7-667d-4e30-bb39-4694b5b3006f/msxml6_x64.msi 945d8c535758d5178d4de9063cfcba7dfa96987eaa478e0c03ba646cc7ca772f - else - w_download https://download.microsoft.com/download/e/a/f/eafb8ee7-667d-4e30-bb39-4694b5b3006f/msxml6_x86.msi efa48f8cab5a89b8e667ed3e10dfb71bddc02923d0f3757bd93ffabe6fb6c598 + # Service Pack 2 + # https://www.microsoft.com/en-us/download/details.aspx?id=9774 + + # 64bit exe also includes 32bit dlls + # Originally here: https://download.microsoft.com/download/1/5/8/158F681A-E595-472B-B15E-62B649B1B6FF/msxml6-KB973686-enu-amd64.exe + w_download https://web.archive.org/web/20190122095451/https://download.microsoft.com/download/1/5/8/158F681A-E595-472B-B15E-62B649B1B6FF/msxml6-KB973686-enu-amd64.exe 0e5c4af488e88e8defb59de80271671d8283d5744b2eebdb351bbd4950fb0883 + + w_try_cabextract --directory="${W_TMP}" "${W_CACHE}"/msxml6/msxml6-KB973686-enu-amd64.exe + w_try_cabextract --directory="${W_TMP}" "${W_TMP}"/msxml6.msi + w_try cp -f "${W_TMP}"/msxml6.dll.86F857F6_A743_463D_B2FE_98CB5F727E09 "$W_SYSTEM32_DLLS"/msxml6.dll + w_try cp -f "${W_TMP}"/msxml6r.dll.86F857F6_A743_463D_B2FE_98CB5F727E09 "$W_SYSTEM32_DLLS"/msxml6r.dll + + if [ "$W_ARCH" = "win64" ]; then + w_try cp -f "${W_TMP}"/msxml6.dll.1ECC0691_D2EB_4A33_9CBF_5487E5CB17DB "$W_SYSTEM64_DLLS"/msxml6.dll + w_try cp -f "${W_TMP}"/msxml6r.dll.1ECC0691_D2EB_4A33_9CBF_5487E5CB17DB "$W_SYSTEM64_DLLS"/msxml6r.dll fi + w_override_dlls native,builtin msxml6 - rm -f "$W_SYSTEM32_DLLS/msxml6.dll" - if [ $W_ARCH = win64 ]; then - rm -f "$W_SYSTEM64_DLLS/msxml6.dll" - w_try_msiexec64 /i "$W_CACHE"/msxml6/msxml6_x64.msi - else - w_try "$WINE" msiexec /i "$W_CACHE"/msxml6/msxml6_x86.msi $W_UNATTENDED_SLASH_Q - fi } #---------------------------------------------------------------- @@ -9784,7 +11071,7 @@ load_ogg() { w_download https://downloads.xiph.org/releases/oggdsf/opencodecs_0.85.17777.exe fcec3cea637e806501aff447d902de3b5bfef226b629e43ab67e46dbb23f13e7 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" $W_UNATTENDED_SLASH_S + w_try "$WINE" "$file1" ${W_OPT_UNATTENDED:+/S} } @@ -9808,6 +11095,29 @@ load_ole32() #---------------------------------------------------------------- +w_metadata oleaut32 dlls \ + title="MS oleaut32.dll" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/oleaut32.dll" + +load_oleaut32() +{ + helper_win7sp1 x86_microsoft-windows-ole-automation_31bf3856ad364e35_6.1.7601.17514_none_bf07947959bc4c33/oleaut32.dll + w_try cp "$W_TMP/x86_microsoft-windows-ole-automation_31bf3856ad364e35_6.1.7601.17514_none_bf07947959bc4c33/oleaut32.dll" "$W_SYSTEM32_DLLS/oleaut32.dll" + + if [ "$W_ARCH" = "win64" ]; then + helper_win7sp1_x64 amd64_microsoft-windows-ole-automation_31bf3856ad364e35_6.1.7601.17514_none_1b262ffd1219bd69/oleaut32.dll + w_try cp "$W_TMP/amd64_microsoft-windows-ole-automation_31bf3856ad364e35_6.1.7601.17514_none_1b262ffd1219bd69/oleaut32.dll" "$W_SYSTEM64_DLLS/oleaut32.dll" + fi + + w_override_dlls native,builtin oleaut32 +} + +#---------------------------------------------------------------- + w_metadata pdh dlls \ title="MS pdh.dll (Performance Data Helper)" \ publisher="Microsoft" \ @@ -9831,19 +11141,41 @@ load_pdh() #---------------------------------------------------------------- +w_metadata peverify dlls \ + title="MS peverify (from .NET 2.0 SDK)" \ + publisher="Microsoft" \ + year="2006" \ + media="download" \ + file1="../dotnet20sdk/setup.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/peverify.exe" + +load_peverify() +{ + w_download_to dotnet20sdk https://download.microsoft.com/download/c/4/b/c4b15d7d-6f37-4d5a-b9c6-8f07e7d46635/setup.exe 1d7337bfbb2c65f43c82d188688ce152af403bcb67a2cc2a3cc68a580ecd8200 + + # Seems to require dotnet20; at least doesn't work if dotnet40 is installed instead + w_call dotnet20 + + w_try_cabextract --directory="${W_TMP}" "${W_CACHE}/dotnet20sdk/setup.exe" -F netfxsd1.cab + w_try_cabextract --directory="${W_TMP}" "${W_TMP}/netfxsd1.cab" -F FL_PEVerify_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 + w_try mv "${W_TMP}/FL_PEVerify_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" "${W_SYSTEM32_DLLS}/peverify.exe" +} + +#---------------------------------------------------------------- + w_metadata physx dlls \ title="PhysX" \ publisher="Nvidia" \ year="2014" \ media="download" \ file1="PhysX-9.14.0702-SystemSoftware.msi" \ - installed_file1="$W_PROGRAMS_WIN/NVIDIA Corporation/PhysX/Engine/v2.8.3/PhysXCore.dll" + installed_file1="$W_PROGRAMS_X86_WIN/NVIDIA Corporation/PhysX/Engine/v2.8.3/PhysXCore.dll" load_physx() { w_download https://uk.download.nvidia.com/Windows/9.14.0702/PhysX-9.14.0702-SystemSoftware.msi 0a022e28accf5851be9d6577487cdcd3d3a3e2a8a21a64456b72b415c217f03c w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" msiexec /i PhysX-9.14.0702-SystemSoftware.msi $W_UNATTENDED_SLASH_Q + w_try "$WINE" msiexec /i PhysX-9.14.0702-SystemSoftware.msi ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- @@ -9868,6 +11200,32 @@ load_pngfilt() #---------------------------------------------------------------- +w_metadata prntvpt dlls \ + title="prntvpt.dll" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/prntvpt.dll" + +load_prntvpt() +{ + + helper_win7sp1 x86_microsoft-windows-p..g-printticket-win32_31bf3856ad364e35_6.1.7601.17514_none_1562129afd710f2c/prntvpt.dll + w_try cp "$W_TMP/x86_microsoft-windows-p..g-printticket-win32_31bf3856ad364e35_6.1.7601.17514_none_1562129afd710f2c/prntvpt.dll" "$W_SYSTEM32_DLLS/prntvpt.dll" + + w_override_dlls native,builtin prntvpt + w_try_regsvr prntvpt.dll + + if [ "$W_ARCH" = "win64" ]; then + helper_win7sp1_x64 amd64_microsoft-windows-p..g-printticket-win32_31bf3856ad364e35_6.1.7601.17514_none_7180ae1eb5ce8062/prntvpt.dll + w_try cp "$W_TMP/amd64_microsoft-windows-p..g-printticket-win32_31bf3856ad364e35_6.1.7601.17514_none_7180ae1eb5ce8062/prntvpt.dll" "$W_SYSTEM64_DLLS/prntvpt.dll" + w_try_regsvr64 prntvpt.dll + fi +} + +#---------------------------------------------------------------- + w_metadata python26 dlls \ title="Python interpreter 2.6.2" \ publisher="Python Software Foundaton" \ @@ -9879,10 +11237,10 @@ w_metadata python26 dlls \ load_python26() { w_download https://www.python.org/ftp/python/2.6.2/python-2.6.2.msi c2276b398864b822c25a7c240cb12ddb178962afd2e12d602f1a961e31ad52ff - w_download $WINETRICKS_SOURCEFORGE/project/pywin32/pywin32/Build%20214/pywin32-214.win32-py2.6.exe dc311bbdc5868e3dd139dfc46136221b7f55c5613a98a5a48fa725a6c681cd40 + w_download https://downloads.sourceforge.net/project/pywin32/pywin32/Build%20214/pywin32-214.win32-py2.6.exe dc311bbdc5868e3dd139dfc46136221b7f55c5613a98a5a48fa725a6c681cd40 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" msiexec /i python-2.6.2.msi ALLUSERS=1 $W_UNATTENDED_SLASH_Q + w_try "$WINE" msiexec /i python-2.6.2.msi ALLUSERS=1 ${W_OPT_UNATTENDED:+/q} w_ahk_do " SetTitleMatchMode, 2 @@ -9903,6 +11261,41 @@ load_python26() #---------------------------------------------------------------- +w_metadata python27 dlls \ + title="Python interpreter 2.7.16" \ + publisher="Python Software Foundaton" \ + year="2019" \ + media="download" \ + file1="python-2.7.16.msi" \ + installed_exe1="c:/Python27/python.exe" + +load_python27() +{ + w_download https://www.python.org/ftp/python/2.7.16/python-2.7.16.msi d57dc3e1ba490aee856c28b4915d09e3f49442461e46e481bc6b2d18207831d7 + w_download https://github.com/mhammond/pywin32/releases/download/b224/pywin32-224.win32-py2.7.exe 03bb02aff0ec604d1d5fefc699581ab599fff618eaddc8a721f2fa22e5572dd4 + + w_try_cd "$W_CACHE/$W_PACKAGE" + w_try "$WINE" msiexec /i python-2.7.16.msi ALLUSERS=1 ${W_OPT_UNATTENDED:+/q} + + w_ahk_do " + SetTitleMatchMode, 2 + run pywin32-224.win32-py2.7.exe + WinWait, Setup, Wizard will install pywin32 + if ( w_opt_unattended > 0 ) { + ControlClick Button2 ; next + WinWait, Setup, Python 2.7 is required + ControlClick Button3 ; next + WinWait, Setup, Click Next to begin + ControlClick Button3 ; next + WinWait, Setup, finished + ControlClick Button4 ; Finish + } + WinWaitClose + " +} + +#---------------------------------------------------------------- + w_metadata qasf dlls \ title="qasf.dll" \ publisher="Microsoft" \ @@ -9915,6 +11308,8 @@ load_qasf() { helper_win7sp1 x86_microsoft-windows-directshow-asf_31bf3856ad364e35_6.1.7601.17514_none_1cc4e9c15ccc8ae8/qasf.dll w_try cp "$W_TMP/x86_microsoft-windows-directshow-asf_31bf3856ad364e35_6.1.7601.17514_none_1cc4e9c15ccc8ae8/qasf.dll" "$W_SYSTEM32_DLLS/qasf.dll" + + w_override_dlls native,builtin qasf w_try_regsvr qasf.dll if [ "$W_ARCH" = "win64" ]; then @@ -9922,8 +11317,30 @@ load_qasf() w_try cp "$W_TMP/amd64_microsoft-windows-directshow-asf_31bf3856ad364e35_6.1.7601.17514_none_78e385451529fc1e/qasf.dll" "$W_SYSTEM64_DLLS/qasf.dll" w_try_regsvr64 qasf.dll fi +} - w_override_dlls native,builtin qasf +#---------------------------------------------------------------- + +w_metadata qcap dlls \ + title="qcap.dll" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/qcap.dll" + +load_qcap() +{ + helper_win7sp1 x86_microsoft-windows-directshow-capture_31bf3856ad364e35_6.1.7601.17514_none_bae08d1e7dcccf2a/qcap.dll + w_try cp "$W_TMP/x86_microsoft-windows-directshow-capture_31bf3856ad364e35_6.1.7601.17514_none_bae08d1e7dcccf2a/qcap.dll" "$W_SYSTEM32_DLLS/qcap.dll" + w_override_dlls native,builtin qcap + w_try_regsvr qcap.dll + + if [ "$W_ARCH" = "win64" ]; then + helper_win7sp1_x64 amd64_microsoft-windows-directshow-capture_31bf3856ad364e35_6.1.7601.17514_none_16ff28a2362a4060/qcap.dll + w_try cp "$W_TMP/amd64_microsoft-windows-directshow-capture_31bf3856ad364e35_6.1.7601.17514_none_16ff28a2362a4060/qcap.dll" "$W_SYSTEM64_DLLS/qcap.dll" + w_try_regsvr64 qcap.dll + fi } #---------------------------------------------------------------- @@ -9940,13 +11357,14 @@ load_qdvd() { helper_win7sp1 x86_microsoft-windows-directshow-dvdsupport_31bf3856ad364e35_6.1.7601.17514_none_562994bd321aac67/qdvd.dll w_try cp "$W_TMP/x86_microsoft-windows-directshow-dvdsupport_31bf3856ad364e35_6.1.7601.17514_none_562994bd321aac67/qdvd.dll" "$W_SYSTEM32_DLLS/qdvd.dll" + w_override_dlls native,builtin qdvd + w_try_regsvr qdvd.dll if [ "$W_ARCH" = "win64" ]; then helper_win7sp1_x64 amd64_microsoft-windows-directshow-dvdsupport_31bf3856ad364e35_6.1.7601.17514_none_b2483040ea781d9d/qdvd.dll w_try cp "$W_TMP/amd64_microsoft-windows-directshow-dvdsupport_31bf3856ad364e35_6.1.7601.17514_none_b2483040ea781d9d/qdvd.dll" "$W_SYSTEM64_DLLS/qdvd.dll" + w_try_regsvr64 qdvd.dll fi - - w_override_dlls native,builtin qdvd } #---------------------------------------------------------------- @@ -9963,6 +11381,7 @@ load_qedit() { helper_win7sp1 x86_microsoft-windows-qedit_31bf3856ad364e35_6.1.7601.17514_none_5ca34698a5a970d2/qedit.dll w_try cp "$W_TMP/x86_microsoft-windows-qedit_31bf3856ad364e35_6.1.7601.17514_none_5ca34698a5a970d2/qedit.dll" "$W_SYSTEM32_DLLS/qedit.dll" + w_override_dlls native,builtin qedit w_try_regsvr qedit.dll if [ "$W_ARCH" = "win64" ]; then @@ -9970,8 +11389,6 @@ load_qedit() w_try cp "$W_TMP/amd64_microsoft-windows-qedit_31bf3856ad364e35_6.1.7601.17514_none_b8c1e21c5e06e208/qedit.dll" "$W_SYSTEM64_DLLS/qedit.dll" w_try_regsvr64 qedit.dll fi - - w_override_dlls native,builtin qedit } #---------------------------------------------------------------- @@ -9988,6 +11405,7 @@ load_quartz() { helper_win7sp1 x86_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.17514_none_a877a1cc4c284497/quartz.dll w_try cp "$W_TMP/x86_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.17514_none_a877a1cc4c284497/quartz.dll" "$W_SYSTEM32_DLLS/quartz.dll" + w_override_dlls native,builtin quartz w_try_regsvr quartz.dll if [ "$W_ARCH" = "win64" ]; then @@ -9995,8 +11413,6 @@ load_quartz() w_try cp "$W_TMP/amd64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.17514_none_04963d500485b5cd/quartz.dll" "$W_SYSTEM64_DLLS/quartz.dll" w_try_regsvr64 quartz.dll fi - - w_override_dlls native,builtin quartz } #---------------------------------------------------------------- @@ -10015,7 +11431,7 @@ load_quicktime72() w_download http://appldnld.apple.com.edgesuite.net/content.info.apple.com/QuickTime/061-2915.20070710.pO94c/QuickTimeInstaller.exe a42b93531910bdf1539cc5ae3199ade5a1ca63fd4ac971df74c345d8e1ee6593 w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" "$file1" ALLUSERS=1 DESKTOP_SHORTCUTS=0 QTTaskRunFlags=0 QTINFO.BISQTPRO=1 SCHEDULE_ASUW=0 REBOOT_REQUIRED=No $W_UNATTENDED_SLASH_QN > /dev/null 2>&1 + w_try "$WINE" "$file1" ALLUSERS=1 DESKTOP_SHORTCUTS=0 QTTaskRunFlags=0 QTINFO.BISQTPRO=1 SCHEDULE_ASUW=0 REBOOT_REQUIRED=No ${W_OPT_UNATTENDED:+/qn} > /dev/null 2>&1 if w_workaround_wine_bug 11681; then # Following advice verified with test movies from @@ -10026,7 +11442,7 @@ load_quicktime72() ru*) w_warn "В настройках Quicktime включите Дополнительно / Безопасный режим (только gdi), иначе видеофайлы не будут воспроизводиться." ;; *) w_warn "In Quicktime preferences, check Advanced / Safe Mode (gdi), or movies won't play." ;; esac - if test "$W_UNATTENDED_SLASH_Q" = ""; then + if [ -z "${W_OPT_UNATTENDED}" ]; then w_try "$WINE" control "$W_PROGRAMS_WIN\\QuickTime\\QTSystem\\QuickTime.cpl" else # FIXME: script the control panel with AutoHotKey? @@ -10053,7 +11469,7 @@ load_quicktime76() w_download http://appldnld.apple.com/QuickTime/041-0025.20101207.Ptrqt/QuickTimeInstaller.exe c2dcda76ed55428e406ad7e6acdc84e804d30752a1380c313394c09bb3e27f56 w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" QuickTimeInstaller.exe ALLUSERS=1 DESKTOP_SHORTCUTS=0 QTTaskRunFlags=0 QTINFO.BISQTPRO=1 SCHEDULE_ASUW=0 REBOOT_REQUIRED=No $W_UNATTENDED_SLASH_QN > /dev/null 2>&1 + w_try "$WINE" QuickTimeInstaller.exe ALLUSERS=1 DESKTOP_SHORTCUTS=0 QTTaskRunFlags=0 QTINFO.BISQTPRO=1 SCHEDULE_ASUW=0 REBOOT_REQUIRED=No ${W_OPT_UNATTENDED:+/qn} > /dev/null 2>&1 if w_workaround_wine_bug 11681; then # Following advice verified with test movies from @@ -10064,7 +11480,7 @@ load_quicktime76() ru*) w_warn "В настройках Quicktime включите Дополнительно / Безопасный режим (только gdi), иначе видеофайлы не будут воспроизводиться." ;; *) w_warn "In Quicktime preferences, check Advanced / Safe Mode (gdi), or movies won't play." ;; esac - if test "$W_UNATTENDED_SLASH_Q" = ""; then + if [ -z "${W_OPT_UNATTENDED}" ]; then w_try "$WINE" control "$W_PROGRAMS_WIN\\QuickTime\\QTSystem\\QuickTime.cpl" else # FIXME: script the control panel with AutoHotKey? @@ -10123,7 +11539,8 @@ load_riched30() # with sha256sum 536e4c8385d7d250fd5702a6868d1ed004692136eefad22252d0dac15f02563a # Mirror list at http://www.filewatcher.com/m/InstMsiA.Exe.1707856-0.html # But they all have a different sha256sum, 5ab8b82f578f09dbccf797754155e531b5996b532c1f19c531596ec07cc4b46d - w_download http://ftp.tw.vim.org/cpatch/msupdate/msi/source/instmsia.exe 5ab8b82f578f09dbccf797754155e531b5996b532c1f19c531596ec07cc4b46d InstMsiA.exe + # Since mirrors are dead, going back to the microsoft.com version, via archive.org + w_download https://web.archive.org/web/20060720160141/https://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe 536e4c8385d7d250fd5702a6868d1ed004692136eefad22252d0dac15f02563a w_try_cabextract --directory="$W_TMP" "$W_CACHE"/riched30/InstMsiA.exe w_try cp -f "$W_TMP"/riched20.dll "$W_SYSTEM32_DLLS" @@ -10152,16 +11569,16 @@ load_richtx32() w_metadata sdl dlls \ title="Simple DirectMedia Layer" \ publisher="Sam Lantinga" \ - year="2009" \ + year="2012" \ media="download" \ - file1="SDL-1.2.14-win32.zip" \ + file1="SDL-1.2.15-win32.zip" \ installed_file1="$W_SYSTEM32_DLLS_WIN/SDL.dll" load_sdl() { # https://www.libsdl.org/download-1.2.php - w_download https://www.libsdl.org/release/SDL-1.2.14-win32.zip ce77838902891bf2e4378d4a910afef88aaaae4f833a49cfc9bb8dde11ff89a7 - w_try_unzip "$W_SYSTEM32_DLLS" "$W_CACHE"/sdl/SDL-1.2.14-win32.zip SDL.dll + w_download https://www.libsdl.org/release/SDL-1.2.15-win32.zip a28bbe38714ef7817b1c1e8082a48f391f15e4043402444b783952fca939edc1 + w_try_unzip "$W_SYSTEM32_DLLS" "$W_CACHE"/sdl/SDL-1.2.15-win32.zip SDL.dll } #---------------------------------------------------------------- @@ -10225,14 +11642,17 @@ load_shockwave() { # 2018/03/16: 4d7b408cf5b65a522b071d7d9ddbc5f6964911a7d55c418e31f393e6055cf796 # 2018/05/24: 2b03fa11ff6f31b3fef9313264f0ef356ee11d5bc3642c30a2482b4ac5dd0084 # 2018/06/14: a37f6c47b74fa3c96906e01b9b41d63c08d212fa3e357e354db1b5a93eb92c2f - w_download https://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/sw_lic_full_installer.msi a37f6c47b74fa3c96906e01b9b41d63c08d212fa3e357e354db1b5a93eb92c2f + # 2019/04/02: 8e414c1a218157d2b83877fb0b6a5002c2e9bff4dc2a3095bae774a13e3e9dbf + w_download https://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/sw_lic_full_installer.msi 8e414c1a218157d2b83877fb0b6a5002c2e9bff4dc2a3095bae774a13e3e9dbf w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" msiexec /i sw_lic_full_installer.msi $W_UNATTENDED_SLASH_Q + w_try "$WINE" msiexec /i sw_lic_full_installer.msi ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- +# While this is an sdk, some apps require it (those needing sapi.dll), +# so keeping in the dll category w_metadata speechsdk dlls \ title="MS Speech SDK 5.1" \ publisher="Microsoft" \ @@ -10243,6 +11663,8 @@ w_metadata speechsdk dlls \ load_speechsdk() { + w_package_warn_win64 + # https://www.microsoft.com/en-us/download/details.aspx?id=10121 w_download https://download.microsoft.com/download/B/4/3/B4314928-7B71-4336-9DE7-6FA4CF00B7B3/SpeechSDK51.exe 520aa5d1a72dc6f41dc9b8b88603228ffd5d5d6f696224fc237ec4828fe7f6e0 @@ -10259,15 +11681,17 @@ load_speechsdk() done w_try_cd "$W_TMP" - w_try "$WINE" msiexec /i "Microsoft Speech SDK 5.1.msi" $W_UNATTENDED_SLASH_Q + w_try "$WINE" msiexec /i "Microsoft Speech SDK 5.1.msi" ${W_OPT_UNATTENDED:+/q} # If sapi.dll isn't in original location, applications won't start, see # e.g., https://bugs.winehq.org/show_bug.cgi?id=43841 - w_try ln -s "$W_COMMONFILES_X86/Microsoft Shared/Speech/sapi.dll" "$W_32BIT_DLLS/Speech/Common" + mkdir -p "$W_SYSTEM32_DLLS/Speech/Common/" + w_try ln -s "$W_COMMONFILES_X86/Microsoft Shared/Speech/sapi.dll" "$W_SYSTEM32_DLLS/Speech/Common" w_override_dlls native sapi - w_unset_winver + # SAPI 5.1 doesn't work on vista and newer + w_set_winver winxp } #---------------------------------------------------------------- @@ -10307,6 +11731,31 @@ load_updspapi() #---------------------------------------------------------------- +w_metadata urlmon dlls \ + title="MS urlmon" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/urlmon.dll" + +load_urlmon() +{ + helper_win7sp1 x86_microsoft-windows-i..ersandsecurityzones_31bf3856ad364e35_8.0.7601.17514_none_d1a4c8feac0dfcdb/urlmon.dll + w_try cp "$W_TMP/x86_microsoft-windows-i..ersandsecurityzones_31bf3856ad364e35_8.0.7601.17514_none_d1a4c8feac0dfcdb/urlmon.dll" "$W_SYSTEM32_DLLS/urlmon.dll" + + if [ "$W_ARCH" = "win64" ]; then + helper_win7sp1_x64 amd64_microsoft-windows-i..ersandsecurityzones_31bf3856ad364e35_8.0.7601.17514_none_2dc36482646b6e11/urlmon.dll + w_try cp "$W_TMP/amd64_microsoft-windows-i..ersandsecurityzones_31bf3856ad364e35_8.0.7601.17514_none_2dc36482646b6e11/urlmon.dll" "$W_SYSTEM64_DLLS/urlmon.dll" + fi + + w_override_dlls native,builtin urlmon + + w_call iertutil +} + +#---------------------------------------------------------------- + w_metadata usp10 dlls \ title="Uniscribe" \ publisher="Microsoft" \ @@ -10401,7 +11850,7 @@ load_vb5run() { w_download https://download.microsoft.com/download/vb50pro/utility/1/win98/en-us/msvbvm50.exe b5f8ea5b9d8b30822a2be2cdcb89cda99ec0149832659ad81f45360daa6e6965 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" msvbvm50.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" msvbvm50.exe ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- @@ -10420,7 +11869,7 @@ load_vb6run() if test ! -f "$W_CACHE"/vb6run/vbrun60sp6.exe; then w_download https://download.microsoft.com/download/5/a/d/5ad868a0-8ecd-4bb0-a882-fe53eb7ef348/VB6.0-KB290887-X86.exe 467b5a10c369865f2021d379fc0933cb382146b702bbca4bcb703fc86f4322bb - w_try "$WINE" "$W_CACHE"/vb6run/VB6.0-KB290887-X86.exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q + w_try "$WINE" "$W_CACHE"/vb6run/VB6.0-KB290887-X86.exe "/T:$W_TMP_WIN" /c ${W_OPT_UNATTENDED:+/q} if test ! -f "$W_TMP"/vbrun60sp6.exe; then w_die vbrun60sp6.exe not found fi @@ -10435,7 +11884,7 @@ load_vb6run() w_try_cd "$W_CACHE/$W_PACKAGE" # Exits with status 43 for some reason? - "$WINE" vbrun60sp6.exe $W_UNATTENDED_SLASH_Q + "$WINE" vbrun60sp6.exe ${W_OPT_UNATTENDED:+/q} status=$? case $status in @@ -10450,7 +11899,7 @@ winetricks_vcrun6_helper() { if test ! -f "$W_CACHE"/vcrun6/vcredist.exe; then w_download_to vcrun6 https://download.microsoft.com/download/vc60pro/Update/2/W9XNT4/EN-US/VC6RedistSetup_deu.exe c2eb91d9c4448d50e46a32fecbcc3b418706d002beab9b5f4981de552098cee7 - w_try "$WINE" "$W_CACHE"/vcrun6/vc6redistsetup_deu.exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q + w_try "$WINE" "$W_CACHE"/vcrun6/vc6redistsetup_deu.exe "/T:$W_TMP_WIN" /c ${W_OPT_UNATTENDED:+/q} if test ! -f "$W_TMP"/vcredist.exe; then w_die vcredist.exe not found fi @@ -10576,13 +12025,26 @@ w_metadata vcrun2003 dlls \ load_vcrun2003() { - # Load the Visual C++ 2003 runtime libraries # Sadly, I know of no Microsoft URL for these - echo "Installing BZFlag (which comes with the Visual C++ 2003 runtimes)" # winetricks-test can't handle ${file1} in url since it does a raw parsing :/ w_download https://sourceforge.net/projects/bzflag/files/bzedit%20win32/1.6.5/BZEditW32_1.6.5.exe 84d1bda5dbf814742898a2e1c0e4bc793e9bc1fba4b7a93d59a7ef12bd0fd802 - w_try "$WINE" "$W_CACHE/vcrun2003/${file1}" $W_UNATTENDED_SLASH_S - w_try cp "$W_PROGRAMS_X86_UNIX/BZEdit1.6.5"/m*71* "$W_SYSTEM32_DLLS" + + w_try_7z "$W_SYSTEM32_DLLS" "${W_CACHE}/vcrun2003/BZEditW32_1.6.5.exe" "mfc71.dll" "msvcp71.dll" "msvcr71.dll" -y +} + +w_metadata mfc71 dlls \ + title="Visual C++ 2003 mfc71 library; part of vcrun2003" \ + publisher="Microsoft" \ + year="2003" \ + media="download" \ + file1="BZEditW32_1.6.5.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/mfc71.dll" + +load_mfc71() +{ + w_download_to vcrun2003 https://sourceforge.net/projects/bzflag/files/bzedit%20win32/1.6.5/BZEditW32_1.6.5.exe 84d1bda5dbf814742898a2e1c0e4bc793e9bc1fba4b7a93d59a7ef12bd0fd802 + + w_try_7z "$W_SYSTEM32_DLLS" "${W_CACHE}/vcrun2003/BZEditW32_1.6.5.exe" "mfc71.dll" -y } #---------------------------------------------------------------- @@ -10619,30 +12081,44 @@ load_vcrun2005() w_override_dlls native,builtin atl80 msvcm80 msvcp80 msvcr80 vcomp w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" $W_UNATTENDED_SLASH_Q + w_try "$WINE" "$file1" ${W_OPT_UNATTENDED:+/q} - if [ $W_ARCH = win64 ] ;then - w_download https://download.microsoft.com/download/9/1/4/914851c6-9141-443b-bdb4-8bad3a57bea9/vcredist_x64.exe bb9e8606e26c2b76984252182f7db0d6e9108b204b81d2a7b036c9b618c1f9f1 + if [ "$W_ARCH" = "win64" ] ;then + w_download https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE 0551a61c85b718e1fa015b0c3e3f4c4eea0637055536c00e7969286b4fa663e0 + w_try "$WINE" vcredist_x64.exe ${W_OPT_UNATTENDED:+/q} + fi +} - if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls"; then - rm -f "$W_TMP"/* # Avoid permission error - w_try_cabextract --directory="$W_TMP" vcredist_x64.exe - w_try_cabextract --directory="$W_TMP" "$W_TMP/VCREDI~2.EXE" - w_try_cabextract --directory="$W_TMP" "$W_TMP/vcredist.msi" +w_metadata mfc80 dlls \ + title="Visual C++ 2005 mfc80 library; part of vcrun2005" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../vcrun2005/vcredist_x86.EXE" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/mfc80.dll" - w_try cp "$W_TMP/ATL80.dll.837BF1EB_D770_94EB_FF1F_C8B3B9A1E18E" "$W_SYSTEM64_DLLS/atl80.dll" - w_try cp "$W_TMP/mfc80.dll.8731EA9C_B0D8_8F16_FF1F_C8B3B9A1E18E" "$W_SYSTEM64_DLLS/mfc80.dll" - w_try cp "$W_TMP/mfc80u.dll.8731EA9C_B0D8_8F16_FF1F_C8B3B9A1E18E" "$W_SYSTEM64_DLLS/mfc80u.dll" - w_try cp "$W_TMP/mfcm80.dll.8731EA9C_B0D8_8F16_FF1F_C8B3B9A1E18E" "$W_SYSTEM64_DLLS/mfcm80.dll" - w_try cp "$W_TMP/mfcm80u.dll.8731EA9C_B0D8_8F16_FF1F_C8B3B9A1E18E" "$W_SYSTEM64_DLLS/mfcm80u.dll" +load_mfc80() +{ + w_download_to vcrun2005 https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.EXE 4ee4da0fe62d5fa1b5e80c6e6d88a4a2f8b3b140c35da51053d0d7b72a381d29 - w_try cp "$W_TMP/msvcm80.dll.844EFBA7_1C24_93B2_FF1F_C8B3B9A1E18E" "$W_SYSTEM64_DLLS/msvcm80.dll" - w_try cp "$W_TMP/msvcp80.dll.844EFBA7_1C24_93B2_FF1F_C8B3B9A1E18E" "$W_SYSTEM64_DLLS/msvcp80.dll" - w_try cp "$W_TMP/msvcr80.dll.844EFBA7_1C24_93B2_FF1F_C8B3B9A1E18E" "$W_SYSTEM64_DLLS/msvcr80.dll" - w_try cp "$W_TMP/vcomp.dll.09D44781_D142_FE32_FF1F_C8B3B9A1E18E" "$W_SYSTEM64_DLLS/vcomp80.dll" - else - w_try "$WINE" vcredist_x64.exe $W_UNATTENDED_SLASH_Q - fi + w_try_cabextract --directory="$W_TMP/win32" "$W_CACHE"/vcrun2005/vcredist_x86.EXE -F 'vcredist.msi' + w_try_cabextract --directory="$W_TMP/win32" "$W_TMP/win32/vcredist.msi" + + w_try cp "$W_TMP/win32"/mfc80.dll.8.0.50727.6195.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E "$W_SYSTEM32_DLLS"/mfc80.dll + w_try cp "$W_TMP/win32"/mfc80u.dll.8.0.50727.6195.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E "$W_SYSTEM32_DLLS"/mfc80u.dll + w_try cp "$W_TMP/win32"/mfcm80.dll.8.0.50727.6195.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E "$W_SYSTEM32_DLLS"/mfcm80.dll + w_try cp "$W_TMP/win32"/mfcm80u.dll.8.0.50727.6195.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E "$W_SYSTEM32_DLLS"/mfcm80u.dll + + if [ "$W_ARCH" = "win64" ]; then + w_download_to vcrun2005 https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE 0551a61c85b718e1fa015b0c3e3f4c4eea0637055536c00e7969286b4fa663e0 + + w_try_cabextract --directory="$W_TMP/win64" "$W_CACHE"/vcrun2005/vcredist_x64.EXE -F 'vcredist.msi' + w_try_cabextract --directory="$W_TMP/win64" "$W_TMP/win64/vcredist.msi" + + w_try cp "$W_TMP/win64"/mfc80.dll.8.0.50727.6195.8731EA9C_B0D8_8F16_FF1F_C8B3B9A1E18E "$W_SYSTEM64_DLLS"/mfc80.dll + w_try cp "$W_TMP/win64"/mfc80u.dll.8.0.50727.6195.8731EA9C_B0D8_8F16_FF1F_C8B3B9A1E18E "$W_SYSTEM64_DLLS"/mfc80u.dll + w_try cp "$W_TMP/win64"/mfcm80.dll.8.0.50727.6195.8731EA9C_B0D8_8F16_FF1F_C8B3B9A1E18E "$W_SYSTEM64_DLLS"/mfcm80.dll + w_try cp "$W_TMP/win64"/mfcm80u.dll.8.0.50727.6195.8731EA9C_B0D8_8F16_FF1F_C8B3B9A1E18E "$W_SYSTEM64_DLLS"/mfcm80u.dll fi } @@ -10670,20 +12146,17 @@ load_vcrun2008() # https://bugs.winehq.org/show_bug.cgi?id=28225 # https://bugs.winehq.org/show_bug.cgi?id=33604 # https://bugs.winehq.org/show_bug.cgi?id=42859 - # https://bugs.winehq.org/show_bug.cgi?id=28225 - # https://bugs.winehq.org/show_bug.cgi?id=33604 - # https://bugs.winehq.org/show_bug.cgi?id=42859 w_override_dlls native,builtin atl90 msvcm90 msvcp90 msvcr90 vcomp90 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" $W_UNATTENDED_SLASH_Q + w_try "$WINE" "$file1" ${W_OPT_UNATTENDED:+/q} case "$W_ARCH" in win64) # Also install the 64-bit version # 2016/11/15: b811f2c047a3e828517c234bd4aa4883e1ec591d88fad21289ae68a6915a6665 w_download https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe b811f2c047a3e828517c234bd4aa4883e1ec591d88fad21289ae68a6915a6665 - if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls"; then + if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls" ,3.8; then rm -f "$W_TMP"/* # Avoid permission error w_try_cabextract --directory="$W_TMP" vcredist_x64.exe w_try_cabextract --directory="$W_TMP" "$W_TMP/vc_red.cab" @@ -10696,12 +12169,45 @@ load_vcrun2008() w_try cp "$W_TMP"/msvcr90.dll.30729.6161.Microsoft_VC90_CRT_x64.QFE "$W_SYSTEM64_DLLS"/msvcr90.dll w_try cp "$W_TMP"/vcomp90.dll.30729.6161.Microsoft_VC90_OpenMP_x64.QFE "$W_SYSTEM64_DLLS"/vcomp90.dll else - w_try "$WINE" vcredist_x64.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vcredist_x64.exe ${W_OPT_UNATTENDED:+/q} fi ;; esac } +w_metadata mfc90 dlls \ + title="Visual C++ 2008 mfc90 library; part of vcrun2008" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../vcrun2008/vcredist_x86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/mfc90.dll" + +load_mfc90() +{ + w_download_to vcrun2008 https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe 6b3e4c51c6c0e5f68c8a72b497445af3dbf976394cbb62aa23569065c28deeb6 + + w_try_cabextract --directory="$W_TMP/win32" "$W_CACHE"/vcrun2008/vcredist_x86.exe -F 'vc_red.cab' + w_try_cabextract --directory="$W_TMP/win32" "$W_TMP/win32/vc_red.cab" + + w_try cp "$W_TMP/win32"/mfc90.dll.30729.6161.Microsoft_VC90_MFC_x86.QFE "$W_SYSTEM32_DLLS"/mfc90.dll + w_try cp "$W_TMP/win32"/mfc90u.dll.30729.6161.Microsoft_VC90_MFC_x86.QFE "$W_SYSTEM32_DLLS"/mfc90u.dll + w_try cp "$W_TMP/win32"/mfcm90.dll.30729.6161.Microsoft_VC90_MFC_x86.QFE "$W_SYSTEM32_DLLS"/mfcm90.dll + w_try cp "$W_TMP/win32"/mfcm90u.dll.30729.6161.Microsoft_VC90_MFC_x86.QFE "$W_SYSTEM32_DLLS"/mfcm90u.dll + + if [ "$W_ARCH" = "win64" ]; then + w_download_to vcrun2008 https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe b811f2c047a3e828517c234bd4aa4883e1ec591d88fad21289ae68a6915a6665 + + w_try_cabextract --directory="$W_TMP/win64" "$W_CACHE"/vcrun2008/vcredist_x64.exe -F 'vc_red.cab' + w_try_cabextract --directory="$W_TMP/win64" "$W_TMP/win64/vc_red.cab" + + w_try cp "$W_TMP/win64"/mfc90.dll.30729.6161.Microsoft_VC90_MFC_x64.QFE "$W_SYSTEM64_DLLS"/mfc90.dll + w_try cp "$W_TMP/win64"/mfc90u.dll.30729.6161.Microsoft_VC90_MFC_x64.QFE "$W_SYSTEM64_DLLS"/mfc90u.dll + w_try cp "$W_TMP/win64"/mfcm90.dll.30729.6161.Microsoft_VC90_MFC_x64.QFE "$W_SYSTEM64_DLLS"/mfcm90.dll + w_try cp "$W_TMP/win64"/mfcm90u.dll.30729.6161.Microsoft_VC90_MFC_x64.QFE "$W_SYSTEM64_DLLS"/mfcm90u.dll + fi +} + #---------------------------------------------------------------- w_metadata vcrun2010 dlls \ @@ -10719,14 +12225,14 @@ load_vcrun2010() w_override_dlls native,builtin msvcp100 msvcr100 vcomp100 atl100 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" vcredist_x86.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vcredist_x86.exe ${W_OPT_UNATTENDED:+/q} case "$W_ARCH" in win64) # Also install the 64-bit version # https://www.microsoft.com/en-us/download/details.aspx?id=13523 w_download https://download.microsoft.com/download/A/8/0/A80747C3-41BD-45DF-B505-E9710D2744E0/vcredist_x64.exe c6cd2d3f0b11dc2a604ffdc4dd97861a83b77e21709ba71b962a47759c93f4c8 - if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls"; then + if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls" ,3.8; then w_try_cabextract --directory="$W_TMP" vcredist_x64.exe -F '*.cab' w_try_cabextract --directory="$W_TMP" "$W_TMP"/vc_red.cab cp "$W_TMP"/F_CENTRAL_mfc100_x64 "$W_SYSTEM64_DLLS"/mfc100.dll @@ -10736,12 +12242,45 @@ load_vcrun2010() cp "$W_TMP"/F_CENTRAL_vcomp100_x64 "$W_SYSTEM64_DLLS"/vcomp100.dll cp "$W_TMP"/F_CENTRAL_atl100_x64 "$W_SYSTEM64_DLLS"/atl100.dll else - w_try "$WINE" vcredist_x64.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vcredist_x64.exe ${W_OPT_UNATTENDED:+/q} fi ;; esac } +w_metadata mfc100 dlls \ + title="Visual C++ 2010 mfc100 library; part of vcrun2010" \ + publisher="Microsoft" \ + year="2010" \ + media="download" \ + file1="../vcrun2010/vcredist_x86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/mfc100u.dll" + +load_mfc100() +{ + w_download_to vcrun2010 https://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe 8162b2d665ca52884507ede19549e99939ce4ea4a638c537fa653539819138c8 + + w_try_cabextract --directory="$W_TMP/win32" "$W_CACHE"/vcrun2010/vcredist_x86.exe -F '*.cab' + w_try_cabextract --directory="$W_TMP/win32" "$W_TMP/win32/vc_red.cab" + + w_try cp "$W_TMP/win32"/F_CENTRAL_mfc100_x86 "$W_SYSTEM32_DLLS"/mfc100.dll + w_try cp "$W_TMP/win32"/F_CENTRAL_mfc100u_x86 "$W_SYSTEM32_DLLS"/mfc100u.dll + w_try cp "$W_TMP/win32"/F_CENTRAL_mfcm100_x86 "$W_SYSTEM32_DLLS"/mfcm100.dll + w_try cp "$W_TMP/win32"/F_CENTRAL_mfcm100u_x86 "$W_SYSTEM32_DLLS"/mfcm100u.dll + + if [ "$W_ARCH" = "win64" ]; then + w_download_to vcrun2010 https://download.microsoft.com/download/A/8/0/A80747C3-41BD-45DF-B505-E9710D2744E0/vcredist_x64.exe c6cd2d3f0b11dc2a604ffdc4dd97861a83b77e21709ba71b962a47759c93f4c8 + + w_try_cabextract --directory="$W_TMP/win64" "$W_CACHE"/vcrun2010/vcredist_x64.exe -F '*.cab' + w_try_cabextract --directory="$W_TMP/win64" "$W_TMP/win64/vc_red.cab" + + w_try cp "$W_TMP/win64"/F_CENTRAL_mfc100_x64 "$W_SYSTEM64_DLLS"/mfc100.dll + w_try cp "$W_TMP/win64"/F_CENTRAL_mfc100u_x64 "$W_SYSTEM64_DLLS"/mfc100u.dll + w_try cp "$W_TMP/win64"/F_CENTRAL_mfcm100_x64 "$W_SYSTEM64_DLLS"/mfcm100.dll + w_try cp "$W_TMP/win64"/F_CENTRAL_mfcm100u_x64 "$W_SYSTEM64_DLLS"/mfcm100u.dll + fi +} + #---------------------------------------------------------------- w_metadata vcrun2012 dlls \ @@ -10759,14 +12298,14 @@ load_vcrun2012() w_override_dlls native,builtin atl110 msvcp110 msvcr110 vcomp110 w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" vcredist_x86.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vcredist_x86.exe ${W_OPT_UNATTENDED:+/q} case "$W_ARCH" in win64) # Also install the 64-bit version # 2015/10/19: 681be3e5ba9fd3da02c09d7e565adfa078640ed66a0d58583efad2c1e3cc4064 w_download https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe 681be3e5ba9fd3da02c09d7e565adfa078640ed66a0d58583efad2c1e3cc4064 - if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls"; then + if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls" ,3.8; then rm -f "$W_TMP"/* # Avoid permission error w_try_cabextract --directory="$W_TMP" vcredist_x64.exe w_try_cabextract --directory="$W_TMP" "$W_TMP/a2" @@ -10778,12 +12317,45 @@ load_vcrun2012() cp "$W_TMP"/F_CENTRAL_msvcr110_x64 "$W_SYSTEM64_DLLS"/msvcr110.dll cp "$W_TMP"/F_CENTRAL_vcomp110_x64 "$W_SYSTEM64_DLLS"/vcomp110.dll else - w_try "$WINE" vcredist_x64.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vcredist_x64.exe ${W_OPT_UNATTENDED:+/q} fi ;; esac } +w_metadata mfc110 dlls \ + title="Visual C++ 2012 mfc110 library; part of vcrun2012" \ + publisher="Microsoft" \ + year="2012" \ + media="download" \ + file1="../vcrun2012/vcredist_x86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/mfc110u.dll" + +load_mfc110() +{ + w_download_to vcrun2012 https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe b924ad8062eaf4e70437c8be50fa612162795ff0839479546ce907ffa8d6e386 + + w_try_cabextract --directory="$W_TMP/win32" "$W_CACHE"/vcrun2012/vcredist_x86.exe -F 'a3' + w_try_cabextract --directory="$W_TMP/win32" "$W_TMP/win32/a3" + + w_try cp "$W_TMP/win32"/F_CENTRAL_mfc110_x86 "$W_SYSTEM32_DLLS"/mfc110.dll + w_try cp "$W_TMP/win32"/F_CENTRAL_mfc110u_x86 "$W_SYSTEM32_DLLS"/mfc110u.dll + w_try cp "$W_TMP/win32"/F_CENTRAL_mfcm110_x86 "$W_SYSTEM32_DLLS"/mfcm110.dll + w_try cp "$W_TMP/win32"/F_CENTRAL_mfcm110u_x86 "$W_SYSTEM32_DLLS"/mfcm110u.dll + + if [ "$W_ARCH" = "win64" ]; then + w_download_to vcrun2012 https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe 681be3e5ba9fd3da02c09d7e565adfa078640ed66a0d58583efad2c1e3cc4064 + + w_try_cabextract --directory="$W_TMP/win64" "$W_CACHE"/vcrun2012/vcredist_x64.exe -F 'a3' + w_try_cabextract --directory="$W_TMP/win64" "$W_TMP/win64/a3" + + w_try cp "$W_TMP/win64"/F_CENTRAL_mfc110_x64 "$W_SYSTEM64_DLLS"/mfc110.dll + w_try cp "$W_TMP/win64"/F_CENTRAL_mfc110u_x64 "$W_SYSTEM64_DLLS"/mfc110u.dll + w_try cp "$W_TMP/win64"/F_CENTRAL_mfcm110_x64 "$W_SYSTEM64_DLLS"/mfcm110.dll + w_try cp "$W_TMP/win64"/F_CENTRAL_mfcm110u_x64 "$W_SYSTEM64_DLLS"/mfcm110u.dll + fi +} + #---------------------------------------------------------------- w_metadata vcrun2013 dlls \ @@ -10796,20 +12368,22 @@ w_metadata vcrun2013 dlls \ load_vcrun2013() { - # https://www.microsoft.com/en-us/download/details.aspx?id=40784 + # https://support.microsoft.com/en-gb/help/3179560/update-for-visual-c-2013-and-visual-c-redistributable-package # 2015/01/14: a22895e55b26202eae166838edbe2ea6aad00d7ea600c11f8a31ede5cbce2048 - w_download https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe a22895e55b26202eae166838edbe2ea6aad00d7ea600c11f8a31ede5cbce2048 + # 2019/03/24: 89f4e593ea5541d1c53f983923124f9fd061a1c0c967339109e375c661573c17 + w_download https://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/vcredist_x86.exe 89f4e593ea5541d1c53f983923124f9fd061a1c0c967339109e375c661573c17 w_override_dlls native,builtin atl120 msvcp120 msvcr120 vcomp120 w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" vcredist_x86.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vcredist_x86.exe ${W_OPT_UNATTENDED:+/q} case "$W_ARCH" in win64) # Also install the 64-bit version # 2015/10/19: e554425243e3e8ca1cd5fe550db41e6fa58a007c74fad400274b128452f38fb8 - w_download https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe e554425243e3e8ca1cd5fe550db41e6fa58a007c74fad400274b128452f38fb8 - if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls"; then + # 2019/03/24: 20e2645b7cd5873b1fa3462b99a665ac8d6e14aae83ded9d875fea35ffdd7d7e + w_download https://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/vcredist_x64.exe 20e2645b7cd5873b1fa3462b99a665ac8d6e14aae83ded9d875fea35ffdd7d7e + if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls" ,3.8; then rm -f "$W_TMP"/* # Avoid permission error w_try_cabextract --directory="$W_TMP" vcredist_x64.exe w_try_cabextract --directory="$W_TMP" "$W_TMP/a2" @@ -10820,12 +12394,45 @@ load_vcrun2013() cp "$W_TMP"/F_CENTRAL_msvcr120_x64 "$W_SYSTEM64_DLLS"/msvcr120.dll cp "$W_TMP"/F_CENTRAL_vcomp120_x64 "$W_SYSTEM64_DLLS"/vcomp120.dll else - w_try "$WINE" vcredist_x64.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vcredist_x64.exe ${W_OPT_UNATTENDED:+/q} fi ;; esac } +w_metadata mfc120 dlls \ + title="Visual C++ 2013 mfc120 library; part of vcrun2013" \ + publisher="Microsoft" \ + year="2013" \ + media="download" \ + file1="../vcrun2013/vcredist_x86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/mfc120u.dll" + +load_mfc120() +{ + w_download_to vcrun2013 https://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/vcredist_x86.exe 89f4e593ea5541d1c53f983923124f9fd061a1c0c967339109e375c661573c17 + + w_try_cabextract --directory="$W_TMP/win32" "$W_CACHE"/vcrun2013/vcredist_x86.exe -F 'a3' + w_try_cabextract --directory="$W_TMP/win32" "$W_TMP/win32/a3" + + w_try cp "$W_TMP/win32"/F_CENTRAL_mfc120_x86 "$W_SYSTEM32_DLLS"/mfc120.dll + w_try cp "$W_TMP/win32"/F_CENTRAL_mfc120u_x86 "$W_SYSTEM32_DLLS"/mfc120u.dll + w_try cp "$W_TMP/win32"/F_CENTRAL_mfcm120_x86 "$W_SYSTEM32_DLLS"/mfcm120.dll + w_try cp "$W_TMP/win32"/F_CENTRAL_mfcm120u_x86 "$W_SYSTEM32_DLLS"/mfcm120u.dll + + if [ "$W_ARCH" = "win64" ]; then + w_download_to vcrun2013 https://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/vcredist_x64.exe 20e2645b7cd5873b1fa3462b99a665ac8d6e14aae83ded9d875fea35ffdd7d7e + + w_try_cabextract --directory="$W_TMP/win64" "$W_CACHE"/vcrun2013/vcredist_x64.exe -F 'a3' + w_try_cabextract --directory="$W_TMP/win64" "$W_TMP/win64/a3" + + w_try cp "$W_TMP/win64"/F_CENTRAL_mfc120_x64 "$W_SYSTEM64_DLLS"/mfc120.dll + w_try cp "$W_TMP/win64"/F_CENTRAL_mfc120u_x64 "$W_SYSTEM64_DLLS"/mfc120u.dll + w_try cp "$W_TMP/win64"/F_CENTRAL_mfcm120_x64 "$W_SYSTEM64_DLLS"/mfcm120.dll + w_try cp "$W_TMP/win64"/F_CENTRAL_mfcm120u_x64 "$W_SYSTEM64_DLLS"/mfcm120u.dll + fi +} + #---------------------------------------------------------------- w_metadata vcrun2015 dlls \ @@ -10833,7 +12440,7 @@ w_metadata vcrun2015 dlls \ publisher="Microsoft" \ year="2015" \ media="download" \ - conflicts="vcrun2017" \ + conflicts="vcrun2017 vcrun2019" \ file1="vc_redist.x86.exe" \ installed_file1="$W_SYSTEM32_DLLS_WIN/mfc140.dll" @@ -10847,19 +12454,19 @@ load_vcrun2015() w_warn "This may fail in non-XP mode, see https://bugs.winehq.org/show_bug.cgi?id=37781" fi - w_override_dlls native,builtin api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcr140 ucrtbase vcomp140 vcruntime140 + w_override_dlls native,builtin api-ms-win-crt-private-l1-1-0 api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcr140 ucrtbase vcomp140 vcruntime140 w_set_winver winxp w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" vc_redist.x86.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vc_redist.x86.exe ${W_OPT_UNATTENDED:+/q} case "$W_ARCH" in win64) # Also install the 64-bit version # 2015/10/12: 5eea714e1f22f1875c1cb7b1738b0c0b1f02aec5ecb95f0fdb1c5171c6cd93a3 w_download https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe 5eea714e1f22f1875c1cb7b1738b0c0b1f02aec5ecb95f0fdb1c5171c6cd93a3 - if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls"; then + if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls", 3.8; then rm -f "$W_TMP"/* # Avoid permission error w_try_cabextract --directory="$W_TMP" vc_redist.x64.exe w_try_cabextract --directory="$W_TMP" "$W_TMP/a10" @@ -10883,12 +12490,45 @@ load_vcrun2015() cp "$W_TMP"/api_ms_win_crt_stdio_l1_1_0.dll "$W_SYSTEM64_DLLS"/api-ms-win-crt-stdio-l1-1-0.dll cp "$W_TMP"/ucrtbase.dll "$W_SYSTEM64_DLLS"/ucrtbase.dll else - w_try "$WINE" vc_redist.x64.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vc_redist.x64.exe ${W_OPT_UNATTENDED:+/q} fi ;; esac } +w_metadata mfc140 dlls \ + title="Visual C++ 2015 mfc140 library; part of vcrun2015" \ + publisher="Microsoft" \ + year="2015" \ + media="download" \ + file1="../vcrun2015/vc_redist.x86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/mfc140u.dll" + +load_mfc140() +{ + w_download_to vcrun2015 https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe fdd1e1f0dcae2d0aa0720895eff33b927d13076e64464bb7c7e5843b7667cd14 + + w_try_cabextract --directory="$W_TMP/win32" "$W_CACHE"/vcrun2015/vc_redist.x86.exe -F 'a11' + w_try_cabextract --directory="$W_TMP/win32" "$W_TMP/win32/a11" + + w_try cp "$W_TMP/win32"/mfc140.dll "$W_SYSTEM32_DLLS"/mfc140.dll + w_try cp "$W_TMP/win32"/mfc140u.dll "$W_SYSTEM32_DLLS"/mfc140u.dll + w_try cp "$W_TMP/win32"/mfcm140.dll "$W_SYSTEM32_DLLS"/mfcm140.dll + w_try cp "$W_TMP/win32"/mfcm140u.dll "$W_SYSTEM32_DLLS"/mfcm140u.dll + + if [ "$W_ARCH" = "win64" ]; then + w_download_to vcrun2015 https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe 5eea714e1f22f1875c1cb7b1738b0c0b1f02aec5ecb95f0fdb1c5171c6cd93a3 + + w_try_cabextract --directory="$W_TMP/win64" "$W_CACHE"/vcrun2015/vc_redist.x64.exe -F 'a11' + w_try_cabextract --directory="$W_TMP/win64" "$W_TMP/win64/a11" + + w_try cp "$W_TMP/win64"/mfc140.dll "$W_SYSTEM64_DLLS"/mfc140.dll + w_try cp "$W_TMP/win64"/mfc140u.dll "$W_SYSTEM64_DLLS"/mfc140u.dll + w_try cp "$W_TMP/win64"/mfcm140.dll "$W_SYSTEM64_DLLS"/mfcm140.dll + w_try cp "$W_TMP/win64"/mfcm140u.dll "$W_SYSTEM64_DLLS"/mfcm140u.dll + fi +} + #---------------------------------------------------------------- w_metadata vcrun2017 dlls \ @@ -10896,37 +12536,40 @@ w_metadata vcrun2017 dlls \ publisher="Microsoft" \ year="2017" \ media="download" \ - conflicts="vcrun2015" \ - file1="VC_redist.x86.exe" \ + conflicts="vcrun2015 vcrun2019" \ + file1="vc_redist.x86.exe" \ installed_file1="$W_SYSTEM32_DLLS_WIN/mfc140.dll" -# FIXME: There's a conflict with vcrun2015 because the dll's version number for 2017 and 2015 are the same. Correct behavior should be compared to native Windows. load_vcrun2017() { - # https://go.microsoft.com/fwlink/?LinkId=746571 + # https://support.microsoft.com/en-gb/help/2977003/the-latest-supported-visual-c-downloads # 2017/10/02: 2da11e22a276be85970eaed255daf3d92af84e94142ec04252326a882e57303e - w_download https://download.visualstudio.microsoft.com/download/pr/11100229/78c1e864d806e36f6035d80a0e80399e/VC_redist.x86.exe 2da11e22a276be85970eaed255daf3d92af84e94142ec04252326a882e57303e + # 2019/03/17: 7355962b95d6a5441c304cd2b86baf37bc206f63349f4a02289bcfb69ef142d3 + # 2019/08/14: 54ad46ae80984aa48cae6361213692c96b3639e322730d28c7fb93b183c761da + w_download https://aka.ms/vs/15/release/vc_redist.x86.exe 54ad46ae80984aa48cae6361213692c96b3639e322730d28c7fb93b183c761da if w_workaround_wine_bug 37781; then w_warn "This may fail in non-XP mode, see https://bugs.winehq.org/show_bug.cgi?id=37781" fi - w_override_dlls native,builtin api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcr140 ucrtbase vcomp140 vcruntime140 + w_override_dlls native,builtin api-ms-win-crt-private-l1-1-0 api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcr140 ucrtbase vcomp140 vcruntime140 w_set_winver winxp w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" VC_redist.x86.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vc_redist.x86.exe ${W_OPT_UNATTENDED:+/q} case "$W_ARCH" in win64) # Also install the 64-bit version - # https://go.microsoft.com/fwlink/?LinkId=746572 + # https://support.microsoft.com/en-gb/help/2977003/the-latest-supported-visual-c-downloads # 2017/10/02: 7434bf559290cccc3dd3624f10c9e6422cce9927d2231d294114b2f929f0e465 - w_download https://download.visualstudio.microsoft.com/download/pr/11100230/15ccb3f02745c7b206ad10373cbca89b/VC_redist.x64.exe 7434bf559290cccc3dd3624f10c9e6422cce9927d2231d294114b2f929f0e465 - if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls"; then + # 2019/03/17: b192e143d55257a0a2f76be42e44ff8ee14014f3b1b196c6e59829b6b3ec453c + # 2019/08/14: 5b0cbb977f2f5253b1ebe5c9d30edbda35dbd68fb70de7af5faac6423db575b5 + w_download https://aka.ms/vs/15/release/vc_redist.x64.exe 5b0cbb977f2f5253b1ebe5c9d30edbda35dbd68fb70de7af5faac6423db575b5 + if w_workaround_wine_bug 30713 "Manually extracting the 64-bit dlls" ,3.8; then rm -f "$W_TMP"/* # Avoid permission error - w_try_cabextract --directory="$W_TMP" VC_redist.x64.exe + w_try_cabextract --directory="$W_TMP" vc_redist.x64.exe w_try_cabextract --directory="$W_TMP" "$W_TMP/a10" w_try_cabextract --directory="$W_TMP" "$W_TMP/a11" cp "$W_TMP"/concrt140.dll "$W_SYSTEM64_DLLS"/concrt140.dll @@ -10948,7 +12591,7 @@ load_vcrun2017() cp "$W_TMP"/api_ms_win_crt_stdio_l1_1_0.dll "$W_SYSTEM64_DLLS"/api-ms-win-crt-stdio-l1-1-0.dll cp "$W_TMP"/ucrtbase.dll "$W_SYSTEM64_DLLS"/ucrtbase.dll else - w_try "$WINE" VC_redist.x64.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" vc_redist.x64.exe ${W_OPT_UNATTENDED:+/q} fi ;; esac @@ -10956,12 +12599,47 @@ load_vcrun2017() #---------------------------------------------------------------- +w_metadata vcrun2019 dlls \ + title="Visual C++ 2015-2019 libraries (concrt140.dll,mfc140.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll)" \ + publisher="Microsoft" \ + year="2019" \ + media="download" \ + conflicts="vcrun2015 vcrun2017" \ + file1="vc_redist.x86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/mfc140.dll" + +load_vcrun2019() +{ + # https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads + # 2019/12/26: e59ae3e886bd4571a811fe31a47959ae5c40d87c583f786816c60440252cd7ec + # 2020/03/23: ac96016f1511ae3eb5ec9de04551146fe351b7f97858dcd67163912e2302f5d6 + # 2020/05/20: a06aac66734a618ab33c1522920654ddfc44fc13cafaa0f0ab85b199c3d51dc0 + w_download https://aka.ms/vs/16/release/vc_redist.x86.exe a06aac66734a618ab33c1522920654ddfc44fc13cafaa0f0ab85b199c3d51dc0 + + w_override_dlls native,builtin api-ms-win-crt-private-l1-1-0 api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcr140 ucrtbase vcomp140 vcruntime140 + + w_try_cd "$W_CACHE"/"$W_PACKAGE" + w_try "$WINE" vc_redist.x86.exe ${W_OPT_UNATTENDED:+/q} + + case "$W_ARCH" in + win64) + # Also install the 64-bit version + # 2019/12/26: 40ea2955391c9eae3e35619c4c24b5aaf3d17aeaa6d09424ee9672aa9372aeed + # 2020/03/23: b6c82087a2c443db859fdbeaae7f46244d06c3f2a7f71c35e50358066253de52 + # 2020/05/20: 7d7105c52fcd6766beee1ae162aa81e278686122c1e44890712326634d0b055e + w_download https://aka.ms/vs/16/release/vc_redist.x64.exe 7d7105c52fcd6766beee1ae162aa81e278686122c1e44890712326634d0b055e + w_try "$WINE" vc_redist.x64.exe ${W_OPT_UNATTENDED:+/q} + ;; + esac +} + +#---------------------------------------------------------------- + w_metadata vjrun20 dlls \ title="MS Visual J# 2.0 SE libraries (requires dotnet20)" \ publisher="Microsoft" \ year="2007" \ media="download" \ - conflicts="dotnet11 dotnet20sp1 dotnet20sp2" \ file1="vjredist.exe" \ installed_file1="c:/windows/Microsoft.NET/Framework/VJSharp/VJSharpSxS10.dll" @@ -10974,7 +12652,7 @@ load_vjrun20() # See https://www.microsoft.com/en-us/download/details.aspx?id=18084 w_download https://download.microsoft.com/download/9/2/3/92338cd0-759f-4815-8981-24b437be74ef/vjredist.exe cf8f3dd4ad41453a302870b74de1c6489e7ed255ad3f652ce4af0b424a933b41 w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" vjredist.exe ${W_OPT_UNATTENDED:+ /q /C:"install $W_UNATTENDED_SLASH_QNT"} + w_try "$WINE" vjredist.exe ${W_OPT_UNATTENDED:+/q /C:"install /qnt"} } #---------------------------------------------------------------- @@ -10985,19 +12663,19 @@ w_metadata vulkanrt dlls \ year="2018" \ media="download" \ file1="VulkanRT-1.1.73.0-Installer.exe" \ - installed_file1="$W_SYSTEM32_DLLS_WIN/vulkan-1.dll" + installed_exe1="$W_SYSTEM32_DLLS_WIN/vulkaninfo.exe" load_vulkanrt() { # https://vulkan.lunarg.com/sdk/home w_download "https://sdk.lunarg.com/sdk/download/1.1.73.0/windows/VulkanRT-1.1.73.0-Installer.exe?Human=true;u=" cfec461b17aff521cf06b727aa612d654d4e72de8e3c21bd219e77b87f56f20a VulkanRT-1.1.73.0-Installer.exe w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" $W_UNATTENDED_SLASH_S + w_try "$WINE" "$file1" ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- -w_metadata vulkansdk dlls \ +w_metadata vulkansdk apps \ title="Vulkan SDK 1.1.73.0 (developers only)" \ publisher="LunarG" \ year="2018" \ @@ -11013,7 +12691,7 @@ load_vulkansdk() # https://vulkan.lunarg.com/sdk/home w_download "https://sdk.lunarg.com/sdk/download/1.1.73.0/windows/VulkanSDK-1.1.73.0-Installer.exe?Human=true;u=" a5d193f97db4de97e6b4fdd81f00ff6a603f66bb17dc3cf8ac0fe9aec58497c7 VulkanSDK-1.1.73.0-Installer.exe w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" $W_UNATTENDED_SLASH_S + w_try "$WINE" "$file1" ${W_OPT_UNATTENDED:+/S} echo "Creating C:\\windows\\winevulkan.json winevulkan json file" cat > "$W_WINDIR_UNIX"/winevulkan.json <<_EOF_ { @@ -11103,10 +12781,13 @@ load_windowscodecs() w_try_cd "$W_CACHE/$W_PACKAGE" if w_workaround_wine_bug 32859 "Working around possibly broken libX11"; then + # shellcheck disable=SC2086 w_try $W_TASKSET "$WINE" "$EXE" /passive else w_try "$WINE" "$EXE" /passive fi + + w_set_winver 'default' } #---------------------------------------------------------------- @@ -11144,18 +12825,15 @@ load_wininet() { helper_win7sp1 x86_microsoft-windows-i..tocolimplementation_31bf3856ad364e35_8.0.7601.17514_none_1eaaa4a07717236e/wininet.dll w_try cp "$W_TMP/x86_microsoft-windows-i..tocolimplementation_31bf3856ad364e35_8.0.7601.17514_none_1eaaa4a07717236e/wininet.dll" "$W_SYSTEM32_DLLS/wininet.dll" - helper_win7sp1 x86_microsoft-windows-ie-runtimeutilities_31bf3856ad364e35_8.0.7601.17514_none_64655b7c61c841cb/iertutil.dll - w_try cp "$W_TMP/x86_microsoft-windows-ie-runtimeutilities_31bf3856ad364e35_8.0.7601.17514_none_64655b7c61c841cb/iertutil.dll" "$W_SYSTEM32_DLLS/iertutil.dll" if [ "$W_ARCH" = "win64" ]; then helper_win7sp1_x64 amd64_microsoft-windows-i..tocolimplementation_31bf3856ad364e35_8.0.7601.17514_none_7ac940242f7494a4/wininet.dll w_try cp "$W_TMP/amd64_microsoft-windows-i..tocolimplementation_31bf3856ad364e35_8.0.7601.17514_none_7ac940242f7494a4/wininet.dll" "$W_SYSTEM64_DLLS/wininet.dll" - helper_win7sp1_x64 amd64_microsoft-windows-ie-runtimeutilities_31bf3856ad364e35_8.0.7601.17514_none_c083f7001a25b301/iertutil.dll - w_try cp "$W_TMP/amd64_microsoft-windows-ie-runtimeutilities_31bf3856ad364e35_8.0.7601.17514_none_c083f7001a25b301/iertutil.dll" "$W_SYSTEM64_DLLS/iertutil.dll" fi w_override_dlls native,builtin wininet - w_override_dlls native,builtin iertutil + + w_call iertutil } #---------------------------------------------------------------- @@ -11196,15 +12874,18 @@ load_wmi() # Mirror list: https://filemare.com/en-us/search/wmi9x.exe/761569271 # 2017/10/14: ftp://59.124.141.94 is dead, using ftp://82.162.138.211 # 2018/06/03: ftp://82.162.138.211 is dead, moved to ftp://ftp.espe.edu.ec - w_download http://alesi.com.mx/soporte/Sharpdesk/Redist/Esp/WMI/wmi9x.exe 1d5d94050354b164c6a19531df151e0703d5eb39cebf4357ee2cfc340c2509d0 + # 2019/12/22: all ftp mirrors I found are dead, so use wayback machine for original MS url + w_download https://web.archive.org/web/20051221074940/https://download.microsoft.com/download/platformsdk/wmi9x/1.5/W9X/EN-US/wmi9x.exe 1d5d94050354b164c6a19531df151e0703d5eb39cebf4357ee2cfc340c2509d0 w_set_winver win98 w_override_dlls native,builtin wbemprox wmiutils # Note: there is a crash in the background towards the end, doesn't seem to hurt; see https://bugs.winehq.org/show_bug.cgi?id=7920 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" wmi9x.exe $W_UNATTENDED_SLASH_S - w_unset_winver + w_try "$WINE" wmi9x.exe ${W_OPT_UNATTENDED:+/S} + w_killall "WinMgmt.exe" + + w_set_winver 'default' } #---------------------------------------------------------------- @@ -11260,7 +12941,7 @@ load_wsh57() #---------------------------------------------------------------- w_metadata xact dlls \ - title="MS XACT Engine" \ + title="MS XACT Engine (32-bit only)" \ publisher="Microsoft" \ year="2010" \ media="download" \ @@ -11283,7 +12964,7 @@ load_xact() w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'xapofx*.dll' "$x" done - # Don't install 64-bit xact DLLs. They are broken in Wine, see: + # Don't install 64-bit xact DLLs by default. They are broken in Wine, see: # https://bugs.winehq.org/show_bug.cgi?id=41618#c5 w_override_dlls native,builtin xaudio2_0 xaudio2_1 xaudio2_2 xaudio2_3 xaudio2_4 xaudio2_5 xaudio2_6 xaudio2_7 @@ -11303,6 +12984,52 @@ load_xact() #---------------------------------------------------------------- +w_metadata xact_x64 dlls \ + title="MS XACT Engine (64-bit only)" \ + publisher="Microsoft" \ + year="2010" \ + media="download" \ + file1="../directx9/directx_Jun2010_redist.exe" \ + installed_file1="${W_SYSTEM64_DLLS_WIN64:-does_not_exist}/xactengine2_0.dll" + +load_xact_x64() +{ + w_package_unsupported_win32 + if w_workaround_wine_bug 41618; then + w_warn "While this helps some games, it completely breaks others. You've been warned." + fi + + helper_directx_Jun2010 + + # Extract xactengine?_?.dll, X3DAudio?_?.dll, xaudio?_?.dll, xapofx?_?.dll + w_try_cabextract -d "$W_TMP" -L -F '*_xact_*x64*' "$W_CACHE/directx9/$DIRECTX_NAME" + w_try_cabextract -d "$W_TMP" -L -F '*_x3daudio_*x64*' "$W_CACHE/directx9/$DIRECTX_NAME" + w_try_cabextract -d "$W_TMP" -L -F '*_xaudio_*x64*' "$W_CACHE/directx9/$DIRECTX_NAME" + + for x in "$W_TMP"/*.cab ; do + w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'xactengine*.dll' "$x" + w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'xaudio*.dll' "$x" + w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'x3daudio*.dll' "$x" + w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'xapofx*.dll' "$x" + done + + w_override_dlls native,builtin xaudio2_0 xaudio2_1 xaudio2_2 xaudio2_3 xaudio2_4 xaudio2_5 xaudio2_6 xaudio2_7 + w_override_dlls native,builtin x3daudio1_0 x3daudio1_1 x3daudio1_2 x3daudio1_3 x3daudio1_4 x3daudio1_5 x3daudio1_6 x3daudio1_7 + w_override_dlls native,builtin xapofx1_1 xapofx1_2 xapofx1_3 xapofx1_4 xapofx1_5 + + # Register xactengine?_?.dll + for x in "$W_SYSTEM64_DLLS"/xactengine* ; do + w_try_regsvr64 "$(basename "$x")" + done + + # and xaudio?_?.dll, but not xaudio2_8 (unsupported) + for x in 0 1 2 3 4 5 6 7 ; do + w_try_regsvr64 "$(basename "$W_SYSTEM64_DLLS/xaudio2_${x}")" + done +} + +#---------------------------------------------------------------- + w_metadata xinput dlls \ title="Microsoft XInput (Xbox controller support)" \ publisher="Microsoft" \ @@ -11316,14 +13043,12 @@ load_xinput() helper_directx_Jun2010 w_try_cabextract -d "$W_TMP" -L -F '*_xinput_*x86*' "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*.cab - do + for x in "$W_TMP"/*.cab; do w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'xinput*.dll' "$x" done if test "$W_ARCH" = "win64"; then w_try_cabextract -d "$W_TMP" -L -F '*_xinput_*x64*' "$W_CACHE"/directx9/$DIRECTX_NAME - for x in "$W_TMP"/*x64.cab - do + for x in "$W_TMP"/*x64.cab; do w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'xinput*.dll' "$x" done fi @@ -11371,7 +13096,7 @@ load_xna31() w_call dotnet20sp2 w_download https://download.microsoft.com/download/5/9/1/5912526C-B950-4662-99B6-119A83E60E5C/xnafx31_redist.msi 187e7e6b08fe35428d945612a7d258bfed25fad53cc54882983abdc73fe60f91 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" msiexec $W_UNATTENDED_SLASH_QUIET /i "$file1" + w_try "$WINE" msiexec ${W_OPT_UNATTENDED:+/quiet} /i "$file1" } #---------------------------------------------------------------- @@ -11397,7 +13122,7 @@ load_xna40() # https://www.microsoft.com/en-us/download/details.aspx?id=20914 w_download https://download.microsoft.com/download/A/C/2/AC2C903B-E6E8-42C2-9FD7-BEBAC362A930/xnafx40_redist.msi e6c41d692ebcba854dad4b1c52bb7ddd05926bad3105595d6596b8bab01c25e7 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" msiexec $W_UNATTENDED_SLASH_QUIET /i "$file1" + w_try "$WINE" msiexec ${W_OPT_UNATTENDED:+/quiet} /i "$file1" } #---------------------------------------------------------------- @@ -11449,15 +13174,14 @@ load_baekmuk() w_metadata cjkfonts fonts \ title="All Chinese, Japanese, Korean fonts and aliases" \ - publisher="various" \ - date="1999-2010" \ + publisher="Various" \ + date="1999-2019" \ media="download" load_cjkfonts() { w_call fakechinese w_call fakejapanese - w_call fakejapanese_vlgothic w_call fakekorean w_call unifont } @@ -11474,12 +13198,7 @@ w_metadata calibri fonts \ load_calibri() { - # https://www.microsoft.com/en-us/download/details.aspx?id=13 - # Originally at https://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe - w_download_to PowerPointViewer "http://www.business.uwm.edu/gdrive/Dietenberger_E/PowerPointViewer.exe" 249473568eba7a1e4f95498acba594e0f42e6581add4dead70c1dfb908a09423 - w_try_cabextract -d "$W_TMP" -F "ppviewer.cab" "$W_CACHE/PowerPointViewer/$file1" - w_try_cabextract -d "$W_TMP" -F "CALIBRI*.TTF" "$W_TMP/ppviewer.cab" - w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" "CALIBRI*.TTF" + helper_pptfonts "CALIBRI*.TTF" w_register_font calibri.ttf "Calibri" w_register_font calibrib.ttf "Calibri Bold" w_register_font calibrii.ttf "Calibri Italic" @@ -11498,12 +13217,7 @@ w_metadata cambria fonts \ load_cambria() { - # https://www.microsoft.com/en-us/download/details.aspx?id=13 - # Originally at https://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe - w_download_to PowerPointViewer "http://www.business.uwm.edu/gdrive/Dietenberger_E/PowerPointViewer.exe" 249473568eba7a1e4f95498acba594e0f42e6581add4dead70c1dfb908a09423 - w_try_cabextract -d "$W_TMP" -F "ppviewer.cab" "$W_CACHE/PowerPointViewer/$file1" - w_try_cabextract -d "$W_TMP" -F "CAMBRIA*.TT*" "$W_TMP/ppviewer.cab" - w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" "CAMBRIA*.TT*" + helper_pptfonts "CAMBRIA*.TT*" w_register_font cambria.ttc "Cambria & Cambria Math" w_register_font cambriab.ttf "Cambria Bold" w_register_font cambriai.ttf "Cambria Italic" @@ -11522,12 +13236,7 @@ w_metadata candara fonts \ load_candara() { - # https://www.microsoft.com/en-us/download/details.aspx?id=13 - # Originally at https://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe - w_download_to PowerPointViewer "http://www.business.uwm.edu/gdrive/Dietenberger_E/PowerPointViewer.exe" 249473568eba7a1e4f95498acba594e0f42e6581add4dead70c1dfb908a09423 - w_try_cabextract -d "$W_TMP" -F "ppviewer.cab" "$W_CACHE/PowerPointViewer/$file1" - w_try_cabextract -d "$W_TMP" -F "CANDARA*.TTF" "$W_TMP/ppviewer.cab" - w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" "CANDARA*.TTF" + helper_pptfonts "CANDARA*.TTF" w_register_font candara.ttf "Candara" w_register_font candarab.ttf "Candara Bold" w_register_font candarai.ttf "Candara Italic" @@ -11546,12 +13255,7 @@ w_metadata consolas fonts \ load_consolas() { - # https://www.microsoft.com/en-us/download/details.aspx?id=13 - # Originally at https://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe - w_download_to PowerPointViewer "http://www.business.uwm.edu/gdrive/Dietenberger_E/PowerPointViewer.exe" 249473568eba7a1e4f95498acba594e0f42e6581add4dead70c1dfb908a09423 - w_try_cabextract -d "$W_TMP" -F "ppviewer.cab" "$W_CACHE/PowerPointViewer/$file1" - w_try_cabextract -d "$W_TMP" -F "CONSOLA*.TTF" "$W_TMP/ppviewer.cab" - w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" "CONSOLA*.TTF" + helper_pptfonts "CONSOLA*.TTF" w_register_font consola.ttf "Consolas" w_register_font consolab.ttf "Consolas Bold" w_register_font consolai.ttf "Consolas Italic" @@ -11570,12 +13274,7 @@ w_metadata constantia fonts \ load_constantia() { - # https://www.microsoft.com/en-us/download/details.aspx?id=13 - # Originally at https://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe - w_download_to PowerPointViewer "http://www.business.uwm.edu/gdrive/Dietenberger_E/PowerPointViewer.exe" 249473568eba7a1e4f95498acba594e0f42e6581add4dead70c1dfb908a09423 - w_try_cabextract -d "$W_TMP" -F "ppviewer.cab" "$W_CACHE/PowerPointViewer/$file1" - w_try_cabextract -d "$W_TMP" -F "CONSTAN*.TTF" "$W_TMP/ppviewer.cab" - w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" "CONSTAN*.TTF" + helper_pptfonts "CONSTAN*.TTF" w_register_font constan.ttf "Constantia" w_register_font constanb.ttf "Constantia Bold" w_register_font constani.ttf "Constantia Italic" @@ -11594,12 +13293,7 @@ w_metadata corbel fonts \ load_corbel() { - # https://www.microsoft.com/en-us/download/details.aspx?id=13 - # Originally at https://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe - w_download_to PowerPointViewer "http://www.business.uwm.edu/gdrive/Dietenberger_E/PowerPointViewer.exe" 249473568eba7a1e4f95498acba594e0f42e6581add4dead70c1dfb908a09423 - w_try_cabextract -d "$W_TMP" -F "ppviewer.cab" "$W_CACHE/PowerPointViewer/$file1" - w_try_cabextract -d "$W_TMP" -F "CORBEL*.TTF" "$W_TMP/ppviewer.cab" - w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" "CORBEL*.TTF" + helper_pptfonts "CORBEL*.TTF" w_register_font corbel.ttf "Corbel" w_register_font corbelb.ttf "Corbel Bold" w_register_font corbeli.ttf "Corbel Italic" @@ -11619,12 +13313,7 @@ w_metadata meiryo fonts \ load_meiryo() { - # https://www.microsoft.com/en-us/download/details.aspx?id=13 - # Originally at https://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe - w_download_to PowerPointViewer "http://www.business.uwm.edu/gdrive/Dietenberger_E/PowerPointViewer.exe" 249473568eba7a1e4f95498acba594e0f42e6581add4dead70c1dfb908a09423 - w_try_cabextract -d "$W_TMP" -F "ppviewer.cab" "$W_CACHE/PowerPointViewer/$file1" - w_try_cabextract -d "$W_TMP" -F "MEIRYO*.TTC" "$W_TMP/ppviewer.cab" - w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" "MEIRYO*.TTC" + helper_pptfonts "MEIRYO*.TTC" w_register_font meiryo.ttc "Meiryo & Meiryo Italic & Meiryo UI & Meiryo UI Italic" w_register_font meiryob.ttc "Meiryo Bold & Meiryo Bold Italic & Meiryo UI Bold & Meiryo UI Bold Italic" } @@ -11648,6 +13337,19 @@ load_pptfonts() w_call meiryo } +helper_pptfonts() +{ + # download PowerPointViewer, extract the given files, and copy them to $W_FONTSDIR_UNIX + # Font registration should still be done by the respective verbs + # $1 - font pattern to extract + + pptfont="$1" + w_download_to PowerPointViewer "https://web.archive.org/web/20171225132744if_/https://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe" 249473568eba7a1e4f95498acba594e0f42e6581add4dead70c1dfb908a09423 + w_try_cabextract -d "$W_TMP" -F "ppviewer.cab" "$W_CACHE/PowerPointViewer/PowerPointViewer.exe" + w_try_cabextract -d "$W_TMP" -F "$pptfont" "$W_TMP/ppviewer.cab" + w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" "$pptfont" +} + #---------------------------------------------------------------- w_metadata andale fonts \ @@ -11957,53 +13659,69 @@ load_eufonts() #---------------------------------------------------------------- w_metadata fakechinese fonts \ - title="Creates aliases for Chinese fonts using WenQuanYi fonts" \ - publisher="wenq.org" \ - year="2009" + title="Creates aliases for Chinese fonts using Source Han Sans fonts" \ + publisher="Adobe" \ + year="2019" load_fakechinese() { - w_call wenquanyi - # Loads Wenquanyi fonts and sets aliases for Microsoft Chinese fonts + # Loads Source Han Sans fonts and sets aliases for Microsoft Chinese fonts # Reference : https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_fonts + w_call sourcehansans - w_register_font_replacement "Microsoft JhengHei" "WenQuanYi Micro Hei" - w_register_font_replacement "Microsoft YaHei" "WenQuanYi Micro Hei" - w_register_font_replacement "SimHei" "WenQuanYi Micro Hei" - w_register_font_replacement "DFKai-SB" "WenQuanYi Micro Hei" - w_register_font_replacement "FangSong" "WenQuanYi Micro Hei" - w_register_font_replacement "KaiTi" "WenQuanYi Micro Hei" - w_register_font_replacement "PMingLiU" "WenQuanYi Micro Hei" - w_register_font_replacement "MingLiU" "WenQuanYi Micro Hei" - w_register_font_replacement "NSimSun" "WenQuanYi Micro Hei" - w_register_font_replacement "SimKai" "WenQuanYi Micro Hei" - w_register_font_replacement "SimSun" "WenQuanYi Micro Hei" + # Simplified Chinese + w_register_font_replacement "Dengxian" "Source Han Sans SC" + w_register_font_replacement "FangSong" "Source Han Sans SC" + w_register_font_replacement "KaiTi" "Source Han Sans SC" + w_register_font_replacement "Microsoft YaHei" "Source Han Sans SC" + w_register_font_replacement "Microsoft YaHei UI" "Source Han Sans SC" + w_register_font_replacement "NSimSun" "Source Han Sans SC" + w_register_font_replacement "SimHei" "Source Han Sans SC" + w_register_font_replacement "SimKai" "Source Han Sans SC" + w_register_font_replacement "SimSun" "Source Han Sans SC" + w_register_font_replacement "SimSun-ExtB" "Source Han Sans SC" + + # Traditional Chinese + w_register_font_replacement "DFKai-SB" "Source Han Sans TC" + w_register_font_replacement "Microsoft JhengHei" "Source Han Sans TC" + w_register_font_replacement "Microsoft JhengHei UI" "Source Han Sans TC" + w_register_font_replacement "MingLiU" "Source Han Sans TC" + w_register_font_replacement "PMingLiU" "Source Han Sans TC" + w_register_font_replacement "MingLiU-ExtB" "Source Han Sans TC" + w_register_font_replacement "PMingLiU-ExtB" "Source Han Sans TC" } #---------------------------------------------------------------- w_metadata fakejapanese fonts \ - title="Creates aliases for Japanese fonts using Takao fonts" \ - publisher="Jun Kobayashi" \ - year="2010" + title="Creates aliases for Japanese fonts using Source Han Sans fonts" \ + publisher="Adobe" \ + year="2019" load_fakejapanese() { - w_call takao - # Loads Takao fonts and sets aliases for MS Gothic, MS UI Gothic, and MS PGothic, mainly for Japanese language support - # Aliases to set: - # MS Gothic --> TakaoGothic - # MS UI Gothic --> TakaoGothic - # MS PGothic --> TakaoPGothic - # MS Mincho --> TakaoMincho - # MS PMincho --> TakaoPMincho - # These aliases were taken from what was listed in Ubuntu's fontconfig definitions. + # Loads Source Han Sans fonts and sets aliases for Microsoft Japanese fonts + # Reference : https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_fonts + w_call sourcehansans - w_register_font_replacement "MS Gothic" "TakaoGothic" - w_register_font_replacement "MS UI Gothic" "TakaoGothic" - w_register_font_replacement "MS PGothic" "TakaoPGothic" - w_register_font_replacement "MS Mincho" "TakaoMincho" - w_register_font_replacement "MS PMincho" "TakaoPMincho" + w_register_font_replacement "Meiryo" "Source Han Sans" + w_register_font_replacement "Meiryo UI" "Source Han Sans" + w_register_font_replacement "MS Gothic" "Source Han Sans" + w_register_font_replacement "MS PGothic" "Source Han Sans" + w_register_font_replacement "MS Mincho" "Source Han Sans" + w_register_font_replacement "MS PMincho" "Source Han Sans" + w_register_font_replacement "MS UI Gothic" "Source Han Sans" + w_register_font_replacement "UD Digi KyoKasho N-R" "Source Han Sans" + w_register_font_replacement "UD Digi KyoKasho NK-R" "Source Han Sans" + w_register_font_replacement "UD Digi KyoKasho NP-R" "Source Han Sans" + w_register_font_replacement "Yu Gothic" "Source Han Sans" + w_register_font_replacement "Yu Gothic UI" "Source Han Sans" + w_register_font_replacement "Yu Mincho" "Source Han Sans" + w_register_font_replacement "メイリオ" "Source Han Sans" + w_register_font_replacement "MS ゴシック" "Source Han Sans" + w_register_font_replacement "MS Pゴシック" "Source Han Sans" + w_register_font_replacement "MS 明朝" "Source Han Sans" + w_register_font_replacement "MS P明朝" "Source Han Sans" } #---------------------------------------------------------------- @@ -12024,20 +13742,15 @@ load_fakejapanese_ipamona() # MS Mincho (MS 明朝) --> IPAMonaMincho # MS PMincho (MS P明朝) --> IPAMonaPMincho - jpname_msgothic="$(echo "MS ゴシック" | iconv -f utf8 -t cp932)" - jpname_mspgothic="$(echo "MS Pゴシック" | iconv -f utf8 -t cp932)" - jpname_msmincho="$(echo "MS 明朝" | iconv -f utf8 -t cp932)" - jpname_mspmincho="$(echo "MS P明朝" | iconv -f utf8 -t cp932)" - w_register_font_replacement "MS UI Gothic" "IPAMonaUIGothic" w_register_font_replacement "MS Gothic" "IPAMonaGothic" w_register_font_replacement "MS PGothic" "IPAMonaPGothic" w_register_font_replacement "MS Mincho" "IPAMonaMincho" w_register_font_replacement "MS PMincho" "IPAMonaPMincho" - w_register_font_replacement "$jpname_msgothic" "IPAMonaGothic" - w_register_font_replacement "$jpname_mspgothic" "IPAMonaPGothic" - w_register_font_replacement "$jpname_msmincho" "IPAMonaMincho" - w_register_font_replacement "$jpname_mspmincho" "IPAMonaPMincho" + w_register_font_replacement "MS ゴシック" "IPAMonaGothic" + w_register_font_replacement "MS Pゴシック" "IPAMonaPGothic" + w_register_font_replacement "MS 明朝" "IPAMonaMincho" + w_register_font_replacement "MS P明朝" "IPAMonaPMincho" } #---------------------------------------------------------------- @@ -12056,38 +13769,40 @@ load_fakejapanese_vlgothic() # Meiryo UI --> VL Gothic # Meiryo (メイリオ) --> VL Gothic - jpname_meiryo="$(echo "メイリオ" | iconv -f utf8 -t cp932)" - w_register_font_replacement "Meiryo UI" "VL Gothic" w_register_font_replacement "Meiryo" "VL Gothic" - w_register_font_replacement "$jpname_meiryo" "VL Gothic" + w_register_font_replacement "メイリオ" "VL Gothic" } #---------------------------------------------------------------- w_metadata fakekorean fonts \ - title="Creates aliases for Korean fonts using Baekmuk fonts" \ - publisher="Wooderart Inc. / kldp.net" \ - year="1999" + title="Creates aliases for Korean fonts using Source Han Sans fonts" \ + publisher="Adobe" \ + year="2019" load_fakekorean() { - w_call baekmuk - # Loads Baekmuk fonts and sets as an alias for Gulim, Dotum, and Batang for Korean language support - # Aliases to set: - # Gulim --> Baekmuk Gulim - # GulimChe --> Baekmuk Gulim - # Batang --> Baekmuk Batang - # BatangChe --> Baekmuk Batang - # Dotum --> Baekmuk Dotum - # DotumChe --> Baekmuk Dotum + # Loads Source Han Sans fonts and sets aliases for Microsoft Korean fonts + # Reference : https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_fonts + w_call sourcehansans - w_register_font_replacement "Gulim" "Baekmuk Gulim" - w_register_font_replacement "GulimChe" "Baekmuk Gulim" - w_register_font_replacement "Batang" "Baekmuk Batang" - w_register_font_replacement "BatangChe" "Baekmuk Batang" - w_register_font_replacement "Dotum" "Baekmuk Dotum" - w_register_font_replacement "DotumChe" "Baekmuk Dotum" + w_register_font_replacement "Batang" "Source Han Sans K" + w_register_font_replacement "BatangChe" "Source Han Sans K" + w_register_font_replacement "Dotum" "Source Han Sans K" + w_register_font_replacement "DotumChe" "Source Han Sans K" + w_register_font_replacement "Gulim" "Source Han Sans K" + w_register_font_replacement "GulimChe" "Source Han Sans K" + w_register_font_replacement "Gungsuh" "Source Han Sans K" + w_register_font_replacement "GungsuhChe" "Source Han Sans K" + w_register_font_replacement "Malgun Gothic" "Source Han Sans K" + w_register_font_replacement "바탕" "Source Han Sans K" + w_register_font_replacement "바탕체" "Source Han Sans K" + w_register_font_replacement "돋움" "Source Han Sans K" + w_register_font_replacement "돋움체" "Source Han Sans K" + w_register_font_replacement "굴림" "Source Han Sans K" + w_register_font_replacement "굴림체" "Source Han Sans K" + w_register_font_replacement "맑은 고딕" "Source Han Sans K" } #---------------------------------------------------------------- @@ -12103,7 +13818,7 @@ w_metadata ipamona fonts \ load_ipamona() { - w_download "http://www.geocities.jp/ipa_mona/opfc-ModuleHP-1.1.1_withIPAMonaFonts-1.0.8.tar.gz" ab77beea3b051abf606cd8cd3badf6cb24141ef145c60f508fcfef1e3852bb9d + w_download "https://web.archive.org/web/20190309175311/http://www.geocities.jp/ipa_mona/opfc-ModuleHP-1.1.1_withIPAMonaFonts-1.0.8.tar.gz" ab77beea3b051abf606cd8cd3badf6cb24141ef145c60f508fcfef1e3852bb9d w_try_cd "$W_TMP" w_try tar -zxf "$W_CACHE/$W_PACKAGE/$file1" "${file1%.tar.gz}/fonts" @@ -12181,7 +13896,7 @@ w_metadata opensymbol fonts \ publisher="OpenOffice.org" \ year="2017" \ media="download" \ - file1="fonts-opensymbol_102.2+LibO3.5.4+dfsg2-0+deb7u11_all.deb" \ + file1="fonts-opensymbol_102.10+LibO6.1.5-3+deb10u4_all.deb" \ installed_file1="$W_FONTSDIR_WIN/opens___.ttf" load_opensymbol() @@ -12189,8 +13904,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 "https://deb.debian.org/debian-security/pool/updates/main/libr/libreoffice/fonts-opensymbol_102.2+LibO3.5.4+dfsg2-0+deb7u11_all.deb" b105ec27c738f92bd9801962f10fd05125c38224c92e702f84b00cbb482dfce7 - + w_download "https://cdn-aws.deb.debian.org/debian-security/pool/updates/main/libr/libreoffice/fonts-opensymbol_102.10+LibO6.1.5-3+deb10u4_all.deb" 1b2ab1e8eeb9a3a4a07e4a1c9bf539bb721734bf8b9881f4d0b8e71e822cecde 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/openoffice/opens___.ttf @@ -12200,6 +13914,59 @@ load_opensymbol() #---------------------------------------------------------------- +w_metadata sourcehansans fonts \ + title="Source Han Sans fonts" \ + publisher="Adobe" \ + year="2019" \ + media="download" \ + file1="SourceHanSans.ttc" \ + installed_file1="$W_FONTSDIR_WIN/sourcehansans.ttc" + +load_sourcehansans() +{ + w_download "https://github.com/adobe-fonts/source-han-sans/releases/download/2.001R/SourceHanSans.ttc" 9e94fe493685a7c99ce61e4488169007e3b97badb9f1ef43d3c13da501463780 + w_try cp "$W_CACHE/$W_PACKAGE/$file1" "$W_TMP/sourcehansans.ttc" + w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" "*.ttc" + + # Simplified Chinese + w_register_font sourcehansans.ttc "Source Han Sans SC ExtraLight" + w_register_font sourcehansans.ttc "Source Han Sans SC Light" + w_register_font sourcehansans.ttc "Source Han Sans SC Normal" + w_register_font sourcehansans.ttc "Source Han Sans SC" + w_register_font sourcehansans.ttc "Source Han Sans SC Medium" + w_register_font sourcehansans.ttc "Source Han Sans SC Bold" + w_register_font sourcehansans.ttc "Source Han Sans SC Heavy" + + # Traditional Chinese (Taiwan) + w_register_font sourcehansans.ttc "Source Han Sans TC ExtraLight" + w_register_font sourcehansans.ttc "Source Han Sans TC Light" + w_register_font sourcehansans.ttc "Source Han Sans TC Normal" + w_register_font sourcehansans.ttc "Source Han Sans TC" + w_register_font sourcehansans.ttc "Source Han Sans TC Medium" + w_register_font sourcehansans.ttc "Source Han Sans TC Bold" + w_register_font sourcehansans.ttc "Source Han Sans TC Heavy" + + # Japanese + w_register_font sourcehansans.ttc "Source Han Sans ExtraLight" + w_register_font sourcehansans.ttc "Source Han Sans Light" + w_register_font sourcehansans.ttc "Source Han Sans Normal" + w_register_font sourcehansans.ttc "Source Han Sans" + w_register_font sourcehansans.ttc "Source Han Sans Medium" + w_register_font sourcehansans.ttc "Source Han Sans Bold" + w_register_font sourcehansans.ttc "Source Han Sans Heavy" + + # Korean + w_register_font sourcehansans.ttc "Source Han Sans K ExtraLight" + w_register_font sourcehansans.ttc "Source Han Sans K Light" + w_register_font sourcehansans.ttc "Source Han Sans K Normal" + w_register_font sourcehansans.ttc "Source Han Sans K" + w_register_font sourcehansans.ttc "Source Han Sans K Medium" + w_register_font sourcehansans.ttc "Source Han Sans K Bold" + w_register_font sourcehansans.ttc "Source Han Sans K Heavy" +} + +#---------------------------------------------------------------- + w_metadata tahoma fonts \ title="MS Tahoma font (not part of corefonts)" \ publisher="Microsoft" \ @@ -12331,20 +14098,17 @@ load_wenquanyi() w_metadata unifont fonts \ title="Unifont alternative to Arial Unicode MS" \ publisher="Roman Czyborra / GNU" \ - year="2008" \ + year="2019" \ media="download" \ - file1="unifont-5.1.20080907.zip" \ + file1="unifont-12.1.02.ttf" \ installed_file1="$W_FONTSDIR_WIN/unifont.ttf" load_unifont() { # The GNU Unifont provides glyphs for just about everything in common language. It is intended for multilingual usage. # See http://unifoundry.com/unifont.html for project page - w_download "http://unifoundry.com/unifont-5.1.20080907.zip" 6ec1176f83769072b09de2bc1fff68ec5d802183304756a372e2419236f5b5ba - w_try_unzip "$W_TMP" "$W_CACHE/$W_PACKAGE/unifont-5.1.20080907.zip" - - w_try mv -f "$W_TMP/unifont-5.1.20080907.ttf" "$W_TMP/unifont.ttf" - + w_download "http://unifoundry.com/pub/unifont/unifont-12.1.02/font-builds/unifont-12.1.02.ttf" da4961540b9d02e01fb8755924db730db233c360b20ee321fda8ab7d0b9ca549 + w_try cp "$W_CACHE/$W_PACKAGE/$file1" "$W_TMP/unifont.ttf" w_try_cp_font_files "$W_TMP" "$W_FONTSDIR_UNIX" w_register_font unifont.ttf "Unifont" @@ -12362,8 +14126,7 @@ w_metadata allfonts fonts \ load_allfonts() { # This verb uses reflection, should probably do it portably instead, but that would require keeping it up to date - for file in "$WINETRICKS_METADATA"/fonts/*.vars - do + for file in "$WINETRICKS_METADATA"/fonts/*.vars; do cmd=$(basename "$file" .vars) case $cmd in # "fake*" verbs need to be skipped because @@ -12396,24 +14159,24 @@ load_3m_library() { w_download https://usestrwebaccess.blob.core.windows.net/apps/pc/cloudLibrary-2.1.1702011951-Setup.exe bb3d854cc525c065e7298423bf0019309f4b65497c1d8bc6af09460cd6fcb57f w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "${file1}" $W_UNATTENDED_SLASH_S + w_try "$WINE" "${file1}" ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- w_metadata 7zip apps \ - title="7-Zip 16.02" \ + title="7-Zip 19.00" \ publisher="Igor Pavlov" \ - year="2016" \ + year="2019" \ media="download" \ - file1="7z1602.exe" \ + file1="7z1900.exe" \ installed_exe1="$W_PROGRAMS_X86_WIN/7-Zip/7zFM.exe" load_7zip() { - w_download https://downloads.sourceforge.net/sevenzip/7z1602.exe 629ce3c424bd884e74aed6b7d87d8f0d75274fb87143b8d6360c5eec41d5f865 + w_download https://www.7-zip.org/a/7z1900.exe 759aa04d5b03ebeee13ba01df554e8c962ca339c74f56627c8bed6984bb7ef80 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "${file1}" $W_UNATTENDED_SLASH_S + w_try "$WINE" "${file1}" ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- @@ -12430,7 +14193,7 @@ load_abiword() { w_download https://www.abisource.com/downloads/abiword/2.8.6/Windows/abiword-setup-2.8.6.exe f85c7f32044bbb4d31f1672c86951e35319f8e89fbd6c01ab4c19e960efd9ff8 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" abiword-setup-2.8.6.exe $W_UNATTENDED_SLASH_S + w_try "$WINE" abiword-setup-2.8.6.exe ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- @@ -12469,6 +14232,7 @@ load_adobe_diged4() if w_workaround_wine_bug 32323; then w_call corefonts fi + if [ ! -x "$(command -v winbindd 2>/dev/null)" ]; then w_warn "Adobe Digital Editions 4.5 requires winbind (part of Samba) to be installed, but winbind was not detected." fi @@ -12477,13 +14241,17 @@ load_adobe_diged4() #w_call win7 w_try_cd "$W_CACHE/$W_PACKAGE" - w_ahk_do " - SetTitleMatchMode, 2 - run, ${file1} ${W_OPT_UNATTENDED:+ /S} - winwait, Installing Adobe Digital Editions - ControlClick, Button1 ; Don't install Norton Internet Security - ControlClick, Static19 ; Next - " + if w_workaround_wine_bug 46019 "Installer fails under wine, manually unpacking it instead"; then + w_try_7z "${W_PROGRAMS_X86_UNIX}/Adobe/Adobe Digital Editions 4.5" "${file1}" -y + else + w_ahk_do " + SetTitleMatchMode, 2 + run, ${file1} ${W_OPT_UNATTENDED:+ /S} + winwait, Installing Adobe Digital Editions + ControlClick, Button1 ; Don't install Norton Internet Security + ControlClick, Static19 ; Next + " + fi } #---------------------------------------------------------------- @@ -12498,10 +14266,9 @@ w_metadata autohotkey apps \ load_autohotkey() { - W_BROWSERAGENT=1 \ - w_download https://www.autohotkey.com/download/AutoHotkey104805_Install.exe 4311c3e7c29ed2d67f415138360210bc2f55ff78758b20b003b91d775ee207b9 + w_download https://github.com/AutoHotkey/AutoHotkey/releases/download/v1.0.48.05/AutoHotkey104805_Install.exe 4311c3e7c29ed2d67f415138360210bc2f55ff78758b20b003b91d775ee207b9 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" AutoHotkey104805_Install.exe $W_UNATTENDED_SLASH_S + w_try "$WINE" AutoHotkey104805_Install.exe ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- @@ -12542,7 +14309,7 @@ load_cmake() { w_download https://www.cmake.org/files/v2.8/cmake-2.8.11.2-win32-x86.exe cb6a7df8fd6f2eca66512279991f3c2349e3f788477c3be8eaa362d46c21dbf0 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" cmake-2.8.11.2-win32-x86.exe $W_UNATTENDED_SLASH_S + w_try "$WINE" cmake-2.8.11.2-win32-x86.exe ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- @@ -12585,7 +14352,7 @@ load_controlpad() echo "If setup says 'Unable to start DDE ...', press Ignore" w_try_cd "$W_TMP" - w_try "$WINE" setup $W_UNATTENDED_SLASH_QT + w_try "$WINE" setup ${W_OPT_UNATTENDED:+/qt} if ! test -f "$W_SYSTEM32_DLLS"/FM20.DLL; then w_die "Install failed. Please report, If you just wanted fm20.dll, try installing art2min instead." @@ -12595,18 +14362,21 @@ load_controlpad() #---------------------------------------------------------------- w_metadata controlspy apps \ - title="Control Spy 2.0 " \ + title="Control Spy 6 " \ publisher="Microsoft" \ year="2005" \ media="download" \ - file1="ControlSpy.msi" \ + file1="ControlSpyV6.exe" \ installed_exe1="$W_PROGRAMS_X86_WIN/Microsoft/ControlSpy/ControlSpyV6.exe" load_controlspy() { - w_download https://download.microsoft.com/download/a/3/1/a315b133-03a8-4845-b428-ec585369b285/ControlSpy.msi d9127634dd47580be93c768263ddf37a3a75fd65a545e87ddb9602906a035845 - w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" msiexec /i ControlSpy.msi ${W_UNATTENDED_SLASH_QB} + # Originally at https://download.microsoft.com/download/a/3/1/a315b133-03a8-4845-b428-ec585369b285/ControlSpy.msi + # 2019/04/11: changed to https://github.com/pywinauto/pywinauto/blob/master/apps/ControlSpy_20/ControlSpyV6.exe + # Unfortunately that means no V5 of ControlSpy :/ + w_download https://github.com/pywinauto/pywinauto/blob/master/apps/ControlSpy_20/ControlSpyV6.exe + w_try mkdir -p "${W_PROGRAMS_X86_UNIX}/Microsoft/ControlSpy" + w_try cp "${W_CACHE}/${W_PACKAGE}/${file1}" "${W_PROGRAMS_X86_UNIX}/Microsoft/ControlSpy" } #---------------------------------------------------------------- @@ -12657,9 +14427,11 @@ w_metadata emu8086 apps \ load_emu8086() { - w_download http://www.emu8086.com/files/emu8086v408r11.zip d56d6e42fe170c52df5abd6002b1e8fef0b840eb8d8807d77819fe1fc2e17afd + # 2018/11/15: emu8086.com is down + # w_download http://www.emu8086.com/files/emu8086v408r11.zip d56d6e42fe170c52df5abd6002b1e8fef0b840eb8d8807d77819fe1fc2e17afd + w_download https://web.archive.org/web/20160206003914if_/http://emu8086.com/files/emu8086v408r11.zip d56d6e42fe170c52df5abd6002b1e8fef0b840eb8d8807d77819fe1fc2e17afd w_try_unzip "$W_TMP" "$W_CACHE/$W_PACKAGE/$file1" - w_try "$WINE" "$W_TMP/Setup.exe" $W_UNATTENDED_SLASH_SILENT + w_try "$WINE" "$W_TMP/Setup.exe" ${W_OPT_UNATTENDED:+/silent} } #---------------------------------------------------------------- @@ -12688,14 +14460,8 @@ load_ev3() w_download http://esd.lego.com.edgesuite.net/digitaldelivery/mindstorms/6ecda7c2-1189-4816-b2dd-440e22d65814/public/LMS-EV3-WIN32-ENUS-01-02-01-full-setup.exe c47341f08242f0f6f01996530e7c93bda2d666747ada60ab93fa773a55d40a19 - if [ $W_UNATTENDED_SLASH_Q ]; then - quiet="$W_UNATTENDED_SLASH_QB /AcceptLicenses yes" - else - quiet="" - fi - w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" "$file1" ${quiet} + w_try "$WINE" "$file1" ${W_OPT_UNATTENDED:+/qb /AcceptLicenses yes} if w_workaround_wine_bug 40729 "Setting override for urlmon.dll to native to avoid crash"; then w_override_dlls native urlmon @@ -12732,10 +14498,12 @@ w_metadata fontxplorer apps \ load_fontxplorer() { - w_download http://www.moonsoftware.com/files/legacy/Font_Xplorer_122_Free.exe e3a53841c133e2ecfeb75c7ea277e23011317bb031f8caf423b7e9b7f92d85e0 - + # 2011/05/15: http://www.moonsoftware.com/files/legacy/Font_Xplorer_122_Free.exe e3a53841c133e2ecfeb75c7ea277e23011317bb031f8caf423b7e9b7f92d85e0 + # 2019/06/14: http://www.moonsoftware.com/files/legacy/Font_Xplorer_122_Free.exe is dead + w_download https://web.archive.org/web/20190217101943/http://www.moonsoftware.com/files/legacy/Font_Xplorer_122_Free.exe e3a53841c133e2ecfeb75c7ea277e23011317bb031f8caf423b7e9b7f92d85e0 w_try_cd "$W_CACHE/fontxplorer" - w_try "$WINE" Font_Xplorer_122_Free.exe $W_UNATTENDED_SLASH_S + w_try "$WINE" Font_Xplorer_122_Free.exe ${W_OPT_UNATTENDED:+/S} + w_killall "explorer.exe" } #---------------------------------------------------------------- @@ -12755,7 +14523,7 @@ load_foobar2000() w_download_manual https://www.foobar2000.org/download foobar2000_v1.4.exe 7c048faecfec79f9ec2b332b2c68b25e0d0219b47a7c679fe56f2ec05686a96a w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "$file1" $W_UNATTENDED_SLASH_S + w_try "$WINE" "$file1" ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- @@ -12785,7 +14553,7 @@ load_hhw() # 1. Run htmlhelp.exe to unpack its contents # 2. Edit htmlhelp.inf not to run hhupd.exe # 3. Run setup.exe - w_try "$WINE" "$W_CACHE/$W_PACKAGE"/htmlhelp.exe /C "/T:$W_TMP_WIN" $W_UNATTENDED_SLASH_Q + w_try "$WINE" "$W_CACHE/$W_PACKAGE"/htmlhelp.exe /C "/T:$W_TMP_WIN" ${W_OPT_UNATTENDED:+/q} w_try_cd "$W_TMP" w_try sed -i "s/RunPostSetupCommands=HHUpdate//" htmlhelp.inf w_try "$WINE" setup.exe @@ -12842,6 +14610,8 @@ load_irfanview() Sleep 900 ControlClick, Button7 ; Uncheck All Sleep 900 + ControlClick, Button4 ; Create start menu icons + Sleep 900 ControlClick, Button11 ; Next Sleep 900 winwait, Setup, version @@ -12888,6 +14658,7 @@ w_metadata ie6 dlls \ publisher="Microsoft" \ year="2002" \ media="download" \ + conflicts="ie7 ie8" \ file1="ie60.exe" \ installed_file1="c:/Program Files/Internet Explorer/iedetect.dll" @@ -12895,13 +14666,11 @@ load_ie6() { w_package_unsupported_win64 - w_download http://cdn.browserarchive.org/ie/win32/6.0/ie60.exe e34e0557d939e7e83185f5354403df99c92a3f3ff80f5ee0c75f6843eaa6efb2 + w_download https://web.archive.org/web/20150411022055if_/http://download.oldapps.com/Internet_Explorer/ie60.exe e34e0557d939e7e83185f5354403df99c92a3f3ff80f5ee0c75f6843eaa6efb2 w_try_cd "$W_TMP" "$WINE" "$W_CACHE/$W_PACKAGE/$file1" - w_call msls31 - # Unregister Wine IE if [ ! -f "$W_SYSTEM32_DLLS"/plugin.ocx ]; then w_override_dlls builtin iexplore.exe @@ -12913,8 +14682,7 @@ load_ie6() # Remove the fake DLLs, if any mv "$W_PROGRAMS_UNIX/Internet Explorer/iexplore.exe" "$W_PROGRAMS_UNIX/Internet Explorer/iexplore.exe.bak" - for dll in itircl itss jscript mlang mshtml msimtf shdoclc shdocvw shlwapi - do + for dll in itircl itss jscript mlang mshtml msimtf shdoclc shdocvw shlwapi; do test -f "$W_SYSTEM32_DLLS"/$dll.dll && mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak done @@ -12936,18 +14704,7 @@ load_ie6() w_override_dlls native inseng w_try_cd "$W_TMP/IE 6.0 Full" - if [ $W_UNATTENDED_SLASH_Q ]; then - "$WINE" IE6SETUP.EXE /q:a /r:n /c:"ie6wzd /S:""#e"" /q:a /r:n" - else - "$WINE" IE6SETUP.EXE - fi - - # IE6 exits with 194 to signal a reboot - status=$? - case $status in - 0|194) ;; - *) w_die ie6 installation failed;; - esac + w_try_ms_installer "$WINE" IE6SETUP.EXE ${W_OPT_UNATTENDED:+/q:a /r:n /c:"ie6wzd /S:""#e"" /q:a /r:n"} # Work around DLL registration bug until ierunonce/RunOnce/wineboot is fixed # FIXME: whittle down this list @@ -12961,16 +14718,17 @@ load_ie6() rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \ shdocvw.dll shell32.dll vbscript.dll webcheck.dll \ wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \ - plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx - do + plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx; do "$WINE" regsvr32 /i $i > /dev/null 2>&1 done - # Set windows version back to user's default. Leave at win2k for better rendering (is there a bug for that?) - w_unset_winver + # Set Windows version back to the default. Leave at win2k for better rendering (is there a bug for that?) + w_set_winver 'default' # the ie6 we use these days lacks pngfilt, so grab that w_call pngfilt + + w_call msls31 } #---------------------------------------------------------------- @@ -12980,6 +14738,7 @@ w_metadata ie7 dlls \ publisher="Microsoft" \ year="2008" \ media="download" \ + conflicts="ie6 ie8" \ file1="IE7-WindowsXP-x86-enu.exe" \ installed_file1="c:/windows/ie7.log" @@ -12994,7 +14753,7 @@ load_ie7() fi # Change the override to the native so we are sure we use and register them - w_override_dlls native,builtin itircl itss jscript mshtml msimtf shdoclc shdocvw shlwapi urlmon wininet xmllite + w_override_dlls native,builtin ieproxy ieframe itircl itss jscript mshtml msimtf shdoclc shdocvw shlwapi urlmon wininet xmllite # IE7 installer will check the version number of iexplore.exe which causes IE7 installer to fail on wine-1.9.0+ w_override_dlls native iexplore.exe @@ -13006,8 +14765,7 @@ load_ie7() if [ -f "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe" ]; then mv "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe" "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe.bak" fi - for dll in itircl itss jscript mshtml msimtf shdoclc shdocvw shlwapi urlmon - do + for dll in itircl itss jscript mshtml msimtf shdoclc shdocvw shlwapi urlmon; do test -f "$W_SYSTEM32_DLLS"/$dll.dll && mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak done @@ -13021,11 +14779,12 @@ load_ie7() w_try cp -f "$W_CACHE"/ie7/winetest.cat "$W_SYSTEM32_DLLS"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}/oem0.cat # KLUDGE: if / is writable (as on OS X?), having a Z: mapping to it - # causes ie7 to put temporary directories on Z:\ - # so hide it temporarily. This is not very robust! - if test -w /; then - rm -f "$WINEPREFIX/dosdevices/z:.bak_wt" - mv "$WINEPREFIX/dosdevices/z:" "$WINEPREFIX/dosdevices/z:.bak_wt" + # causes ie7 to put temporary directories on Z:\. + # So hide it temporarily. This is not very robust! + if [ -w / ] && [ -h "$WINEPREFIX/dosdevices/z:" ]; then + w_try rm -f "$WINEPREFIX/dosdevices/z:.bak_wt" + w_try mv "$WINEPREFIX/dosdevices/z:" "$WINEPREFIX/dosdevices/z:.bak_wt" + _W_restore_z=1 fi # Install @@ -13035,20 +14794,11 @@ load_ie7() # IE7 requies winxp to install: w_set_winver winxp - "$WINE" IE7-WindowsXP-x86-enu.exe $W_UNATTENDED_SLASH_QUIET + w_try_ms_installer "$WINE" IE7-WindowsXP-x86-enu.exe ${W_OPT_UNATTENDED:+/quiet} - # IE7 exits with 194 to signal a reboot - status=$? - case $status in - 0) ;; - 105) echo "exit status $status - normal, user selected 'restart now'" ;; - 194) echo "exit status $status - normal, user selected 'restart later'" ;; - *) w_die "exit status $status - $W_PACKAGE installation failed" ;; - esac - - if test -w /; then - # END KLUDGE: restore Z:, assuming user didn't kill us - mv "$WINEPREFIX/dosdevices/z:.bak_wt" "$WINEPREFIX/dosdevices/z:" + if [ "$_W_restore_z" = 1 ]; then + # END KLUDGE: restore Z:, assuming that the user didn't kill us + w_try mv "$WINEPREFIX/dosdevices/z:.bak_wt" "$WINEPREFIX/dosdevices/z:" fi # Work around DLL registration bug until ierunonce/RunOnce/wineboot is fixed @@ -13063,11 +14813,16 @@ load_ie7() rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \ shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \ wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \ - plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx - do + plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx; do "$WINE" regsvr32 /i $i > /dev/null 2>&1 done + # Builtin ieproxy is in system32, but ie7's lives in Program Files. Native + # CLSID path will get overwritten on prefix update. Setting ieproxy to + # native doesn't help because setupapi ignores DLL overrides. To work + # around this problem, copy native ieproxy to system32. + w_try cp -f "${W_PROGRAMS_X86_UNIX}/Internet Explorer/ieproxy.dll" "$W_SYSTEM32_DLLS" + # Seeing is believing case $WINETRICKS_GUI in none) @@ -13078,6 +14833,8 @@ load_ie7() "$WINE" "${W_PROGRAMS_WIN}\\Internet Explorer\\iexplore" https://www.microsoft.com/windows/internet-explorer/ie7/ > /dev/null 2>&1 & ;; esac + + unset _W_restore_z } #---------------------------------------------------------------- @@ -13087,6 +14844,7 @@ w_metadata ie8 dlls \ publisher="Microsoft" \ year="2009" \ media="download" \ + conflicts="ie6 ie7" \ file1="IE8-WindowsXP-x86-ENU.exe" \ installed_file1="c:/windows/ie8_main.log" @@ -13108,7 +14866,7 @@ load_ie8() w_call msls31 # Change the override to the native so we are sure we use and register them - w_override_dlls native,builtin ieproxy itircl itss jscript msctf mshtml shdoclc shdocvw shlwapi urlmon wininet xmllite + w_override_dlls native,builtin ieframe ieproxy itircl itss jscript msctf mshtml shdoclc shdocvw shlwapi urlmon wininet xmllite # IE8 installer will check the version number of iexplore.exe which causes IE8 installer to fail on wine-1.9.0+ w_override_dlls native iexplore.exe @@ -13118,12 +14876,12 @@ load_ie8() # Remove the fake DLLs from the existing WINEPREFIX if [ -f "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe" ]; then - mv "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe" "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe.bak" + w_try mv "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe" "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe.bak" fi - for dll in browseui inseng itircl itss jscript msctf mshtml shdoclc shdocvw shlwapi urlmon - do + + for dll in browseui inseng itircl itss jscript msctf mshtml shdoclc shdocvw shlwapi urlmon; do test -f "$W_SYSTEM32_DLLS"/$dll.dll && - mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak + w_try mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak done # See https://bugs.winehq.org/show_bug.cgi?id=16013 @@ -13135,24 +14893,27 @@ load_ie8() w_try cp -f "$W_CACHE"/ie8/winetest.cat "$W_SYSTEM32_DLLS"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}/oem0.cat w_download https://download.microsoft.com/download/C/C/0/CC0BD555-33DD-411E-936B-73AC6F95AE11/IE8-WindowsXP-x86-ENU.exe 5a2c6c82774bfe99b175f50a05b05bcd1fac7e9d0e54db2534049209f50cd6ef - if [ $W_UNATTENDED_SLASH_QUIET ]; then - quiet="$W_UNATTENDED_SLASH_QUIET /forcerestart" - else - quiet="" - fi - w_try_cd "$W_CACHE/$W_PACKAGE" - # KLUDGE: if / is writable, having a Z: mapping to it causes ie8 to put temporary directories on Z:\ - # so hide it temporarily. This is not very robust! - rm -f "$WINEPREFIX/dosdevices/z:.bak_wt" - mv "$WINEPREFIX/dosdevices/z:" "$WINEPREFIX/dosdevices/z:.bak_wt" + # KLUDGE: if / is writable (as on OS X?), having a Z: mapping to it + # causes ie7 to put temporary directories on Z:\. + # So hide it temporarily. This is not very robust! + if [ -w / ] && [ -h "$WINEPREFIX/dosdevices/z:" ]; then + w_try rm -f "$WINEPREFIX/dosdevices/z:.bak_wt" + w_try mv "$WINEPREFIX/dosdevices/z:" "$WINEPREFIX/dosdevices/z:.bak_wt" + _W_restore_z=1 + fi + + w_try_cd "$W_CACHE/$W_PACKAGE" # FIXME: There's an option for /updates-noupdates to disable checking for updates, but that # forces the install to fail on Wine. Not sure if it's an IE8 or Wine bug... # FIXME: can't check status, as it always reports failure on wine? - "$WINE" IE8-WindowsXP-x86-ENU.exe $quiet - # END KLUDGE: restore Z:, assuming user didn't kill us - mv "$WINEPREFIX/dosdevices/z:.bak_wt" "$WINEPREFIX/dosdevices/z:" + "$WINE" IE8-WindowsXP-x86-ENU.exe ${W_OPT_UNATTENDED:+/quiet /forcerestart} + + if [ "$_W_restore_z" = 1 ]; then + # END KLUDGE: restore Z:, assuming that the user didn't kill us + w_try mv "$WINEPREFIX/dosdevices/z:.bak_wt" "$WINEPREFIX/dosdevices/z:" + fi # Work around DLL registration bug until ierunonce/RunOnce/wineboot is fixed # FIXME: whittle down this list @@ -13166,8 +14927,7 @@ load_ie8() rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \ shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \ wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \ - plugin.ocx proctexe.ocx tdc.ocx uxtheme.dll webcheck.dll wshom.ocx - do + plugin.ocx proctexe.ocx tdc.ocx uxtheme.dll webcheck.dll wshom.ocx; do "$WINE" regsvr32 /i $i > /dev/null 2>&1 done @@ -13199,30 +14959,9 @@ _EOF_ ;; esac - w_unset_winver -} + w_set_winver 'default' -#---------------------------------------------------------------- - -w_metadata kde apps \ - title="KDE on Windows" \ - publisher="various" \ - year="2013" \ - media="download" \ - file1="kdewin-installer-gui-1.0.0.exe" \ - installed_exe1="$W_PROGRAMS_WIN/kde/etc/installer.ini" \ - homepage="https://community.kde.org/Windows" \ - unattended="no" - -load_kde() -{ - w_download http://mirrors.mit.edu/kde/stable/kdewin/installer/kdewin-installer-gui-1.0.0.exe 6bc5e0cc9e3418c08b6545300f68de0652ac297cbcdc81fd0ebe04f5934006f5 - mkdir -p "$W_PROGRAMS_UNIX/kde" - w_try cp "$W_CACHE/kde/${file1}" "$W_PROGRAMS_UNIX/kde" - w_try_cd "$W_PROGRAMS_UNIX/kde" - # There's no unattended option, probably because there are so many choices, - # it's like Cygwin - w_try "$WINE" "${file1}" + unset _W_restore_z } #---------------------------------------------------------------- @@ -13289,7 +15028,7 @@ w_metadata mingw apps \ load_mingw() { - w_download "$WINETRICKS_SOURCEFORGE/mingw/files/mingw-get-setup.exe" aab27bd5547d35dc159288f3b5b8760f21b0cfec86e8f0032b49dd0410f232bc + w_download "https://downloads.sourceforge.net/mingw/files/mingw-get-setup.exe" aab27bd5547d35dc159288f3b5b8760f21b0cfec86e8f0032b49dd0410f232bc if test "$W_OPT_UNATTENDED"; then w_info "FYI: Quiet mode will install these mingw packages: 'gcc msys-base'" @@ -13342,7 +15081,7 @@ load_mozillabuild() { w_download https://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-2.0.0.exe d5ffe52fe634fb7ed02e61041cc183c3af92039ee74e794f7ae83a408e4cf3f5 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" MozillaBuildSetup-2.0.0.exe $W_UNATTENDED_SLASH_S + w_try "$WINE" MozillaBuildSetup-2.0.0.exe ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- @@ -13358,7 +15097,7 @@ w_metadata mpc apps \ load_mpc() { - w_download $WINETRICKS_SOURCEFORGE/project/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.7.5_x86/MPC-HC.1.7.5.x86.exe 1d690da5b330f723aea4a294d478828395d321b59fc680f2b971e8b16b8bd33d + w_download https://downloads.sourceforge.net/project/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.7.5_x86/MPC-HC.1.7.5.x86.exe 1d690da5b330f723aea4a294d478828395d321b59fc680f2b971e8b16b8bd33d w_try_cd "$W_CACHE/$W_PACKAGE" w_try "$WINE" MPC-HC.1.7.5.x86.exe ${W_OPT_UNATTENDED:+ /VERYSILENT} } @@ -13370,7 +15109,7 @@ w_metadata mspaint apps \ publisher="Microsoft" \ year="2010" \ media="download" \ - file1="WindowsXP-KB978706-x86-ENU.exe" \ + file1="windowsxp-kb978706-x86-enu_f4e076b3867c2f08b6d258316aa0e11d6822b8d7.exe" \ installed_file1="c:/windows/mspaint.exe" load_mspaint() @@ -13381,9 +15120,9 @@ load_mspaint() # Originally at: https://download.microsoft.com/download/0/A/4/0A40DF5C-2BAE-4C63-802A-84C33B34AC98/WindowsXP-KB978706-x86-ENU.exe # Mirror list: http://www.filewatcher.com/_/?q=WindowsXP-KB978706-x86-ENU.exe - w_download https://cbvk.cz/programy_pro_knihovny/update-pack/Windows%20XP%20x86%20ENU/Security%20Updates/WindowsXP-KB978706-x86-ENU.exe 93ed34ab6c0d01a323ce10992d1c1ca27d1996fef82f0864d83e7f5ac6f9b24b - w_try $WINE "$W_CACHE"/mspaint/WindowsXP-KB978706-x86-ENU.exe /q /x:"$W_TMP"/WindowsXP-KB978706-x86-ENU - w_try cp -f "$W_TMP"/WindowsXP-KB978706-x86-ENU/SP3GDR/mspaint.exe "$W_WINDIR_UNIX"/mspaint.exe + w_download http://download.windowsupdate.com/msdownload/update/software/secu/2010/01/windowsxp-kb978706-x86-enu_f4e076b3867c2f08b6d258316aa0e11d6822b8d7.exe 93ed34ab6c0d01a323ce10992d1c1ca27d1996fef82f0864d83e7f5ac6f9b24b + w_try "$WINE" "${W_CACHE}/${W_PACKAGE}/${file1}" /q /x:"${W_TMP}/${file1}" + w_try cp -f "${W_TMP}/${file1}/SP3GDR/mspaint.exe" "$W_WINDIR_UNIX"/mspaint.exe } #---------------------------------------------------------------- @@ -13406,18 +15145,20 @@ load_mt4() WINEDLLOVERRIDES="winebrowser.exe=" export WINEDLLOVERRIDES - # No documented silent install option, unfortunately.. + # No documented silent install option, unfortunately. w_try_cd "$W_CACHE/$W_PACKAGE" w_ahk_do " Run, ${file1} - WinWait, MetaTrader Setup, license agreement + SetTitleMatchMode, RegEx + WinWaitActive, 4 Setup + Sleep, 200 ControlClick, Button1 - Sleep 100 + Sleep, 200 ControlClick, Button3 - WinWait, MetaTrader Setup, Installation successfully completed - ControlClick, Button4 - Process, Wait, terminal.exe - Process, Close, terminal.exe + WinWaitClose ; Wait for installer to finish + Process, Wait, Terminal.exe + WinWaitActive, ahk_class #32770 + Process, Close, Terminal.exe " } @@ -13524,16 +15265,16 @@ load_nook() w_metadata npp apps \ title="Notepad++" \ publisher="Don Ho" \ - year="2015" \ + year="2019" \ media="download" \ - file1="npp.6.7.9.2.Installer.exe" \ + file1="npp.7.7.1.Installer.exe" \ installed_exe1="$W_PROGRAMS_X86_WIN/Notepad++/notepad++.exe" load_npp() { - w_download https://notepad-plus-plus.org/repository/6.x/6.7.9.2/npp.6.7.9.2.Installer.exe cecc981d56d759233b804fa77e70ed62e411aaee58dcb1e53b91909c99d29096 + w_download https://notepad-plus-plus.org/repository/7.x/7.7.1/npp.7.7.1.Installer.exe 6787c524b0ac30a698237ffb035f932d7132343671b8fe8f0388ed380d19a51c w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" "${file1}" $W_UNATTENDED_SLASH_S + w_try "$WINE" "${file1}" ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- @@ -13612,7 +15353,7 @@ load_office2007pro() w_mount OFFICE12 w_read_key - if test $W_OPT_UNATTENDED; then + if [ -n "$W_OPT_UNATTENDED" ]; then # See # https://blogs.technet.microsoft.com/office_resource_kit/2009/01/29/configure-a-silent-install-of-the-2007-office-system-with-config-xml/ # https://www.symantec.com/connect/articles/office-2007-silent-installation-lessons-learned @@ -13706,7 +15447,7 @@ _EOF_ esac w_mount OFFICE15 - if test $W_OPT_UNATTENDED; then + if [ -n "$W_OPT_UNATTENDED" ]; then cat > "$W_TMP"/config.xml <<_EOF_ @@ -13802,21 +15543,22 @@ w_metadata openwatcom apps \ load_openwatcom() { # 2016/03/11: upstream http://www.openwatcom.org appears to be dead (404) - w_download "http://openwatcom.mirror.fr/open-watcom-c-win32-1.9.exe" 040c910aba304fdb5f39b8fe508cd3c772b1da1f91a58179fa0895e0b2bf190b + # 2019/06/14: now at https://sourceforge.net/projects/openwatcom/files/open-watcom-1.9/open-watcom-c-win32-1.9.exe/download + w_download https://sourceforge.net/projects/openwatcom/files/open-watcom-1.9/open-watcom-c-win32-1.9.exe 040c910aba304fdb5f39b8fe508cd3c772b1da1f91a58179fa0895e0b2bf190b - if [ $W_UNATTENDED_SLASH_Q ]; then + if [ -n "${W_OPT_UNATTENDED}" ]; then # Options documented at http://bugzilla.openwatcom.org/show_bug.cgi?id=898 # But they don't seem to work on Wine, so jam them into setup.inf # Pick smallest installation that supports 16-bit C and C++ w_try_cd "$W_TMP" - cp "$W_CACHE"/openwatcom/open-watcom-c-win32-1.9.exe . - w_try_unzip . open-watcom-c-win32-1.9.exe setup.inf + cp "$W_CACHE/${W_PACKAGE}/${file1}" . + w_try_unzip . "${file1}" setup.inf sed -i 's/tools16=.*/tools16=true/' setup.inf - w_try zip -f open-watcom-c-win32-1.9.exe - w_try "$WINE" open-watcom-c-win32-1.9.exe -s + w_try zip -f "${file1}" + w_try "$WINE" "${file1}" -s else w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" open-watcom-c-win32-1.9.exe + w_try "$WINE" "${file1}" fi if test ! -f "$W_DRIVE_C"/WATCOM/binnt/wcc.exe; then @@ -13836,7 +15578,7 @@ w_metadata protectionid apps \ load_protectionid() { - w_download_manual "https://pid.gamecopyworld.com/" ProtectionId.685.December.2016.rar 27a84d740c9fb96cc866438a2b5cd4afc350affc8b7a0122c28c651af3559aea + w_download "https://web.archive.org/web/20181209123344/https://pid.wiretarget.com/?f=ProtectionId.685.December.2016.rar" 27a84d740c9fb96cc866438a2b5cd4afc350affc8b7a0122c28c651af3559aea ProtectionId.685.December.2016.rar w_try_cd "$W_SYSTEM32_DLLS" w_try_unrar "${W_CACHE}/${W_PACKAGE}/${file1}" @@ -13864,7 +15606,7 @@ load_psdk2003() w_download https://download.microsoft.com/download/7/5/e/75ec7f04-4c8c-4f38-b582-966e76602643/5.2.3790.1830.15.PlatformSDK_Svr2003SP1_rtm.img 7ef138b07a8ed2e008371d8602900eb68e86ac2a832d16b53f462a9e64f24d53 # Unpack ISO (how handy that 7z can do this!) - # Only the windows version of 7z can handle .img files? + # Only the Windows version of 7z can handle .img files? WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip w_try_cd "$W_PROGRAMS_X86_UNIX"/7-Zip w_try "$WINE" 7z.exe x -y -o"$W_TMP_WIN" "$W_CACHE_WIN\\psdk2003\\5.2.3790.1830.15.PlatformSDK_Svr2003SP1_rtm.img" @@ -13874,7 +15616,7 @@ load_psdk2003() # Sanity check... w_verify_sha256sum d2605ae6f35a7fcc209e1d8dfbdfdb42afcb61e7d173f58fd608ae31db4ab1e7 PSDK-x86.msi - w_try "$WINE" msiexec /i PSDK-x86.msi ${W_UNATTENDED_SLASH_QB} + w_try "$WINE" msiexec /i PSDK-x86.msi ${W_OPT_UNATTENDED:+/qb} } #---------------------------------------------------------------- @@ -13988,19 +15730,19 @@ _EOF_ #---------------------------------------------------------------- w_metadata qq apps \ - title="QQ 8.9.1(Chinese chat app)" \ - publisher="Tencent" \ - year="2017" \ - media="download" \ - file1="QQ8.9.1.exe" \ - file2="QQ.tar.gz"\ - installed_exe1="$W_PROGRAMS_X86_WIN/Tencent/QQ/Bin/QQScLauncher.exe" \ - homepage="https://www.qq.com/" \ - unattended="no" + title="QQ 8.9.6(Chinese chat app)" \ + publisher="Tencent" \ + year="2017" \ + media="download" \ + file1="QQ8.9.6.exe" \ + file2="QQ.tar.gz"\ + installed_exe1="$W_PROGRAMS_X86_WIN/Tencent/QQ/Bin/QQScLauncher.exe" \ + homepage="https://www.qq.com/" \ + unattended="no" load_qq() { - w_download https://dldir1.qq.com/qqfile/qq/QQ8.9.1/20437/QQ8.9.1.exe 8e0d3ff5264da2d77e2fc011c21048edeebcf082f55f68a301f763c3a15c0d3f + w_download https://dldir1.qq.com/qqfile/qq/QQ8.9.6/22404/QQ8.9.6.exe d207f49a642be21c4e1b14fc9f4cf47a6a9a2718afbc8bd0685b607b65424ef6 w_download https://hillwoodhome.net/wine/QQ.tar.gz eb5cd6371eb75ec9e2fc0271199df05cbb9f38a60c2e81d5d8ac7daeb40aba62 if w_workaround_wine_bug 5162 "Installing native riched20 to work around can't input username."; then @@ -14023,7 +15765,7 @@ load_qq() w_try mv QQ/48x48/QQ.png ~/.local/share/icons/hicolor/48x48/apps w_try mv QQ/256x256/QQ.png ~/.local/share/icons/hicolor/256x256/apps # shellcheck disable=SC1001 - echo Exec=env WINEPREFIX="$WINEPREFIX" "$WINE" "$W_PROGRAMS_X86_WIN"\/Tencent\/QQ\/bin\/QQScLauncher.exe >> "$HOME/.local/share/applications/wine/Programs/腾讯软件/QQ/腾讯QQ.desktop" + echo Exec=env WINEPREFIX="$WINEPREFIX" "$WINE" \""$W_PROGRAMS_X86_WIN"/Tencent/QQ/bin/QQScLauncher.exe\" >> "$HOME/.local/share/applications/wine/Programs/腾讯软件/QQ/腾讯QQ.desktop" fi if w_workaround_wine_bug 39657 "Disable ntoskrnl.exe to work around can't be started bug"; then @@ -14034,6 +15776,9 @@ load_qq() w_override_dlls disabled txplatform.exe fi + # Disable update, stay on the version. + w_override_dlls disabled txupd.exe + w_try_cd "$W_CACHE/$W_PACKAGE" w_try "$WINE" "$file1" } @@ -14047,7 +15792,7 @@ w_metadata qqintl apps \ media="download" \ file1="QQIntl2.11.exe" \ installed_exe1="$W_PROGRAMS_X86_WIN/Tencent/QQIntl/Bin/QQ.exe" \ - homepage="http://www.imqq.com" \ + homepage="https://www.imqq.com/" \ unattended="no" load_qqintl() @@ -14090,12 +15835,12 @@ load_safari() { w_download http://appldnld.apple.com.edgesuite.net/content.info.apple.com/Safari5/061-7138.20100607.Y7U87/SafariSetup.exe a5b44032fe9cd0ede8571023912c91b1dcca106ad6a65a822be9ebd405510939 - if test $W_OPT_UNATTENDED; then + if [ -n "$W_OPT_UNATTENDED" ]; then w_warn "Safari's silent install is broken under Wine. See https://bugs.winehq.org/show_bug.cgi?id=23493. You should do a regular install if you want to use Safari." fi w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE_MULTI" SafariSetup.exe $W_UNATTENDED_SLASH_QN + w_try "$WINE_MULTI" SafariSetup.exe ${W_OPT_UNATTENDED:+/qn} } #---------------------------------------------------------------- @@ -14168,7 +15913,7 @@ load_steam() # w_call corefonts #fi - if test $W_OPT_UNATTENDED; then + if [ -n "$W_OPT_UNATTENDED" ]; then w_ahk_do " run, SteamSetup.exe SetTitleMatchMode, 2 @@ -14231,7 +15976,7 @@ w_metadata utorrent apps \ load_utorrent() { # BitTorrent client supported on Windows, OS X, Linux through Wine - # 2012/03/07: sha1sum ec2c086ff784b06e4ff05243164ddb768b81ee32096afed6d5e574ff350b619e + # 2012/03/07: sha256sum ec2c086ff784b06e4ff05243164ddb768b81ee32096afed6d5e574ff350b619e w_download_manual "https://www.oldapps.com/utorrent.php?old_utorrent=38" utorrent_2.2.1.exe ec2c086ff784b06e4ff05243164ddb768b81ee32096afed6d5e574ff350b619e w_try cp -f "$W_CACHE/utorrent/$file1" "$W_WINDIR_UNIX"/utorrent.exe @@ -14289,7 +16034,7 @@ load_vc2005express() w_try_7z "$W_TMP" "$W_CACHE"/vc2005express/VC.iso w_try_cd "$W_TMP" - if [ $W_UNATTENDED_SLASH_Q ]; then + if [ -n "${W_OPT_UNATTENDED}" ]; then chmod +x Ixpvc.exe # Add /qn after ReallySuppress for a really silent install (but then you won't see any errors) @@ -14346,7 +16091,7 @@ load_vc2005trial() w_download https://download.microsoft.com/download/6/f/5/6f5f7a01-50bb-422d-8742-c099c8896969/En_vs_2005_vsts_180_Trial.img 3ae9f611c60c64d82e1fa9c94714aa6b6c10f6c2c05446e14b5afb5a257f86dc # Unpack ISO (how handy that 7z can do this!) - # Only the windows version of 7z can handle .img files? + # Only the Windows version of 7z can handle .img files? WINETRICKS_OPT_SHAREDPREFIX=1 w_call 7zip w_try_cd "$W_PROGRAMS_X86_UNIX"/7-Zip w_try "$WINE" 7z.exe x -y -o"$W_TMP_WIN" "$W_CACHE_WIN\\vc2005trial\\En_vs_2005_vsts_180_Trial.img" @@ -14411,7 +16156,7 @@ load_vc2008express() # See also https://blogs.msdn.microsoft.com/astebner/2008/04/25/a-simpler-way-to-silently-install-visual-studio-2008-express-editions-with-a-caveat/ w_try_cd "$W_TMP"/VCExpress - w_try "$WINE" setup.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" setup.exe ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- @@ -14436,7 +16181,7 @@ load_vc2010express() w_try_cd "$W_TMP"/VCExpress # Uninstall wine-mono, installer doesn't attempt to install native .Net if mono is installed, - # Then the installer throws and exception and fails + # Then the installer throws an exception and fails # See https://github.com/Winetricks/winetricks/issues/1165 w_call remove_mono @@ -14452,7 +16197,7 @@ load_vc2010express() w_call vcrun2005 fi - w_try $WINE setup.exe $W_UNATTENDED_SLASH_Q + w_try $WINE setup.exe ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- @@ -14488,9 +16233,10 @@ load_winamp() { w_info "may send information while installing, see https://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?threatid=159633" - w_download https://winampplugins.co.uk/Winamp/winamp5666_full_all_redux.exe ea9a6ba81475d49876d0b8b300d93f28f7959b8e99ce4372dbde746567e14002 + # 2019/12/11: previously at https://winampplugins.co.uk/Winamp/winamp5666_full_all_redux.exe + w_download http://www.meggamusic.co.uk/winamp/winamp5666_full_all_redux.exe ea9a6ba81475d49876d0b8b300d93f28f7959b8e99ce4372dbde746567e14002 w_try_cd "$W_CACHE/$W_PACKAGE" - if test $W_OPT_UNATTENDED; then + if [ -n "$W_OPT_UNATTENDED" ]; then w_ahk_do " SetWinDelay 500 SetTitleMatchMode, 2 @@ -14551,7 +16297,7 @@ load_wme9() w_download https://people.ok.ubc.ca/mberger/MiscSW/WMEncoder.exe 19d1610d12b51c969f64703c4d3a76aae30dee526bae715381b5f3369f717d76 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" WMEncoder.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" WMEncoder.exe ${W_OPT_UNATTENDED:+/q} } #---------------------------------------------------------------- @@ -14567,7 +16313,7 @@ load_wm9codecs() w_download_to wm9codecs http://birds.camden.rutgers.edu/WM9Codecs9x.exe f25adf6529745a772c4fdd955505e7fcdc598b8a031bb0ce7e5856da5e5fcc95 w_try_cd "$W_CACHE/wm9codecs" w_set_winver win2k - w_try "$WINE" WM9Codecs9x.exe $W_UNATTENDED_SLASH_Q + w_try "$WINE" WM9Codecs9x.exe ${W_OPT_UNATTENDED:+/q} } w_metadata wmp9 dlls \ @@ -14585,14 +16331,14 @@ load_wmp9() # Not really expected to work well yet; see # https://appdb.winehq.org/appview.php?versionId=1449 - #w_package_unsupported_win64 + # This version of Windows Media Player can be installed only on Windows 98 Second Edition, Windows Millennium Edition, Windows 2000, Windows XP, and Windows .NET Server. w_call wsh57 w_set_winver win2k # See also https://support.microsoft.com/en-us/help/18612/windows-media-player - w_download https://download.microsoft.com/download/1/b/c/1bc0b1a3-c839-4b36-8f3c-19847ba09299/MPSetup.exe 678c102847c18a92abf13c3fae404c3473a0770c871a046b45efe623c9938fc0 + w_download https://web.archive.org/web/20180404022333if_/download.microsoft.com/download/1/b/c/1bc0b1a3-c839-4b36-8f3c-19847ba09299/MPSetup.exe 678c102847c18a92abf13c3fae404c3473a0770c871a046b45efe623c9938fc0 # remove builtin placeholders to allow update rm -f "$W_SYSTEM32_DLLS"/wmvcore.dll "$W_SYSTEM32_DLLS"/wmp.dll @@ -14606,11 +16352,17 @@ load_wmp9() w_override_app_dlls MPSetup.exe native pidgen w_try_cd "$W_CACHE"/"$W_PACKAGE" - w_try "$WINE" MPSetup.exe $W_UNATTENDED_SLASH_Q - + if [ "$W_ARCH" = "win64" ]; then + w_try cabextract -d "$W_TMP" ./MPSetup.exe + w_try_cd "$W_TMP" + w_try sed -i 's/IsWow64Process/IsNow64Process/' setup_wm.exe + w_try "$WINE" setup_wm.exe ${W_OPT_UNATTENDED:+/Quiet} + else + w_try "$WINE" MPSetup.exe ${W_OPT_UNATTENDED:+/q} + fi load_wm9codecs - w_unset_winver + w_set_winver 'default' } #---------------------------------------------------------------- @@ -14646,7 +16398,9 @@ load_wmp10() # Crashes on exit, but otherwise ok; see https://bugs.winehq.org/show_bug.cgi?id=12633 w_try_cd "$W_CACHE/$W_PACKAGE" - w_try "$WINE" MP10Setup.exe $W_UNATTENDED_SLASH_Q + w_try cabextract -d "$W_TMP" ./MP10Setup.exe + w_try_cd "$W_TMP" + "$WINE" setup_wm.exe ${W_OPT_UNATTENDED:+/Quiet} # Disable WMP's services, since they depend on unimplemented stuff, they trigger the GUI debugger several times w_try_regedit /D "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Cdr4_2K" @@ -14654,7 +16408,59 @@ load_wmp10() load_wm9codecs - w_unset_winver + w_set_winver 'default' +} + +#---------------------------------------------------------------- + +w_metadata wmp11 dlls \ + title="Windows Media Player 11" \ + publisher="Microsoft" \ + year="2007" \ + media="download" \ + file1="wmp11-windowsxp-x86-enu.exe" \ + installed_file1="$W_PROGRAMS_X86_WIN/Windows Media Player/wmplayer.exe" + +load_wmp11() +{ + # See https://appdb.winehq.org/objectManager.php?sClass=version&iId=32057 + w_call wsh57 + w_call gdiplus + + if [ "$W_ARCH" = "win32" ]; then + # https://appdb.winehq.org/objectManager.php?sClass=version&iId=8150 + w_download https://web.archive.org/web/20170628063001/http://download.microsoft.com/download/0/9/5/0953e553-3bb6-44b1-8973-106f1b7e5049/wmp11-windowsxp-x86-enu.exe ffd321a441a67001a893f3bde4bb1afba07d4d2c9659bfdb0fbb057e7945d970 + installer_exe=wmp11-windowsxp-x86-enu.exe + wmf_exe=wmfdist11.exe + wmf_exe=wmp11.exe + elif [ "$W_ARCH" = "win64" ]; then + # https://appdb.winehq.org/objectManager.php?sClass=version&iId=32057 + w_download https://web.archive.org/web/20190512112704/https://download.microsoft.com/download/3/0/8/3080C52C-2517-43DE-BDB4-B7EAFD88F084/wmp11-windowsxp-x64-enu.exe 5af407cf336849aff435044ec28f066dd523bbdc22d1ce7aaddb5263084f5526 + installer_exe=wmp11-windowsxp-x64-enu.exe + wmf_exe=wmfdist11-64.exe + wmp_exe=wmp11-64.exe + fi + + w_set_winver winxp + + # remove builtin placeholders to allow update + w_try rm -f "$W_PROGRAMS_UNIX/Windows Media Player/wmplayer.exe" "$W_SYSTEM64_DLLS"/wmp.dll "$W_SYSTEM64_DLLS"/wmvcore.dll + + # need native overrides to allow update and later checks to succeed + w_override_dlls native l3codeca.acm wmp wmplayer.exe wmvcore wmpnssci + + w_try_cd "$W_TMP" + + # https://bugs.winehq.org/show_bug.cgi?id=10219#c1 + w_try_cabextract "${W_CACHE}/${W_PACKAGE}/${installer_exe}" + "${WINE}" "${wmf_exe}" /quiet + "${WINE}" "${wmp_exe}" /quiet + + # Disable WMP's services, since they depend on unimplemented stuff, they trigger the GUI debugger several times + w_try_regedit /D "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Cdr4_2K" + w_try_regedit /D "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Cdralw2k" + + w_set_winver 'default' } #---------------------------------------------------------------- @@ -15021,14 +16827,14 @@ w_metadata wglgears benchmarks \ year="2005" \ media="download" \ file1="wglgears.exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/misc/wglgears.exe" + installed_exe1="$W_SYSTEM32_DLLS_WIN/wglgears.exe" load_wglgears() { - w_download http://www2.cs.uidaho.edu/~jeffery/win32/wglgears.exe 858ba95ea3c9af4ded1f4100e59b6e8e57024f3efef56304dbd48106e8f2f6f7 - mkdir -p "$W_PROGRAMS_X86_UNIX/misc" - cp "$W_CACHE"/wglgears/wglgears.exe "$W_PROGRAMS_X86_UNIX/misc" - chmod +x "$W_PROGRAMS_X86_UNIX/misc/wglgears.exe" + # Original site http://www2.cs.uidaho.edu/~jeffery/win32/wglgears.exe is 403 as of 2019/04/07 + w_download https://web.archive.org/web/20091001002702/http://www2.cs.uidaho.edu/~jeffery/win32/wglgears.exe 858ba95ea3c9af4ded1f4100e59b6e8e57024f3efef56304dbd48106e8f2f6f7 + cp "$W_CACHE"/wglgears/wglgears.exe "$W_SYSTEM32_DLLS" + chmod +x "$W_SYSTEM32_DLLS/wglgears.exe" } #---------------------------------------------------------------- @@ -15254,56 +17060,6 @@ load_acreedbro() #---------------------------------------------------------------- -w_metadata atmosphir games \ - title="Atmosphir" \ - publisher="Minor Studios" \ - year="2011" \ - media="manual_download" \ - file1="Atmosphir Installer v1.0.0 fixed.exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/Minor Studios/Atmosphir/Atmosphir.exe" \ - homepage="http://www.atmosphir.com" - -load_atmosphir() -{ - w_download_manual https://download.cnet.com/Atmosphir/3000-7492_4-75335647.html atmosphir-installer-v1.0.2.exe a6b2c82a98d750014874f8ab445b38ebb127450e5a7a9350832cf3a8d3a - - w_try_cd "$W_CACHE/$W_PACKAGE" - w_ahk_do " - run Atmosphir Installer v1.0.0 fixed.exe - winwait, Atmosphir Setup, Welcome - if ( w_opt_unattended > 0 ) { - sleep 1000 - ControlClick Button2 - winwait, Atmosphir Setup, License Agreement - sleep 1000 - ControlClick Button2 - winwait, Atmosphir Setup, Choose Install Location - sleep 1000 - ControlClick Button2 - winwait, Atmosphir Setup, Choose Start Menu Folder - sleep 1000 - ControlClick Button2 - } - winwait, Atmosphir Setup, Installation complete - if ( w_opt_unattended > 0 ) { - sleep 1000 - send {Space} ; ControlClick Button4 # start - sleep 1000 - ControlClick Button2 - ; Let the launcher do the initial full download - winwait, Atmosphir Launcher - winwaitclose - ; then kill the game when it starts - winwait, Atmosphir - ;winkill ; doesn't work, game traps it - winclose - } - winwaitclose - " -} - -#---------------------------------------------------------------- - w_metadata avatar_demo games \ title="James Camerons Avatar: The Game Demo" \ publisher="Ubisoft" \ @@ -15580,6 +17336,49 @@ load_bfbc2() #---------------------------------------------------------------- +w_metadata cnc3_demo games \ + title="Command & Conquer 3 Demo" \ + publisher="EA" \ + year="2007" \ + media="download" \ + file1="CnC3Demo.exe" \ + installed_exe1="$W_PROGRAMS_X86_WIN/Electronic Arts/Command & Conquer 3 Tiberium Wars Demo/CNC3Demo.exe" + +load_cnc3_demo() +{ + w_download "https://files.cncnz.com/cc3_tiberium_wars/demo/CnC3Demo.exe" 1e2499f441ef1fc3cbe447ac16361ad4247a02b9b8ec05f504161e7b5b1254e5 + + w_try_cd "$W_CACHE/$W_PACKAGE" + w_ahk_do " + SetTitleMatchMode, 2 + run, CnC3Demo.exe + winwait, Conquer 3, free space to install + if ( w_opt_unattended > 0 ) { + controlclick, button1 + winwait, WinZip, After installation + controlclick, button1 + winwait, Conquer 3, InstallShield + controlclick, button1 + winwait, Conquer 3, license + controlclick, button3 + controlclick, button5 + winwait, Conquer 3, setup type + controlclick, button5 + winwait, Conquer 3, EA Link + controlclick, button1 + winwait, Conquer 3, GameSpy + controlclick, button1 + } + winwait, Conquer 3, Launch the program + if ( w_opt_unattended > 0 ) + controlclick, button1 + + winwaitclose, Conquer 3, Launch the program + " +} + +#---------------------------------------------------------------- + w_metadata cnc_redalert3_demo games \ title="Command & Conquer Red Alert 3 Demo" \ publisher="EA" \ @@ -16719,8 +18518,7 @@ load_dragonage() " # Since the installer explodes on exit, just wait for the # last file it's known to create - while ! test -f "$W_PROGRAMS_X86_UNIX/Dragon Age/bin_ship/DAOriginsLauncher-MCE.png" - do + while ! test -f "$W_PROGRAMS_X86_UNIX/Dragon Age/bin_ship/DAOriginsLauncher-MCE.png"; do w_info "Waiting for installer to finish..." sleep 1 done @@ -17249,13 +19047,10 @@ w_metadata mfsx_demo games \ year="2006" \ media="download" \ file1="FSXDemo.exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/Microsoft Games/Microsoft Flight Simulator X Demo/fsx.exe" \ - wine_showstoppers="26411" + installed_exe1="$W_PROGRAMS_X86_WIN/Microsoft Games/Microsoft Flight Simulator X Demo/fsx.exe" load_mfsx_demo() { - w_workaround_wine_bug 26411 "Game hangs on first screen for me" - if w_workaround_wine_bug 25139 "Setting virtual desktop so license screen shows up on first run"; then w_call vd=1024x768 fi @@ -17517,12 +19312,12 @@ load_lhp_demo() ;; esac - w_download_manual "https://www.fileplanet.com/213663/210000/fileinfo/LEGO-Harry-Potter:-Years-1-4-Demo" 01d8e88511d71f5dd1492034ea4b00eacdbbf891ef23cffa31413d232eee3647 + w_download_manual "https://www.fileplanet.com/213663/210000/fileinfo/LEGO-Harry-Potter:-Years-1-4-Demo" "$file1" 01d8e88511d71f5dd1492034ea4b00eacdbbf891ef23cffa31413d232eee3647 w_try_cd "$W_CACHE/$W_PACKAGE" w_ahk_do " SetTitleMatchMode, 2 - run, LEGOHarryPotterDEMO.exe + run, $file1 winwait, LEGO, language if ( w_opt_unattended > 0 ) { controlclick, Button1 @@ -17678,19 +19473,13 @@ w_metadata masseffect2 games \ media="dvd" \ file1="MassEffect2.iso" \ file2="ME2_Disc2.iso" \ - installed_exe1="$W_PROGRAMS_X86_WIN/Mass Effect 2/Binaries/MassEffect2.exe" \ - wine_showstoppers="23184" + installed_exe1="$W_PROGRAMS_X86_WIN/Mass Effect 2/Binaries/MassEffect2.exe" load_masseffect2() { w_mount MassEffect2 w_read_key - # FIXME: only do this for Nvidia graphics cards - if w_workaround_wine_bug 23151 "Disabling glsl"; then - w_call glsl=disabled - fi - w_ahk_do " SetTitleMatchMode, 2 run, ${W_ISO_MOUNT_LETTER}:Setup.exe @@ -17755,11 +19544,6 @@ load_masseffect2_demo() { w_download http://static.cdn.ea.com/bioware/u/f/eagames/bioware/masseffect2/ME2_DEMO/MassEffect2DemoEN.exe 4ec5ce1dc90c10512324d24cba2b5b9ba1e1872ed4c23e3ede0fc0accc7d2ff2 - # FIXME: only do this for Nvidia graphics cards - if w_workaround_wine_bug 23151 "Disabling glsl"; then - w_call glsl=disabled - fi - # Don't let self-extractor write into $W_CACHE case "$W_PLATFORM" in windows_cmd|wine_cmd) @@ -17932,78 +19716,6 @@ load_menofwar() #---------------------------------------------------------------- -w_metadata mise games \ - title="Monkey Island: Special Edition" \ - publisher="LucasArts" \ - year="2009" \ - media="dvd" \ - file1="SecretOfMonkeyIslandSE_ddsetup.zip" \ - installed_exe1="$W_PROGRAMS_X86_WIN/LucasArts/The Secret of Monkey Island Special Edition/MISE.exe" - -load_mise() -{ - w_download_manual "https://www.direct2drive.com/8241/product/Buy-The-Secret-of-Monkey-Island(R):-Special-Edition-Download" SecretOfMonkeyIslandSE_ddsetup.zip 2e32458698c9ec7ebce94ae5c57531a3fe1dbb9e - - mkdir -p "$W_TMP/$W_PACKAGE" - w_try_cd "$W_TMP/$W_PACKAGE" - - # Don't extract DirectX/dotnet35 installers, they just take up extra time and aren't needed. Luckily, MISE copes well and just skips them if they are missing: - w_try unzip "$W_CACHE/$W_PACKAGE"/SecretOfMonkeyIslandSE_ddsetup.zip -x DirectX* dotnet* - - w_ahk_do " - SetTitleMatchMode, 2 - run, setup.exe - WinWait, The Secret of Monkey Island, This wizard will guide you - sleep 1000 - ControlClick, Button2 - WinWait, The Secret of Monkey Island, License Agreement - sleep 1000 - ControlSend, RichEdit20A1, {CTRL}{END} - sleep 1000 - ControlClick, Button4 - sleep 1000 - ControlClick, Button2 - WinWait, The Secret of Monkey Island, Setup Type - sleep 1000 - ControlClick, Button2 - WinWait, The Secret of Monkey Island, Click Finish - sleep 1000 - ControlClick, Button2 - " - - # FIXME: This app has two different keys - you can use either one. How do we handle that with w_read_key? - if test -f "$W_CACHE/$W_PACKAGE/activationcode.txt"; then - MISE_KEY=$(cat "$W_CACHE/$W_PACKAGE/activationcode.txt") - w_ahk_do " - SetTitleMatchMode, 2 - run, $W_PROGRAMS_X86_WIN\\LucasArts\\The Secret of Monkey Island Special Edition\\MISE.exe - winwait, Product Activation - ControlClick, Edit1 ; Activation Code - send $MISE_KEY - ControlClick Button4 ; Activate Online - winwait, Product Activation, SUCCESSFUL - winClose - sleep 1000 - Process, Close, MISE.exe - " - elif test -f "$W_CACHE/$W_PACKAGE/unlockcode.txt"; then - MISE_KEY=$(cat "$W_CACHE/$W_PACKAGE/unlockcode.txt") - w_ahk_do " - SetTitleMatchMode, 2 - run, $W_PROGRAMS_X86_WIN\\LucasArts\\The Secret of Monkey Island Special Edition\\MISE.exe - winwait, Product Activation - ControlClick, Edit3 ; Unlock Code - send $MISE_KEY - ControlClick Button6 ; Activate manual - winClose - sleep 1000 - Process, Close, MISE.exe - " - fi -} - -#---------------------------------------------------------------- - w_metadata myth2_demo games \ title="Myth II demo 1.8.0" \ publisher="Project Magma" \ @@ -18179,7 +19891,7 @@ load_penpenxmas() w_download http://retrospec.sgn.net/download/files/PenPenXmasOlympics100.exe c35c5c6a9a3fa62d6b099713e72390d0490320534dba958b57b94f0a6ab458db w_try_cd "$W_CACHE/$W_PACKAGE" - "$WINE" PenPenXmasOlympics100.exe $W_UNATTENDED_SLASH_S + "$WINE" PenPenXmasOlympics100.exe ${W_OPT_UNATTENDED:+/S} } #---------------------------------------------------------------- @@ -18244,11 +19956,14 @@ w_metadata rct3deluxe games \ year="2004" \ media="cd" \ file1="RCT3.iso" \ - installed_exe1="$W_PROGRAMS_X86_WIN/Atari/RollerCoaster Tycoon 3/RCT3.EXE"\ - wine_showstoppers="21448" + installed_exe1="$W_PROGRAMS_X86_WIN/Atari/RollerCoaster Tycoon 3/RCT3.EXE" load_rct3deluxe() { + if w_workaround_wine_bug 21448; then + w_warn "DRM doesn't work, see https://bugs.winehq.org/show_bug.cgi?id=21448" + fi + w_mount RCT3 # FIXME: make videos and music work @@ -18368,8 +20083,7 @@ w_metadata sims3 games \ year="2009" \ media="dvd" \ file1="Sims3.iso" \ - installed_exe1="$W_PROGRAMS_X86_WIN/Electronic Arts/The Sims 3/Game/Bin/TS3.exe" \ - wine_showstoppers="26273" + installed_exe1="$W_PROGRAMS_X86_WIN/Electronic Arts/The Sims 3/Game/Bin/TS3.exe" load_sims3() { @@ -18434,8 +20148,7 @@ w_metadata simsmed games \ year="2011" \ media="dvd" \ file1="TSimsM.iso" \ - installed_exe1="$W_PROGRAMS_X86_WIN/Electronic Arts/The Sims Medieval/Game/Bin/TSM.exe" \ - wine_showstoppers="26273" + installed_exe1="$W_PROGRAMS_X86_WIN/Electronic Arts/The Sims Medieval/Game/Bin/TSM.exe" load_simsmed() { @@ -18533,8 +20246,7 @@ w_metadata sims3_gen games \ year="2011" \ media="dvd" \ file1="Sims3EP04.iso" \ - installed_exe1="$W_PROGRAMS_X86_WIN/Electronic Arts/The Sims 3 Generations/Game/Bin/TS3EP04.exe" \ - wine_showstoppers="26273" + installed_exe1="$W_PROGRAMS_X86_WIN/Electronic Arts/The Sims 3 Generations/Game/Bin/TS3EP04.exe" load_sims3_gen() { @@ -18757,8 +20469,7 @@ load_spore_cc_demo() send {SPACE}{DOWN}{SPACE}{ENTER} winwaitclose " - while pgrep -f "$file1" > /dev/null - do + while pgrep -f "$file1" > /dev/null; do w_info "Waiting for installer to finish." sleep 2 done @@ -19461,76 +21172,6 @@ load_wog() " } -#---------------------------------------------------------------- -# Gog.com games -#---------------------------------------------------------------- - -w_metadata beneath_a_steel_sky_gog games \ - title="Beneath a Steel Sky (GOG.com, free)" \ - publisher="Virgin Interactive" \ - year="1994" \ - file1="setup_beneath_a_steel_sky.exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/GOG.com/Beneath a Steel Sky/ScummVM/scummvm.exe" - -load_beneath_a_steel_sky_gog() -{ - winetricks_load_gog "beneath_a_steel_sky" "Beneath a Steel Sky" "" "TsCheckBox4" "ScummVM\\scummvm.exe -c \"C:\\Program Files\\GOG.com\\Beneath a Steel Sky\\beneath.ini\" beneath" "" "" "75176395,1f99e12643529baa91fecfb206139a8921d9589c" -} - -w_metadata sacrifice_gog games \ - title="Sacrifice (GOG.com)" \ - publisher="Interplay" \ - year="2000" \ - media="manual_download" \ - file1="setup_sacrifice.exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/GOG.com/Sacrifice/Sacrifice.exe" - -load_sacrifice_gog() -{ - winetricks_load_gog "sacrifice" "Sacrifice" "" "TsCheckBox2" "sacrifice" "" "" "591161642,63e77685599ce20c08b004a9fa3324e466ce1679" -} - -w_metadata the_witcher_2_gog games \ - title="The Witcher 2: Assassins of Kings" \ - publisher="Atari" \ - year="2011" \ - media="manual_download" \ - file1="setup_the_witcher_2_ee_3.0.1.17.exe" \ - installed_exe1="$W_PROGRAMS_X86_WIN/GOG.com/The Witcher 2/bin/witcher2.exe" - -load_the_witcher_2_gog() -{ - winetricks_load_gog "the_witcher_2" \ - "The Witcher 2 - Assassins of Kings" \ - "setup_the_witcher_2-1.bin,2048477,b826cd7b096fd98eab78517752522b2a3ca8af5e\ - setup_the_witcher_2-2.bin,2050788,a419926e4d02de81d79d586bf893150d3231833c \ - setup_the_witcher_2-3.bin,2050788,6974cadc29fb8a8795aa245c5f8bb24e5e0cff5e \ - setup_the_witcher_2-4.bin,2050788,ed79c1e9456801addf6fd6e687528fa01354b0d8 \ - setup_the_witcher_2-5.bin,1631852,354cb73ae3e73cb88dedc53dd472803862a654cf \ - setup_the_witcher_2.bin,129136,d3aa93bf147e155c5035ae15444916feabfd47b4" \ - "" "bin/witcher2.exe" "" "The Witcher 2" \ - "2308,9ca06383301f242143f69fe08974f9d4d713ac6b" -} - -# Brief HOWTO for adding a GOG game: -# - "beneath_a_steel_sky" is the installer exe name, minus "setup_" and ".exe" -# - "Beneath a Steel Sky" is installer window title, minus "Setup - " -# - There are no other files for this game, so this parameter is empty. -# Otherwise it should be of the following form: -# file_name[,length[,sha1sum]] [...] -# - "TsCheckBox4" is the control name for the checkbox deciding whether it will -# install some reader (Foxit in this case, could be Acrobat Reader). That -# installation is enabled by default, and would just bloat the generic -# AutoHotKey script, so it gets disabled. -# - "ScummVM\\[...]" is the command line to run the game, as fetched from the -# shortcut/launcher installer/wine creates, which will be used in BAT scripts -# created by wisotool -# - The part in the URL which is specific to this game is identical to its "id" -# (first parameter), so this parameter is left out. -# - The install directory is the same as installer window title (second -# parameter), so this parameter is left out. -# - Main installer size and sha1sum, separated by a comma. - #---------------------------------------------------------------- # Steam Games #---------------------------------------------------------------- @@ -19811,6 +21452,40 @@ _EOF_ w_try_regedit "$W_TMP"/set-mac.reg } +#---------------------------------------------------------------- + +w_metadata mackeyremap=both settings \ + title="Enable mapping opt->alt and cmd->ctrl keys for the Mac native driver" +w_metadata mackeyremap=left settings \ + title="Enable mapping of left opt->alt and cmd->ctrl keys for the Mac native driver" +w_metadata mackeyremap=none settings \ + title="Do not remap keys for the Mac native driver (default)" + +load_mackeyremap() +{ + case "$1" in + both|y) arg=both; _W_arg_l=y; _W_arg_r=y ;; + left) arg=left; _W_arg_l=y; _W_arg_r=n ;; + none|n) arg=none; _W_arg_l=n; _W_arg_r=n ;; + *) w_die "illegal value $1 for MacKeyRemap";; + esac + + echo "Setting MacKeyRemap to $arg" + cat > "$W_TMP"/set-mackeyremap.reg <<_EOF_ +REGEDIT4 + +[HKEY_CURRENT_USER\\Software\\Wine\\Mac Driver] +"LeftCommandIsCtrl"="$_W_arg_l" +"LeftOptionIsAlt"="$_W_arg_l" +"RightCommandIsCtrl"="$_W_arg_r" +"RightOptionIsAlt"="$_W_arg_r" + +_EOF_ + w_try_regedit "$W_TMP"/set-mackeyremap.reg + + unset _W_arg_l _W_arg_r +} + #---------------------------------------------------------------- # X11 Driver settings @@ -19846,6 +21521,42 @@ w_metadata windowmanagerdecorated=n settings \ title_uk="Не дозволяти менеджеру вікон декорувати вікна" \ title="Prevent the window manager from decorating windows" +#---------------------------------------------------------------- + +w_metadata usetakefocus=enabled settings \ + title_cz="Aktivovat UseTakeFocus" \ + title_uk="Увімкнути фокусування на вікні" \ + title_sk="Aktivovať UseTakeFocus" \ + title_tlh="Qorwagh buSchoH \'e\' chu\'" \ + title="Enable UseTakeFocus" +w_metadata usetakefocus=disabled settings \ + title_cz="Deaktivovat UseTakeFocus (výchozí)" \ + title_uk="Вимкнути фокусування на вікні (за замовчуванням)" \ + title_sk="Deaktivovať UseTakeFocus (výchozí)" \ + title_tlh="Qorwagh buSchoH \'e\' chu\'Ha\' (DuH choHlu\'pu\'be\'bogh)" \ + title="Disable UseTakeFocus (default)" + +load_usetakefocus() +{ + case "$1" in + enabled) arg="Y";; + disabled) arg="N";; + *) w_die "illegal value $1 for UseTakeFocus";; + esac + + echo "Setting UseTakeFocus to $arg" + cat > "$W_TMP"/set-gfs.reg <<_EOF_ +REGEDIT4 + +[HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver] +"UseTakeFocus"="$arg" + +_EOF_ + w_try_regedit "$W_TMP"/set-gfs.reg +} + +#---------------------------------------------------------------- + load_windowmanagerdecorated() { case "$1" in @@ -19871,6 +21582,8 @@ w_metadata windowmanagermanaged=n settings \ title_uk="Не дозволяти менеджеру вікон керування вікнами" \ title="Prevent the window manager from controlling windows" +#---------------------------------------------------------------- + load_windowmanagermanaged() { case "$1" in @@ -20070,7 +21783,11 @@ w_metadata ddr=opengl settings \ load_ddr() { - winetricks_set_wined3d_var DirectDrawRenderer "$1" + if w_wine_version_in ,3.16 ; then + winetricks_set_wined3d_var DirectDrawRenderer "$1" + else + winetricks_set_wined3d_var renderer "$1" + fi } #---------------------------------------------------------------- @@ -20274,16 +21991,17 @@ load_vsm() #---------------------------------------------------------------- -w_metadata autostart_winedbg=enable settings \ +w_metadata autostart_winedbg=enabled settings \ title="Automatically launch winedbg when an unhandled exception occurs (default)" -w_metadata autostart_winedbg=disable settings \ +w_metadata autostart_winedbg=disabled settings \ title="Prevent winedbg from launching when an unhandled exception occurs" load_autostart_winedbg() { case "$arg" in - enable) _W_debugger_value="winedbg --auto %ld %ld";; - disable) _W_debugger_value="false";; + # accidentally commited as enable/disable, so accept that, but prefer enabled/disabled + enable|enabled) _W_debugger_value="winedbg --auto %ld %ld";; + disable|disabled) _W_debugger_value="false";; *) w_die "Unexpected argument '$arg'. Should be enable/disable";; esac @@ -20458,8 +22176,7 @@ load_isolate_home() _olddir="$(pwd)" w_try_cd "$WINEPREFIX/drive_c/users/$USER" - for x in * - do + for x in *; do if test -h "$x" && test -d "$x"; then rm -f "$x" mkdir -p "$x" @@ -20484,7 +22201,18 @@ load_native_mdac() { # Set those overrides globally so user programs get MDAC's ODBC # instead of Wine's unixodbc - w_override_dlls native,builtin mtxdm odbc32 odbccp32 oledb32 + + # https://github.com/Winetricks/winetricks/issues/1447 + if w_wine_version_in 4.22, ; then + w_override_dlls native,builtin msado15 + fi + + # https://github.com/Winetricks/winetricks/issues/1448 + if w_wine_version_in ,4.22 ; then + w_override_dlls native,builtin odbccp32 + fi + + w_override_dlls native,builtin mtxdm odbc32 oledb32 } #---------------------------------------------------------------- @@ -20506,9 +22234,18 @@ w_metadata remove_mono settings \ load_remove_mono() { + # Wine before 4.6 installs 'Wine Mono' + # Beginning in 4.6, if using a shared install (i.e., a distro mono package or a tarball manually + # extracted to /usr/share/wine/mono, or equivalent), only 'Wine Mono Windows Support' will be installed. + # If using the old .msi installer, *both* tarballs are installed. + # + # So, we uninstall anything that has 'Wine Mono' in the name to handle both cases. + # If wine uninstaller can't find the application it will return 0 anyway. mono_uuid="$("${WINE_ARCH}" uninstaller --list | grep 'Wine Mono' | cut -f1 -d\|)" if test "$mono_uuid"; then - "${WINE_ARCH}" uninstaller --remove "$mono_uuid" + for uuid in $mono_uuid; do + "${WINE_ARCH}" uninstaller --remove "$uuid" + done else # Bail out if mono isn't installed, so we don't break .Net setups w_warn "Mono does not appear to be installed." @@ -20541,12 +22278,12 @@ load_sandbox() w_skip_windows sandbox && return # Unmap drive Z - rm -f "$WINEPREFIX/dosdevices/z:" + w_try rm -f "$WINEPREFIX/dosdevices/z:" # Disable unixfs # Unfortunately, when you run with a different version of Wine, Wine will recreate this key. # See https://bugs.winehq.org/show_bug.cgi?id=22450 - "$WINE" regedit /d 'HKEY_LOCAL_MACHINE\\Software\\Microsoft\Windows\CurrentVersion\Explorer\Desktop\Namespace\{9D20AAE8-0625-44B0-9CA7-71889C2254D9}' + w_try_regedit /D "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\Namespace\\{9D20AAE8-0625-44B0-9CA7-71889C2254D9}" w_call isolate_home } @@ -20588,12 +22325,26 @@ _EOF_ # settings->winversions #---------------------------------------------------------------- +w_metadata nt351 settings \ + title_uk="Встановити версію Windows NT 3.51" \ + title="Set Windows version to Windows NT 3.51" + +load_nt351() +{ + w_package_unsupported_win64 + w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=41559" "" "5.7" + w_set_winver nt351 +} + +#---------------------------------------------------------------- + w_metadata nt40 settings \ title_uk="Встановити версію Windows NT 4.0" \ - title="Set windows version to Windows NT 4.0" + title="Set Windows version to Windows NT 4.0" load_nt40() { + w_package_unsupported_win64 w_set_winver nt40 } @@ -20610,12 +22361,26 @@ load_vista() #---------------------------------------------------------------- +w_metadata win20 settings \ + title_uk="Встановити версію Windows 2.0" \ + title="Set Windows version to Windows 2.0" + +load_win20() +{ + w_package_unsupported_win64 + w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=41559" "" "5.7" + w_set_winver win20 +} + +#---------------------------------------------------------------- + w_metadata win2k settings \ title_uk="Встановити версію Windows 2000" \ title="Set Windows version to Windows 2000" load_win2k() { + w_package_unsupported_win64 w_set_winver win2k } @@ -20630,12 +22395,11 @@ load_win2k3() w_set_winver win2k3 } - #---------------------------------------------------------------- w_metadata win2k8 settings \ - title_uk="Встановити версію Windows 2008 R2" \ - title="Set Windows version to Windows 2008 R2" + title_uk="Встановити версію Windows 2008" \ + title="Set Windows version to Windows 2008" load_win2k8() { @@ -20644,12 +22408,37 @@ load_win2k8() #---------------------------------------------------------------- +w_metadata win2k8r2 settings \ + title_uk="Встановити версію Windows 2008 R2" \ + title="Set Windows version to Windows 2008 R2" + +load_win2k8r2() +{ + w_set_winver win2k8r2 +} + +#---------------------------------------------------------------- + +w_metadata win30 settings \ + title_uk="Встановити версію Windows 3.0" \ + title="Set Windows version to Windows 3.0" + +load_win30() +{ + w_package_unsupported_win64 + w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=41559" "" "5.7" + w_set_winver win30 +} + +#---------------------------------------------------------------- + w_metadata win31 settings \ title_uk="Встановити версію Windows 3.1" \ title="Set Windows version to Windows 3.1" load_win31() { + w_package_unsupported_win64 w_set_winver win31 } @@ -20705,6 +22494,7 @@ w_metadata win95 settings \ load_win95() { + w_package_unsupported_win64 w_set_winver win95 } @@ -20716,11 +22506,25 @@ w_metadata win98 settings \ load_win98() { + w_package_unsupported_win64 w_set_winver win98 } #---------------------------------------------------------------- +w_metadata winme settings \ + title_uk="Встановити версію Windows ME" \ + title="Set Windows version to Windows ME" + +load_winme() +{ + w_package_unsupported_win64 + w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=41559" "" "5.7" + w_set_winver winme +} + +#---------------------------------------------------------------- + # Really, we should support other values, since winetricks did w_metadata winver= settings \ title_uk="Встановити версію Windows за замовчуванням (Windows 7)" \ @@ -20832,38 +22636,39 @@ winetricks_stats_report() *) return;; esac - test -f "$WINETRICKS_WORKDIR"/breadcrumbs || return + BREADCRUMBS_FILE="$WINETRICKS_WORKDIR"/breadcrumbs + if test -f "$BREADCRUMBS_FILE"; then + WINETRICKS_STATS_BREADCRUMBS=$(tr '\012' ' ' < "$BREADCRUMBS_FILE") + echo "You opted in, so reporting '$WINETRICKS_STATS_BREADCRUMBS' to the winetricks maintainer so he knows which winetricks verbs get used and which don't. Use --optout to disable future reports." - WINETRICKS_STATS_BREADCRUMBS=$(tr '\012' ' ' < "$WINETRICKS_WORKDIR"/breadcrumbs) - echo "You opted in, so reporting '$WINETRICKS_STATS_BREADCRUMBS' to the winetricks maintainer so he knows which winetricks verbs get used and which don't. Use --optout to disable future reports." + report="os=$(winetricks_os_description)&winetricks=$WINETRICKS_VERSION&breadcrumbs=$WINETRICKS_STATS_BREADCRUMBS" + report="$(echo "$report" | sed 's/ /%20/g')" - report="os=$(winetricks_os_description)&winetricks=$WINETRICKS_VERSION&breadcrumbs=$WINETRICKS_STATS_BREADCRUMBS" - report="$(echo "$report" | sed 's/ /%20/g')" + # Just do a HEAD request with the raw command line. + # Yes, this can be fooled by caches. That's ok. - # Just do a HEAD request with the raw command line. - # Yes, this can be fooled by caches. That's ok. - - # Note: these downloads are expected to fail (the resource won't exist), so don't use w_try and use '|| true' to ignore the expected errors - if [ "${WINETRICKS_DOWNLOADER}" = "wget" ] ; then - $torify wget --timeout "${WINETRICKS_DOWNLOADER_TIMEOUT}" \ - --tries "$WINETRICKS_DOWNLOADER_RETRIES" \ - --spider "http://kegel.com/data/winetricks-usage?$report" > /dev/null 2>&1 || true - elif [ "${WINETRICKS_DOWNLOADER}" = "curl" ] ; then - $torify curl --connect-timeout "${WINETRICKS_DOWNLOADER_TIMEOUT}" \ - --retry "$WINETRICKS_DOWNLOADER_RETRIES" \ - -I "http://kegel.com/data/winetricks-usage?$report" > /dev/null 2>&1 || true - elif [ "${WINETRICKS_DOWNLOADER}" = "aria2c" ] ; then - $torify aria2c $aria2c_torify_opts \ - $aria2c_torify_opts \ - --connect-timeout="${WINETRICKS_DOWNLOADER_TIMEOUT}" \ - --daemon=false \ - --enable-rpc=false \ - --input-file='' \ - --max-tries="$WINETRICKS_DOWNLOADER_RETRIES" \ - --save-session='' \ - "http://kegel.com/data/winetricks-usage?$report" > /dev/null 2>&1 || true - else - w_die "Here be dragons" + # Note: these downloads are expected to fail (the resource won't exist), so don't use w_try and use '|| true' to ignore the expected errors + if [ "${WINETRICKS_DOWNLOADER}" = "wget" ] ; then + $torify wget --timeout "${WINETRICKS_DOWNLOADER_TIMEOUT}" \ + --tries "$WINETRICKS_DOWNLOADER_RETRIES" \ + --spider "http://kegel.com/data/winetricks-usage?$report" > /dev/null 2>&1 || true + elif [ "${WINETRICKS_DOWNLOADER}" = "curl" ] ; then + $torify curl --connect-timeout "${WINETRICKS_DOWNLOADER_TIMEOUT}" \ + --retry "$WINETRICKS_DOWNLOADER_RETRIES" \ + -I "http://kegel.com/data/winetricks-usage?$report" > /dev/null 2>&1 || true + elif [ "${WINETRICKS_DOWNLOADER}" = "aria2c" ] ; then + $torify aria2c \ + ${aria2c_torify_opts:+"$aria2c_torify_opts"} \ + --connect-timeout="${WINETRICKS_DOWNLOADER_TIMEOUT}" \ + --daemon=false \ + --enable-rpc=false \ + --input-file='' \ + --max-tries="$WINETRICKS_DOWNLOADER_RETRIES" \ + --save-session='' \ + "http://kegel.com/data/winetricks-usage?$report" > /dev/null 2>&1 || true + else + w_die "Here be dragons" + fi fi } @@ -20898,8 +22703,7 @@ winetricks_shell() $SHELL ;; *) - for term in gnome-terminal konsole Terminal xterm - do + for term in gnome-terminal konsole Terminal xterm; do if test "$(command -v $term 2>/dev/null)"; then $term break @@ -20942,8 +22746,7 @@ execute_command() list-installed) winetricks_list_installed ;; list-all) old_menu="$WINETRICKS_CURMENU" - for WINETRICKS_CURMENU in apps benchmarks dlls fonts games prefix settings - do + for WINETRICKS_CURMENU in apps benchmarks dlls fonts games prefix settings; do echo "===== $WINETRICKS_CURMENU =====" winetricks_list_all done @@ -20951,8 +22754,6 @@ execute_command() ;; unattended) winetricks_set_unattended 1 ;; attended) winetricks_set_unattended 0 ;; - showbroken) W_OPT_SHOWBROKEN=1 ;; - hidebroken) W_OPT_SHOWBROKEN=0 ;; arch=*) winetricks_set_winearch "$arg" ;; prefix=*) winetricks_set_wineprefix "$arg" ;; annihilate) winetricks_annihilate_wineprefix ;; @@ -20988,6 +22789,26 @@ execute_command() comdlg32.ocx) w_warn "Calling comdlg32.ocx is deprecated, please use comdlg32ocx instead" ; w_call comdlg32ocx ;; dotnet1) w_warn "Calling dotnet1 is deprecated, please use dotnet11 instead" ; w_call dotnet11 ;; dotnet2) w_warn "Calling dotnet2 is deprecated, please use dotnet20 instead" ; w_call dotnet20 ;; + d9vk_master) w_warn "Calling d9vk_master is deprecated, please use dxvk_master instead" ; w_call dxvk_master ;; + dxvk54) w_warn "Calling dxvk54 is deprecated, please use dxvk054 instead" ; w_call dxvk054 ;; + dxvk60) w_warn "Calling dxvk60 is deprecated, please use dxvk060 instead" ; w_call dxvk060 ;; + dxvk61) w_warn "Calling dxvk61 is deprecated, please use dxvk061 instead" ; w_call dxvk061 ;; + dxvk62) w_warn "Calling dxvk62 is deprecated, please use dxvk062 instead" ; w_call dxvk062 ;; + dxvk63) w_warn "Calling dxvk63 is deprecated, please use dxvk063 instead" ; w_call dxvk063 ;; + dxvk64) w_warn "Calling dxvk64 is deprecated, please use dxvk064 instead" ; w_call dxvk064 ;; + dxvk65) w_warn "Calling dxvk65 is deprecated, please use dxvk065 instead" ; w_call dxvk065 ;; + dxvk70) w_warn "Calling dxvk70 is deprecated, please use dxvk070 instead" ; w_call dxvk070 ;; + dxvk71) w_warn "Calling dxvk71 is deprecated, please use dxvk071 instead" ; w_call dxvk071 ;; + dxvk72) w_warn "Calling dxvk72 is deprecated, please use dxvk072 instead" ; w_call dxvk072 ;; + dxvk80) w_warn "Calling dxvk80 is deprecated, please use dxvk080 instead" ; w_call dxvk080 ;; + dxvk81) w_warn "Calling dxvk81 is deprecated, please use dxvk081 instead" ; w_call dxvk081 ;; + dxvk90) w_warn "Calling dxvk90 is deprecated, please use dxvk090 instead" ; w_call dxvk090 ;; + dxvk91) w_warn "Calling dxvk91 is deprecated, please use dxvk091 instead" ; w_call dxvk091 ;; + dxvk92) w_warn "Calling dxvk92 is deprecated, please use dxvk092 instead" ; w_call dxvk092 ;; + dxvk93) w_warn "Calling dxvk93 is deprecated, please use dxvk093 instead" ; w_call dxvk093 ;; + dxvk94) w_warn "Calling dxvk94 is deprecated, please use dxvk094 instead" ; w_call dxvk094 ;; + dxvk95) w_warn "Calling dxvk95 is deprecated, please use dxvk095 instead" ; w_call dxvk095 ;; + dxvk96) w_warn "Calling dxvk96 is deprecated, please use dxvk096 instead" ; w_call dxvk096 ;; flash11) w_warn "Calling flash11 is deprecated, please use flash instead" ; w_call flash ;; # art2kmin also comes with fm20.dll fm20) w_warn "Calling fm20 is deprecated, please use controlpad instead" ; w_call controlpad ;; @@ -20999,14 +22820,14 @@ execute_command() glsl-enable) w_warn "Calling glsl-enable is deprecated, please use glsl=enabled instead" ; w_call glsl=enabled ;; 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 wsh56js instead" ; w_call wsh56js ;; + jscript) w_warn "Calling jscript is deprecated, please use wsh57 instead" ; w_call wsh57 ;; 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 ;; python) w_warn "Calling python is deprecated, please use python26 instead" ; w_call python26 ;; vbrun60) w_warn "Calling vbrun60 is deprecated, please use vb6run instead" ; w_call vb6run ;; vcrun2005sp1) w_warn "Calling vcrun2005sp1 is deprecated, please use vcrun2005 instead" ; w_call vcrun2005 ;; vcrun2008sp1) w_warn "Calling vcrun2008sp1 is deprecated, please use vcrun2008 instead" ; w_call vcrun2008 ;; - wsh56|wsh56jb|wsh56vb) w_warn "Calling wsh56 is deprecated, please use wsh57 instead" ; w_call wsh57 ;; + wsh56|wsh56js|wsh56vb) w_warn "Calling wsh56 is deprecated, please use wsh57 instead" ; w_call wsh57 ;; # See https://github.com/Winetricks/winetricks/issues/747 xact_jun2010) w_warn "Calling xact_jun2010 is deprecated, please use xact instead" ; w_call xact ;; xlive) w_warn "Calling xlive is deprecated, please use gfw instead" ; w_call gfw ;; @@ -21024,8 +22845,7 @@ execute_command() esac } -if ! test "$WINETRICKS_LIB" -then +if ! test "$WINETRICKS_LIB"; then # If user opted out, save that preference now. winetricks_stats_save @@ -21065,8 +22885,7 @@ then winetricks_detect_gui winetricks_detect_sudo test -z "$WINETRICKS_ISO_MOUNT" && winetricks_detect_iso_mount - while true - do + while true; do case $WINETRICKS_CURMENU in main) verbs=$(winetricks_mainmenu) ;; prefix) @@ -21101,6 +22920,7 @@ then # the GUI, this may have an "arch=* " prefix _W_arch=$(echo "$verbs" | grep -o 'arch=.*' | cut -d' ' -f1) _W_prefix=$(echo "$verbs" | grep -o 'prefix=.*') + _W_prefix_name="${_W_prefix#*=}" if [ -n "$_W_arch" ]; then execute_command "$_W_arch" fi @@ -21108,8 +22928,7 @@ then # after picking a prefix, want to land in main. WINETRICKS_CURMENU=main ;; *) - for verb in $verbs - do + for verb in $verbs; do execute_command "$verb" done diff --git a/hardware/emulator/wine/pspec.xml b/hardware/emulator/wine/pspec.xml index 89615d256c..52c0b67e9b 100755 --- a/hardware/emulator/wine/pspec.xml +++ b/hardware/emulator/wine/pspec.xml @@ -12,7 +12,7 @@ app:console WINE Is Not An Emulator, which lets you run Microsoft Windows applications Wine allows running Windows 3.*, Windows 95/98 and Windows NT programs on a i386 (or compatible) machine running X11. It is still alpha level code; don't expect everything to work. - https://dl.winehq.org/wine/source/4.x/wine-4.17.tar.xz + https://dl.winehq.org/wine/source/5.x/wine-5.9.tar.xz mit-kerberos lcms2-devel @@ -275,6 +275,13 @@ + + 2020-06-03 + 5.9 + Version bump. + İdris Kalp + idriskalp@gmail.com + 2019-09-30 4.17