Commit 333cc25a authored by Vitaly Lipatov's avatar Vitaly Lipatov

just import winetricks-20191224.tar with rpmgs script

parent 2d1fd8a7
......@@ -3,7 +3,7 @@ os:
- linux
- osx
sudo: required
dist: trusty
dist: bionic
# Note: needed by winetricks-test, which not yet supported in TravisCI
......@@ -21,8 +21,6 @@ addons:
# for checkbashisms
- devscripts
# Note: if statements cannot go across multiple lines. Combine into one, or move to a shell script!
# Ubuntu notes:
# * ShellCheck is already installed in TravisCI
# * bashate is not available on Trusty and we need to install it manually
......@@ -52,12 +50,23 @@ addons:
# If the script fails, install pip and use it to install bashate
before_install:
- time sh ./misc/travis-install-bashate-deb.sh || time sh ./misc/travis-install-bashate-pip.sh
# "brew update" (or auto-update when installing) takes long time
# checkbashisms and shellcheck can be installed without this
# So installing with "HOMEBREW_NO_AUTO_UPDATE=1" considerably reduces
# job time on macOS
# If it fails retry with auto-update
- if [[ "$TRAVIS_OS_NAME" == "osx" ]] ; then time env HOMEBREW_NO_AUTO_UPDATE=1 brew install checkbashisms shellcheck || time brew install checkbashisms shellcheck ; fi
# "brew update" (or auto-update when installing) takes a long time,
# but checkbashisms and shellcheck can (usually) be installed without this
# So try installing with "HOMEBREW_NO_AUTO_UPDATE=1", which considerably reduces job time on macOS
# If it fails retry each individually with auto-update enabled
- |
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
for pkg in checkbashisms shellcheck yq; do
if HOMEBREW_NO_AUTO_UPDATE=1 brew install "$pkg"; then
# everything worked, nothing more to do:
:
else
# Allow failure, since homebrew can be flaky (the tests will still run on linux).
time brew install "$pkg" || true
fi
done
fi
# Note if testing on a branch, you can replace this with your desired command, e.g.,:
# script: time sh ./src/winetricks -q comctl32
......@@ -73,9 +82,6 @@ script:
# shell-checks is quick and works, no display or compiles needed
- time sh ./tests/shell-checks
# Also check for trailing whitespace. Not doing in shell-checks because it depends on a clean tree (uses git diff):
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then time sh ./tests/whitespace-check; fi
# Keep updates working
- time sh ./tests/self-update-test
......
......@@ -201,10 +201,10 @@ Note that the file prefix (icecat.verb) and command name (icecat) must match. Al
The tests need `bashate`, `checkbashisms`, and `shellcheck>=0.4.4` installed.
Makefile supports a few test targets:
* check - runs './tests/winetricks-tests quick' (without first clearing $WINETRICKS_CACHE)
* shell-checks - runs './tests/shell-checks'
* test - runs './tests/winetricks-tests full' (and clears $WINETRICKS_CACHE first)
* xvfb-check - runs './tests/winetricks-tests xvfb-check' (without first clearing $WINETRICKS_CACHE first)
* `check` - runs './tests/winetricks-tests quick' (without first clearing $WINETRICKS_CACHE)
* `shell-checks` - runs './tests/shell-checks'
* `test` - runs './tests/winetricks-tests full' (and clears $WINETRICKS_CACHE first)
* `xvfb-check` - runs './tests/winetricks-tests xvfb-check' (without first clearing $WINETRICKS_CACHE first)
# Support
* Winetricks is maintained by Austin English <austinenglish@gmail.com>.
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
===== apps =====
3m_library 3M Cloud Library (3M Company, 2015) [downloadable]
7zip 7-Zip 19.00 (Igor Pavlov, 2019) [downloadable]
......@@ -19,7 +18,6 @@ foobar2000 foobar2000 v1.4 (Peter Pawlowski, 2018)
hhw HTML Help Workshop (Microsoft, 2000) [downloadable]
iceweasel GNU Icecat 31.7.0 (GNU Foundation, 2015) [downloadable]
irfanview Irfanview (Irfan Skiljan, 2016) [downloadable]
kde KDE on Windows (various, 2013) [downloadable]
kindle Amazon Kindle (Amazon, 2017) [downloadable]
kobo Kobo e-book reader (Kobo, 2011) [downloadable]
mingw Minimalist GNU for Windows, including GCC for Windows (GNU, 2013) [downloadable]
......@@ -30,7 +28,7 @@ mt4 Meta Trader 4 (, 2005) [downloadable]
njcwp_trial NJStar Chinese Word Processor trial (NJStar, 2015) [downloadable]
njjwp_trial NJStar Japanese Word Processor trial (NJStar, 2009) [downloadable]
nook Nook for PC (e-book reader) (Barnes & Noble, 2011) [downloadable]
npp Notepad++ (Don Ho, 2015) [downloadable]
npp Notepad++ (Don Ho, 2019) [downloadable]
office2003pro Microsoft Office 2003 Professional (Microsoft, 2002)
office2007pro Microsoft Office 2007 Professional (Microsoft, 2006)
office2013pro Microsoft Office 2013 Professional (Microsoft, 2013) [downloadable]
......@@ -119,7 +117,12 @@ d9vk012 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux
d9vk013f Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.13f) (Joshua Ashton, 2019) [downloadable]
d9vk013 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.13) (Joshua Ashton, 2019) [downloadable]
d9vk020 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.20) (Joshua Ashton, 2019) [downloadable]
d9vk021 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.21) (Joshua Ashton, 2019) [downloadable]
d9vk022 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.22) (Joshua Ashton, 2019) [downloadable]
d9vk030 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.30) (Joshua Ashton, 2019) [downloadable]
d9vk040 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.40.1) (Joshua Ashton, 2019) [downloadable]
d9vk_master Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (master) (Joshua Ashton, 2019) [downloadable]
d9vk Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (latest) (Joshua Ashton, 2019) [downloadable]
dbghelp MS dbghelp (Microsoft, 2008) [downloadable]
devenum MS devenum.dll from DirectX user redistributable (Microsoft, 2010) [downloadable]
dinput8 MS DirectInput 8 from DirectX user redistributable (Microsoft, 2010) [downloadable]
......@@ -201,6 +204,13 @@ dxvk131 Vulkan-based D3D10/D3D11 implementation for Linux / Win
dxvk132 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.2) (Philip Rebohle, 2017) [downloadable]
dxvk133 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.3) (Philip Rebohle, 2017) [downloadable]
dxvk134 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.4) (Philip Rebohle, 2017) [downloadable]
dxvk140 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4) (Philip Rebohle, 2017) [downloadable]
dxvk141 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.1) (Philip Rebohle, 2017) [downloadable]
dxvk142 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.2) (Philip Rebohle, 2017) [downloadable]
dxvk143 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.3) (Philip Rebohle, 2017) [downloadable]
dxvk144 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.4) (Philip Rebohle, 2017) [downloadable]
dxvk145 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.5) (Philip Rebohle, 2017) [downloadable]
dxvk146 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.6) (Philip Rebohle, 2017) [downloadable]
dxvk Vulkan-based D3D10/D3D11 implementation for Linux / Wine (latest) (Philip Rebohle, 2017) [downloadable]
esent MS Extensible Storage Engine (Microsoft, 2011) [downloadable]
faudio1901 FAudio (xaudio reimplementation, with xna support) builds for win32 (19.01) (Kron4ek, 2019) [downloadable]
......@@ -216,6 +226,8 @@ filever Microsoft's filever, for dumping file version info (Mic
flash Flash Player 29 (Adobe, 2018) [downloadable]
galliumnine02 Gallium Nine Standalone (v0.2) (Gallium Nine Team, 2019) [downloadable]
galliumnine03 Gallium Nine Standalone (v0.3) (Gallium Nine Team, 2019) [downloadable]
galliumnine04 Gallium Nine Standalone (v0.4) (Gallium Nine Team, 2019) [downloadable]
galliumnine05 Gallium Nine Standalone (v0.5) (Gallium Nine Team, 2019) [downloadable]
galliumnine Gallium Nine Standalone (latest) (Gallium Nine Team, 2019) [downloadable]
gdiplus MS GDI+ (Microsoft, 2011) [downloadable]
gdiplus_winxp MS GDI+ (Microsoft, 2004)
......@@ -253,6 +265,7 @@ msmask MS Masked Edit Control (Microsoft, 2009) [downloadable]
mspatcha MS mspatcha (Microsoft, 2004) [downloadable]
msscript MS Windows Script Control (Microsoft, 2004) [downloadable]
msvcirt Visual C++ 6 SP4 msvcirt library; part of vcrun6 (Microsoft, 2000) [downloadable]
msvcrt40 fixme (Microsoft, 2011) [downloadable]
msxml3 MS XML Core Services 3.0 (Microsoft, 2005) [downloadable]
msxml4 MS XML Core Services 4.0 (Microsoft, 2009) [downloadable]
msxml6 MS XML Core Services 6.0 sp1 (Microsoft, 2007) [downloadable]
......@@ -462,8 +475,8 @@ alldlls=builtin Override most common DLLs to builtin
alldlls=default Remove all DLL overrides
ao=disabled Disable AlwaysOffscreen (default)
ao=enabled Enable AlwaysOffscreen
autostart_winedbg=disable Prevent winedbg from launching when an unhandled exception occurs
autostart_winedbg=enable Automatically launch winedbg when an unhandled exception occurs (default)
autostart_winedbg=disabled Prevent winedbg from launching when an unhandled exception occurs
autostart_winedbg=enabled Automatically launch winedbg when an unhandled exception occurs (default)
bad Fake verb that always returns false
cfc=disable Disable CheckFloatConstants (default)
cfc=enabled Enable CheckFloatConstants
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
3m_library 3M Cloud Library (3M Company, 2015) [downloadable]
7zip 7-Zip 19.00 (Igor Pavlov, 2019) [downloadable]
abiword AbiWord 2.8.6 (AbiSource, 2010) [downloadable]
......@@ -18,7 +17,6 @@ foobar2000 foobar2000 v1.4 (Peter Pawlowski, 2018)
hhw HTML Help Workshop (Microsoft, 2000) [downloadable]
iceweasel GNU Icecat 31.7.0 (GNU Foundation, 2015) [downloadable]
irfanview Irfanview (Irfan Skiljan, 2016) [downloadable]
kde KDE on Windows (various, 2013) [downloadable]
kindle Amazon Kindle (Amazon, 2017) [downloadable]
kobo Kobo e-book reader (Kobo, 2011) [downloadable]
mingw Minimalist GNU for Windows, including GCC for Windows (GNU, 2013) [downloadable]
......@@ -29,7 +27,7 @@ mt4 Meta Trader 4 (, 2005) [downloadable]
njcwp_trial NJStar Chinese Word Processor trial (NJStar, 2015) [downloadable]
njjwp_trial NJStar Japanese Word Processor trial (NJStar, 2009) [downloadable]
nook Nook for PC (e-book reader) (Barnes & Noble, 2011) [downloadable]
npp Notepad++ (Don Ho, 2015) [downloadable]
npp Notepad++ (Don Ho, 2019) [downloadable]
office2003pro Microsoft Office 2003 Professional (Microsoft, 2002)
office2007pro Microsoft Office 2007 Professional (Microsoft, 2006)
office2013pro Microsoft Office 2013 Professional (Microsoft, 2013) [downloadable]
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
3dmark03 3D Mark 03 (Futuremark, 2003)
3dmark05 3D Mark 05 (Futuremark, 2005) [downloadable]
3dmark06 3D Mark 06 (Futuremark, 2006)
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
adobeair Adobe AIR (Adobe, 2018) [downloadable]
allcodecs All codecs (dirac, ffdshow, icodecs, cinepak, l3codecx, xvid) except wmp (various, 1995-2009) [downloadable]
amstream MS amstream.dll (Microsoft, 2011) [downloadable]
......@@ -50,7 +49,12 @@ d9vk012 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux
d9vk013f Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.13f) (Joshua Ashton, 2019) [downloadable]
d9vk013 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.13) (Joshua Ashton, 2019) [downloadable]
d9vk020 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.20) (Joshua Ashton, 2019) [downloadable]
d9vk021 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.21) (Joshua Ashton, 2019) [downloadable]
d9vk022 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.22) (Joshua Ashton, 2019) [downloadable]
d9vk030 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.30) (Joshua Ashton, 2019) [downloadable]
d9vk040 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (0.40.1) (Joshua Ashton, 2019) [downloadable]
d9vk_master Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (master) (Joshua Ashton, 2019) [downloadable]
d9vk Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (latest) (Joshua Ashton, 2019) [downloadable]
dbghelp MS dbghelp (Microsoft, 2008) [downloadable]
devenum MS devenum.dll from DirectX user redistributable (Microsoft, 2010) [downloadable]
dinput8 MS DirectInput 8 from DirectX user redistributable (Microsoft, 2010) [downloadable]
......@@ -132,6 +136,13 @@ dxvk131 Vulkan-based D3D10/D3D11 implementation for Linux / Win
dxvk132 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.2) (Philip Rebohle, 2017) [downloadable]
dxvk133 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.3) (Philip Rebohle, 2017) [downloadable]
dxvk134 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.3.4) (Philip Rebohle, 2017) [downloadable]
dxvk140 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4) (Philip Rebohle, 2017) [downloadable]
dxvk141 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.1) (Philip Rebohle, 2017) [downloadable]
dxvk142 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.2) (Philip Rebohle, 2017) [downloadable]
dxvk143 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.3) (Philip Rebohle, 2017) [downloadable]
dxvk144 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.4) (Philip Rebohle, 2017) [downloadable]
dxvk145 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.5) (Philip Rebohle, 2017) [downloadable]
dxvk146 Vulkan-based D3D10/D3D11 implementation for Linux / Wine (1.4.6) (Philip Rebohle, 2017) [downloadable]
dxvk Vulkan-based D3D10/D3D11 implementation for Linux / Wine (latest) (Philip Rebohle, 2017) [downloadable]
esent MS Extensible Storage Engine (Microsoft, 2011) [downloadable]
faudio1901 FAudio (xaudio reimplementation, with xna support) builds for win32 (19.01) (Kron4ek, 2019) [downloadable]
......@@ -147,6 +158,8 @@ filever Microsoft's filever, for dumping file version info (Mic
flash Flash Player 29 (Adobe, 2018) [downloadable]
galliumnine02 Gallium Nine Standalone (v0.2) (Gallium Nine Team, 2019) [downloadable]
galliumnine03 Gallium Nine Standalone (v0.3) (Gallium Nine Team, 2019) [downloadable]
galliumnine04 Gallium Nine Standalone (v0.4) (Gallium Nine Team, 2019) [downloadable]
galliumnine05 Gallium Nine Standalone (v0.5) (Gallium Nine Team, 2019) [downloadable]
galliumnine Gallium Nine Standalone (latest) (Gallium Nine Team, 2019) [downloadable]
gdiplus MS GDI+ (Microsoft, 2011) [downloadable]
gdiplus_winxp MS GDI+ (Microsoft, 2004)
......@@ -184,6 +197,7 @@ msmask MS Masked Edit Control (Microsoft, 2009) [downloadable]
mspatcha MS mspatcha (Microsoft, 2004) [downloadable]
msscript MS Windows Script Control (Microsoft, 2004) [downloadable]
msvcirt Visual C++ 6 SP4 msvcirt library; part of vcrun6 (Microsoft, 2000) [downloadable]
msvcrt40 fixme (Microsoft, 2011) [downloadable]
msxml3 MS XML Core Services 3.0 (Microsoft, 2005) [downloadable]
msxml4 MS XML Core Services 4.0 (Microsoft, 2009) [downloadable]
msxml6 MS XML Core Services 6.0 sp1 (Microsoft, 2007) [downloadable]
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
3dmark05
3dmark2000
3dmark2001
......@@ -80,12 +79,17 @@ d3dx9_41
d3dx9_42
d3dx9_43
d3dxof
d9vk
d9vk010
d9vk011
d9vk012
d9vk013
d9vk013f
d9vk020
d9vk021
d9vk022
d9vk030
d9vk040
d9vk_master
dbghelp
devenum
......@@ -172,6 +176,13 @@ dxvk131
dxvk132
dxvk133
dxvk134
dxvk140
dxvk141
dxvk142
dxvk143
dxvk144
dxvk145
dxvk146
emu8086
esent
eufonts
......@@ -194,6 +205,8 @@ fontxplorer
galliumnine
galliumnine02
galliumnine03
galliumnine04
galliumnine05
gdiplus
georgia
gfw
......@@ -216,7 +229,6 @@ irfanview
itircl
itss
jet40
kde
kindle
kobo
l3codecx
......@@ -249,6 +261,7 @@ mspaint
mspatcha
msscript
msvcirt
msvcrt40
msxml3
msxml4
msxml6
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
acreedbro Assassin's Creed Brotherhood (Ubisoft, 2011)
algodoo_demo Algodoo Demo (Algoryx, 2009) [downloadable]
alienswarm_steam Alien Swarm (Steam) (Valve, 2010) [downloadable]
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
3dmark03
3dmark06
amnesia_tdd_demo
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
alldlls=builtin Override most common DLLs to builtin
alldlls=default Remove all DLL overrides
ao=disabled Disable AlwaysOffscreen (default)
ao=enabled Enable AlwaysOffscreen
autostart_winedbg=disable Prevent winedbg from launching when an unhandled exception occurs
autostart_winedbg=enable Automatically launch winedbg when an unhandled exception occurs (default)
autostart_winedbg=disabled Prevent winedbg from launching when an unhandled exception occurs
autostart_winedbg=enabled Automatically launch winedbg when an unhandled exception occurs (default)
bad Fake verb that always returns false
cfc=disable Disable CheckFloatConstants (default)
cfc=enabled Enable CheckFloatConstants
......
......@@ -49,7 +49,7 @@ for dir in "${CACHE_DIR}/"* ; do
esac
for file in "${dir}"/* ; do
# Convert the package:
# Convert the package:
echo file="${file}"
echo "dir=$dir, package=$package, file=$file"
sha1_file="$(sha1sum "${file}" | awk '{print $1}')"
......
......@@ -41,13 +41,12 @@ fi
datadir="${TOP}/output/links.d"
mkdir -p "${datadir}"
WINETRICKS_SOURCEFORGE=https://downloads.sourceforge.net
# ftp.microsoft.com resolves to two different IP addresses, one of which is broken
ftp_microsoft_com=64.4.17.176
w_download() {
# shellcheck disable=SC2016
url="$(echo "$1" | sed -e 's,$ftp_microsoft_com,'$ftp_microsoft_com',;s,$WINETRICKS_SOURCEFORGE,'$WINETRICKS_SOURCEFORGE',;s, ,%20,g')"
url="$(echo "$1" | sed -e 's,$ftp_microsoft_com,'$ftp_microsoft_com',;s, ,%20,g')"
urlkey="$(echo "$url" | tr / _)"
echo "$url" > "${datadir}/${urlkey}.url"
}
......@@ -60,7 +59,7 @@ extract_all() {
# https://github.com/koalaman/shellcheck/issues/861
# shellcheck disable=SC1003
grep '^ *w_download ' "${shwinetricks}" | grep -E 'ftp|http|WINETRICKS_SOURCEFORGE' | grep -v "w_linkcheck_ignore=1" | sed 's/^ *//' | tr -d '\\' > url-script-fragment.tmp
grep '^ *w_download ' "${shwinetricks}" | grep -E 'ftp|http' | grep -v "w_linkcheck_ignore=1" | sed 's/^ *//' | tr -d '\\' > url-script-fragment.tmp
# shellcheck disable=SC1091
. ./url-script-fragment.tmp
......@@ -151,8 +150,7 @@ esac
# cleanup
rm -rf "$datadir" url-script-fragment.tmp
echo "Test over, $errors failures, $passes successes."
if test $errors = 0 && test $passes -gt 0
then
if test $errors = 0 && test $passes -gt 0; then
echo PASS
exit 0
else
......
......@@ -12,8 +12,7 @@
set -e
if ! test "$1"
then
if ! test "$1"; then
echo "Please specify a bunch of wineprefixes to grub through"
echo "For instance, ~/winetrickstest-prefixes/dotnet20sp{,1,2}"
exit 1
......@@ -21,7 +20,8 @@ fi
# Generate list of all filenames (except those which look ephemeral)
rm -f /tmp/allfiles.txt
for dir ; do
for dir; do
(
cd "$dir/drive_c"
# FIXME: don't assume there are no ='s in filenames, e.g. rewrite in perl
......@@ -34,7 +34,7 @@ done
sort < /tmp/allfiles.txt | uniq -c | awk '$1 == 1 {print $2}' > /tmp/uniqfiles.txt
# Associate them with the verb they came from
for dir ; do
for dir; do
(
cd "$dir"
# Undo the space-to-= transformation, too
......
......@@ -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=20190912
WINETRICKS_VERSION=20191224
# This is a UTF-8 file
# You should see an o with two dots over it here [ö]
......@@ -67,7 +67,7 @@ WINETRICKS_VERSION=20190912
# Copyright (C) 2011 Trevor Johnson
# Copyright (C) 2011 Franco Junio
# Copyright (C) 2011 Craig Sanders
# Copyright (C) 2011 Matthew Bauer <mjbauer95>
# Copyright (C) 2011 Matthew Bauer <mjbauer95!gmail.com>
# Copyright (C) 2011 Giuseppe Dia
# Copyright (C) 2011 Łukasz Wojniłowicz
# Copyright (C) 2011 Matthew Bozarth
......@@ -300,17 +300,138 @@ w_killall()
kill -s KILL $(pgrep $1)
}
# Some packages don't support win32, die with an appropriate message
# Returns 64 (for tests/winetricks-test)
w_package_unsupported_win32()
# Warn user if package is broken (on all arches) in the current wine version. Bug report required.
w_package_broken()
{
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
# 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
}
# Warn user if package is broken. Optionally provide a link to the bug report.
w_detect_mingw()
{
# mingw builds have some (not yet all) .dll files in ${WINE}/../lib{,64}/wine
# non-mingw have exclusively .dll.so files
#
# Unfortunately, installed wine and wine run from source dir have different layouts:
# Source:
if test -f "$(dirname "${WINE}")/Makefile.in"; then
if ls "$(dirname "${WINE}")/dlls"/*/*.dll >/dev/null 2>&1; then
wine_mingw=1
else
wine_no_mingw=1
fi
# Installed (checked against the binaries of https://dl.winehq.org/):
elif ls "$(dirname "${WINE}")"/../lib/wine/*.dll >/dev/null 2>&1; then
wine_mingw=1
elif test ! -d "$(dirname "${WINE}")"/../lib/wine; then
w_warn "Unable to detect wine dlls, please file an issue on Github"
else
wine_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 "$wine_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 "$wine_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:
......@@ -325,6 +446,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)
......@@ -345,7 +477,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
......@@ -675,7 +807,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.
......@@ -721,11 +853,11 @@ w_expand_env()
# Get the latest tagged release from github.com API
w_get_github_latest_release()
{
# $1 - github organization
# $2 - github repository
# 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/$1/$2/releases/latest" "" "release.json" >/dev/null 2>&1
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
# aria2c condenses the json (https://github.com/aria2/aria2/issues/1389)
# but curl/wget don't, so handle both cases:
......@@ -738,6 +870,26 @@ w_get_github_latest_release()
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
w_get_sha256sum()
{
......@@ -888,44 +1040,45 @@ w_dotnet_verify()
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..
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"
# FIXME: The logfile may be useful somewhere (or at least print the location)
# 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
......@@ -1557,8 +1710,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}:\\
......@@ -1602,11 +1754,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
......@@ -1650,8 +1800,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
......@@ -1836,8 +1985,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
......@@ -2259,8 +2407,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
......@@ -2399,7 +2546,7 @@ _EOF_
csdversion_hex=dword:00000200
"$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f
;;
win7)
win7|default)
csdversion="Service Pack 1"
currentbuildnumber="7601"
currentversion="6.1"
......@@ -2460,8 +2607,8 @@ _EOF_
w_unset_winver()
{
# FIXME: update when wine bumps default version
w_set_winver win7
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
......@@ -2502,7 +2649,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)"
......@@ -2525,8 +2677,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
......@@ -2615,12 +2766,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,
......@@ -2668,8 +2834,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
......@@ -2733,14 +2898,13 @@ w_do_call()
*)
# 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
;;
apps-0|benchmarks-0|games-0) winetricks_set_wineprefix "$cmd";;
*) winetricks_set_wineprefix;;
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
......@@ -2750,8 +2914,7 @@ 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
......@@ -3328,8 +3491,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
......@@ -3366,8 +3528,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
......@@ -3725,8 +3886,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='?'
......@@ -3940,8 +4100,7 @@ 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='?'
......@@ -4073,8 +4232,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"
......@@ -4093,8 +4251,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
(
......@@ -4165,8 +4322,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
(
......@@ -4346,8 +4502,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
......@@ -4373,12 +4528,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
......@@ -4428,15 +4581,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
......@@ -4497,10 +4648,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
......@@ -4635,8 +4784,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/ .*//')
......@@ -4685,8 +4833,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
......@@ -4722,6 +4869,7 @@ 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()
......@@ -4834,10 +4982,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}:
......@@ -4968,7 +5115,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
......@@ -5012,8 +5159,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
......@@ -5033,8 +5179,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_sha256sum_prog
winetricks_get_platform
......@@ -5092,6 +5236,29 @@ winetricks_init()
W_TASKSET=""
fi
# Whether to automate installs (0=no, 1=yes)
winetricks_set_unattended ${W_OPT_UNATTENDED:-0}
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)
......@@ -5124,8 +5291,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)
......@@ -5156,16 +5323,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}"
......@@ -5184,11 +5341,11 @@ winetricks_init()
w_warn "Your version of wine $_wine_version_stripped is no longer supported upstream. You should upgrade to 4.x"
fi
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()
......@@ -5261,7 +5418,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
......@@ -5302,7 +5459,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 ;;
......@@ -5331,8 +5488,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)
......@@ -5342,11 +5498,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
......@@ -5416,16 +5578,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
......@@ -5590,7 +5750,9 @@ 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
}
......@@ -5709,9 +5871,9 @@ 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_unzip "$W_TMP" "$W_TMP"/comctl32.exe
......@@ -5825,14 +5987,12 @@ load_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
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
......@@ -5861,14 +6021,12 @@ load_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
......@@ -5939,14 +6097,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
......@@ -6274,14 +6430,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
......@@ -6306,14 +6460,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
......@@ -6337,14 +6489,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
......@@ -6371,14 +6521,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
......@@ -6602,8 +6750,7 @@ 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"
......@@ -6694,10 +6841,9 @@ helper_dxvk_d9vk()
_W_dll_overrides="$(echo "${4}" | sed 's/,/ /g')"
_W_supported_overrides="dxgi d3d9 d3d10 d3d11"
_W_valid_overrides_regex="$(echo " ${_W_supported_overrides}" | sed 's/ /\\|/g')"
_W_invalid_overrides="$(echo "${_W_dll_overrides}" | sed "s/ ${_W_valid_overrides_regex}//g")"
_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}"
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 d3d10core/')"
......@@ -6756,7 +6902,7 @@ helper_dxvk_d9vk()
unset _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_valid_overrides_regex
_W_repository _W_supported_overrides
}
......@@ -6882,6 +7028,110 @@ load_d9vk020()
helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,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,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,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,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,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,d3d10,d3d11"
unset _W_d9vk_version
}
#----------------------------------------------------------------
......@@ -7442,8 +7692,7 @@ load_dxvk130()
{
# https://github.com/doitsujin/dxvk
w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3/dxvk-1.3.tar.gz" d15fac6503ea614986237052d554d7cbd2dbf5f3486feb6217e64bae83cfc2cf
# FIXME: The current Wine release (4.15) does not include the latest Vulkan 1.1.113 headers.
helper_dxvk_d9vk "$file1" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10,d3d11"
}
w_metadata dxvk131 dlls \
......@@ -7462,8 +7711,7 @@ 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
# FIXME: The current Wine release (4.15) does not include the latest Vulkan 1.1.113 headers.
helper_dxvk_d9vk "$file1" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10,d3d11"
}
w_metadata dxvk132 dlls \
......@@ -7482,8 +7730,7 @@ 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
# FIXME: The current Wine release (4.15) does not include the latest Vulkan 1.1.113 headers.
helper_dxvk_d9vk "$file1" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10,d3d11"
}
w_metadata dxvk133 dlls \
......@@ -7502,8 +7749,7 @@ 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
# FIXME: The current Wine release (4.15) does not include the latest Vulkan 1.1.113 headers.
helper_dxvk_d9vk "$file1" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,d3d10,d3d11"
}
w_metadata dxvk134 dlls \
......@@ -7522,8 +7768,142 @@ 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
# FIXME: The current Wine release (4.15) does not include the latest Vulkan 1.1.113 headers.
helper_dxvk_d9vk "$file1" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.20" "1.1.113" "dxgi,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,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,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,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,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,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,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,d3d10,d3d11"
}
......@@ -7546,8 +7926,7 @@ load_dxvk()
_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"
# FIXME: The current Wine release (4.12.1) does not include the latest Vulkan 1.1.113 headers.
helper_dxvk_d9vk "dxvk-${_W_dxvk_version}.tar.gz" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "dxvk-${_W_dxvk_version}.tar.gz" "4.20" "1.1.113" "dxgi,d3d10,d3d11"
unset _W_dxvk_version
}
......@@ -7783,7 +8162,7 @@ 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
WINEDLLOVERRIDES="regsvcs.exe=b" w_ahk_do "
......@@ -7838,7 +8217,7 @@ 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
WINEDLLOVERRIDES="regsvcs.exe=b" w_ahk_do "
......@@ -7934,7 +8313,7 @@ load_dotnet20()
*) w_die "exit status $status - $W_PACKAGE installation failed" ;;
esac
w_unset_winver
w_set_winver 'default'
# We can't stop installing dotnet20 in win2k mode until Wine supports
# reparse/junction points
......@@ -8045,8 +8424,17 @@ 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
......@@ -8086,7 +8474,7 @@ 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"
......@@ -8114,9 +8502,17 @@ load_dotnet20sp2()
{
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
w_warn "Setting windows version so installer works"
w_set_winver winxp
......@@ -8151,7 +8547,7 @@ load_dotnet20sp2()
rm -f "$W_SYSTEM32_DLLS"/msvc?80.dll
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"
}
......@@ -8207,9 +8603,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
......@@ -8219,7 +8613,17 @@ 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."
......@@ -8250,6 +8654,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
......@@ -8285,7 +8695,7 @@ load_dotnet30sp1()
*) w_die "exit status $status - $W_PACKAGE installation failed" ;;
esac
w_unset_winver
w_set_winver 'default'
# Doesn't install any ngen.exe
# W_NGEN_CMD=""
......@@ -8443,7 +8853,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()
......@@ -9318,6 +9728,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" \
......@@ -9516,7 +9958,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
......@@ -9561,7 +10003,7 @@ 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
}
......@@ -9690,8 +10132,7 @@ _EOF_
# Note, this leaves a dangling explorer window.
# Wait for it to appear and kill it
while ! inode_pid=$(pgrep -f "explorer.exe.*Indeo")
do
while ! inode_pid=$(pgrep -f "explorer.exe.*Indeo"); do
sleep 1
done
kill -HUP "$inode_pid"
......@@ -9857,7 +10298,7 @@ load_ie8_kb2936068()
*) w_die "$W_PACKAGE installation failed"
esac
w_unset_winver
w_set_winver 'default'
}
#----------------------------------------------------------------
......@@ -9908,7 +10349,7 @@ load_mdac27()
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_set_winver 'default'
}
#----------------------------------------------------------------
......@@ -9923,18 +10364,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_set_winver 'default'
}
#----------------------------------------------------------------
......@@ -9958,8 +10394,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"
......@@ -9968,12 +10403,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"
......@@ -10053,13 +10486,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
}
#----------------------------------------------------------------
......@@ -10297,6 +10730,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" \
......@@ -10582,7 +11033,7 @@ 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
......@@ -10883,7 +11334,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"
......@@ -11028,7 +11480,7 @@ load_speechsdk()
w_override_dlls native sapi
w_unset_winver
w_set_winver 'default'
}
#----------------------------------------------------------------
......@@ -11408,27 +11860,8 @@ load_vcrun2005()
w_try "$WINE" "$file1" $W_UNATTENDED_SLASH_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_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/VCREDI~2.EXE"
w_try_cabextract --directory="$W_TMP" "$W_TMP/vcredist.msi"
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"
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_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_UNATTENDED_SLASH_Q
fi
}
......@@ -11632,7 +12065,7 @@ 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
......@@ -11696,7 +12129,7 @@ load_vcrun2017()
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
......@@ -11894,7 +12327,7 @@ load_windowscodecs()
w_try "$WINE" "$EXE" /passive
fi
w_unset_winver
w_set_winver 'default'
}
#----------------------------------------------------------------
......@@ -11981,7 +12414,8 @@ 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
......@@ -11991,7 +12425,7 @@ load_wmi()
w_try "$WINE" wmi9x.exe $W_UNATTENDED_SLASH_S
w_killall "WinMgmt.exe"
w_unset_winver
w_set_winver 'default'
}
#----------------------------------------------------------------
......@@ -12149,14 +12583,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
......@@ -13014,7 +13446,7 @@ w_metadata opensymbol fonts \
publisher="OpenOffice.org" \
year="2017" \
media="download" \
file1="fonts-opensymbol_102.10+LibO6.1.5-3+deb10u3_all.deb" \
file1="fonts-opensymbol_102.10+LibO6.1.5-3+deb10u4_all.deb" \
installed_file1="$W_FONTSDIR_WIN/opens___.ttf"
load_opensymbol()
......@@ -13022,8 +13454,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.10+LibO6.1.5-3+deb10u3_all.deb" fb302a58166bf3fa29efee234d6659361213e5f36a7abfd948fa7288c5f7fb30
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
......@@ -13192,8 +13623,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
......@@ -13738,13 +14168,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
......@@ -13756,8 +14184,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
......@@ -13804,16 +14231,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
w_set_winver 'default'
# the ie6 we use these days lacks pngfilt, so grab that
w_call pngfilt
w_call msls31
}
#----------------------------------------------------------------
......@@ -13837,7 +14265,7 @@ load_ie7()
fi
# Change the override to the native so we are sure we use and register them
w_override_dlls native,builtin ieproxy 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
......@@ -13849,8 +14277,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
......@@ -13906,8 +14333,7 @@ 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
......@@ -13957,7 +14383,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
......@@ -13969,8 +14395,7 @@ load_ie8()
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 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
done
......@@ -14015,8 +14440,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
......@@ -14048,30 +14472,7 @@ _EOF_
;;
esac
w_unset_winver
}
#----------------------------------------------------------------
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 https://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}"
w_set_winver 'default'
}
#----------------------------------------------------------------
......@@ -14138,7 +14539,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'"
......@@ -14207,7 +14608,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}
}
......@@ -14375,14 +14776,14 @@ 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
}
......@@ -15340,7 +15741,8 @@ 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
w_ahk_do "
......@@ -15463,7 +15865,7 @@ load_wmp9()
load_wm9codecs
w_unset_winver
w_set_winver 'default'
}
#----------------------------------------------------------------
......@@ -15480,6 +15882,8 @@ load_wmp10()
{
w_package_unsupported_win64
w_package_broken "https://bugs.winehq.org/show_bug.cgi?id=48347" 5.0
# FIXME: what versions of Windows are really bundled with wmp10?
w_skip_windows wmp10 && return
......@@ -15507,7 +15911,7 @@ load_wmp10()
load_wm9codecs
w_unset_winver
w_set_winver 'default'
}
#----------------------------------------------------------------
......@@ -17522,8 +17926,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
......@@ -19474,8 +19877,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
......@@ -20959,16 +21361,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
......@@ -21143,8 +21546,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"
......@@ -21169,7 +21571,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
}
#----------------------------------------------------------------
......@@ -21200,8 +21613,8 @@ load_remove_mono()
# 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
for uuid in $mono_uuid;
do "${WINE_ARCH}" uninstaller --remove "$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
......@@ -21592,8 +22005,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
......@@ -21636,8 +22048,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
......@@ -21735,8 +22146,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
......@@ -21776,8 +22186,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)
......@@ -21819,8 +22228,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
......
.\" -*- nroff -*-
.TH WINETRICKS 1 "September 2019" "Winetricks 20190912" "Wine Package Manager"
.TH WINETRICKS 1 "December 2019" "Winetricks 20191224" "Wine Package Manager"
.SH NAME
winetricks \- manage virtual Windows environments using Wine
.SH SYNOPSIS
......
......@@ -12,9 +12,9 @@
set -e
set -x
temp="$(mktemp -d)"
trap 'rm -fr "$temp"' EXIT
###################################################################################################
# Helpers
###################################################################################################
w_die() {
echo "$* failed"
......@@ -29,92 +29,205 @@ w_try() {
fi
}
bashate="$(command -v bashate)"
checkbashisms="$(command -v checkbashisms)"
shellcheck="$(command -v shellcheck)"
"$bashate" --help > /dev/null || w_die "bashate must be installed!"
"$checkbashisms" --help > /dev/null || w_die "checkbashisms must be installed!"
"$shellcheck" --version > /dev/null || w_die "shellcheck must be installed!"
###################################################################################################
# Setup
###################################################################################################
if [ ! -f Makefile ] ; then
w_die "$0 should be run from the top of the source tree"
fi
# Different versions can give different results:
#echo "======================== Begin bashate version info ==========================="
## bashate doesn't have a --version option (as of bashate-0.3.1)
#"$bashate" --version
#echo "======================== End checkbashisms version info ==========================="
temp="$(mktemp -d)"
echo "======================== Begin checkbashisms version info ==========================="
"$checkbashisms" --version
echo "======================== End checkbashisms version info ==========================="
trap 'rm -fr "$temp"' EXIT
echo "======================== Begin shellcheck version info ==========================="
"$shellcheck" --version
echo "======================== End shellcheck version info ==========================="
###################################################################################################
# Test functions
###################################################################################################
# tests using bashate
test_bashate() {
if [ ! -x "$(command -v bashate 2>/dev/null)" ] && [ "$TRAVIS_OS_NAME" = "osx" ]; then
echo "On OSX and bashate not available, skipping."
return
else
bashate="$(command -v bashate)"
#echo "======================== Begin bashate version info ==========================="
"$bashate" --help > /dev/null || w_die "bashate must be installed!"
## bashate doesn't have a --version option (as of bashate-0.3.1)
#"$bashate" --version
#echo "======================== End bashate version info ==========================="
# Can't ignore individual things for now, filed bug:
# https://bugs.launchpad.net/bash8/+bug/1698088
# E006=line length check
# E010=do/while same line (in some embedded perl in winetricks)
# E044=Use [[ for non-POSIX comparisions
echo "Checking ${shellscript} with bashate:"
w_try "$bashate" -i E006,E010,E044 "${shellscript}"
fi
}
# Check if checkbashisms supports `command -v`. If not, warn, or if on travis, patch it:
cat > "${temp}/command.sh" <<_EOF
# tests using checkbashisms
test_checkbashisms() {
if [ ! -x "$(command -v checkbashisms 2>/dev/null)" ] && [ "$TRAVIS_OS_NAME" = "osx" ]; then
echo "On OSX and checkbashisms not available, skipping."
return
else
checkbashisms="$(command -v checkbashisms)"
echo "======================== Begin checkbashisms version info ==========================="
"$checkbashisms" --help > /dev/null || w_die "checkbashisms must be installed!"
"$checkbashisms" --version
echo "======================== End checkbashisms version info ==========================="
# Check if checkbashisms supports `command -v`. If not, warn, or if on travis, patch it:
cat > "${temp}/command.sh" <<_EOF
#!/bin/sh
command -v grep
_EOF
if ! "$checkbashisms" --posix "${temp}/command.sh"; then
echo "Use a sed expression, to add checkbashisms support for 'command -v', based on the patch from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=733511"
echo "Creating a copy of the checkbashisms script, in ${temp}, to workaround this issue"
# /usr/bin/ (or /usr/local/bin on OSX) isn't writable on Travis, so we have to patch it in /tmp and use that:
(
sed -e '/qr'\''command\\s+\-\[\^p\]\\s'\''/ { ' -e 's|\[\^p\]|[^pvV]|' -e 's| \-p>| -p/-v/-V>|' -e '}' "$checkbashisms" > "${temp}/checkbashisms.patched" && \
chmod +x "${temp}/checkbashisms.patched"
)
checkbashisms="${temp}/checkbashisms.patched"
fi
# FIXME: if we add a third, clean this up
# Check if checkbashisms supports `command -v`. If not, warn, or if on travis, patch it:
cat > "${temp}/kill.sh" <<_EOF
if ! "$checkbashisms" --posix "${temp}/command.sh"; then
echo "Use a sed expression, to add checkbashisms support for 'command -v', based on the patch from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=733511"
echo "Creating a copy of the checkbashisms script, in ${temp}, to workaround this issue"
# /usr/bin/ (or /usr/local/bin on OSX) isn't writable on Travis, so we have to patch it in /tmp and use that:
(
sed -e '/qr'\''command\\s+\-\[\^p\]\\s'\''/ { ' -e 's|\[\^p\]|[^pvV]|' -e 's| \-p>| -p/-v/-V>|' -e '}' "$checkbashisms" > "${temp}/checkbashisms.patched" && \
chmod +x "${temp}/checkbashisms.patched"
)
checkbashisms="${temp}/checkbashisms.patched"
else
echo "checkbashisms workaround not needed, using vanilla script"
fi
# FIXME: if we add a third patch, clean this up
# Check if checkbashisms supports `command -v`. If not, warn, or if on travis, patch it:
cat > "${temp}/kill.sh" <<_EOF
#!/bin/sh
sleep 5 & spid="$!"
kill -HUP \$spid
_EOF
if ! "$checkbashisms" --posix "${temp}/kill.sh"; then
echo "Disabling the kill -signal warning"
echo "Creating a copy of the checkbashisms script, in ${temp}, to workaround this issue"
# /usr/bin/ (or /usr/local/bin on OSX) isn't writable on Travis, so we have to patch it in /tmp and use that:
(
sed -e '/bashisms.*kill/d' "$checkbashisms" > "${temp}/checkbashisms.patched.kill" && \
chmod +x "${temp}/checkbashisms.patched.kill"
)
checkbashisms="${temp}/checkbashisms.patched.kill"
fi
if ! "$checkbashisms" --posix "${temp}/kill.sh"; then
echo "Disabling the kill -signal warning"
echo "Creating a copy of the checkbashisms script, in ${temp}, to workaround this issue"
# /usr/bin/ (or /usr/local/bin on OSX) isn't writable on Travis, so we have to patch it in /tmp and use that:
(
sed -e '/bashisms.*kill/d' "$checkbashisms" > "${temp}/checkbashisms.patched.kill" && \
chmod +x "${temp}/checkbashisms.patched.kill"
)
checkbashisms="${temp}/checkbashisms.patched.kill"
fi
echo "Checking ${shellscript} for bashisms:"
w_try "$checkbashisms" --posix "${shellscript}"
fi
}
# Use git ls-files if available, this prevents 'finding' scripts that aren't checked into git.
# E.g., if patching foo fails, then foo.orig would also be 'found'.
# The find fallback is for non git users, e.g., distros packaging winetricks or end users
# running shell-checks from a tarball download.
if [ -d .git ] ; then
files_to_check="$(git ls-files | xargs file | grep -e 'POSIX shell script' | cut -d : -f1)"
else
files_to_check="$(find . -type f -exec file {} \; | grep -e 'POSIX shell script' | cut -d : -f1)"
fi
# check formatting, (no trailing whitespace, no tabs)
test_formatting() {
# check for trailing spaces
# git diff misses some stuff? (2.18.0 / 2.22.0)
#w_try git diff --check --exit-code "${shellscript}"
if grep -n -r '[[:blank:]]$' "${shellscript}"; then
w_die "${shellscript} contains trailing spaces, remove them."
fi
# check for tabs
if grep -n "$(printf '\t')" "${shellscript}"; then
w_die "${shellscript} contains tabs, please use spaces instead."
fi
for shellscript in $files_to_check; do
echo "Checking ${shellscript} for bashisms:"
w_try "$checkbashisms" --posix "${shellscript}"
# make sure `do` isn't on its own line:
if grep -n -w -e ' do$' -e '^do$' "${shellscript}"; then
w_die "Put 'do' on the same line as 'for/while'"
fi
echo "Checking ${shellscript} with shellcheck:"
w_try "$shellcheck" -s sh "${shellscript}"
# make sure `then` isn't on its own line:
if grep -n -w -e ' then$' -e '^then$' "${shellscript}"; then
w_die "Put 'then' on the same line as 'if'"
fi
}
# tests using shellcheck
test_shellcheck() {
if [ ! -x "$(command -v shellcheck 2>/dev/null)" ] && [ "$TRAVIS_OS_NAME" = "osx" ]; then
echo "On OSX and shellcheck not available, skipping."
return
else
shellcheck="$(command -v shellcheck)"
echo "======================== Begin shellcheck version info ==========================="
"$shellcheck" --version > /dev/null || w_die "shellcheck must be installed!"
"$shellcheck" --version
echo "======================== End shellcheck version info ==========================="
echo "Checking ${shellscript} with shellcheck:"
w_try "$shellcheck" -s sh "${shellscript}"
fi
}
# tests for linkcheck
test_linkcheck() {
# Check for uses of variables in w_download when w_linkcheck_ignore isn't set
# Using w_download https://example.com/${file1} breaks src/linkcheck.sh
# FIXME: technically '$' is valid in a URL, if there's actually a URL using it this will need a tweak
if grep "^ *w_download " src/winetricks | grep -E "ftp|http" | grep -v "w_linkcheck_ignore=1" | sed "s/^ *//" | tr -d "\\\\" | cut -d " " -f2 | grep "\\$"; then
w_die "Do not use variables in these URLs, it breaks src/linkcheck.sh"
else
echo "linkcheck checks passed"
fi
}
test_travis_yml() {
if [ ! -x "$(command -v yq 2>/dev/null)" ]; then
echo "warning: yq unavilable, skipping .travis.yml validation"
else
yq="$(command -v yq)"
if [ -n "$yq" ]; then
echo "yq available, validating .travis.yml"
yq . .travis.yml || true
else
echo "warning: yq not available, not validating .travis.yml"
fi
fi
}
###################################################################################################
# Test wrapper
main() {
# Use git ls-files if available, this prevents 'finding' scripts that aren't checked into git.
# E.g., if patching foo fails, then foo.orig would also be 'found'.
# The find fallback is for non git users, e.g., distros packaging winetricks or end users
# running shell-checks from a tarball download.
if [ -d .git ] ; then
files_to_check="$(git ls-files | xargs file | grep -e 'POSIX shell script' | cut -d : -f1)"
else
files_to_check="$(find . -type f -exec file {} \; | grep -e 'POSIX shell script' | cut -d : -f1)"
fi
# Run once tests:
# really, this checks winetricks, to make sure it doesn't break linkcheck.sh:
test_linkcheck
# make sure yq (if present), can validate .travis_yml.
# Available in brew, not ubuntu (without snap), but if .travis_yml is invalid,
# travis won't run anyway. Only useful when running locally.
test_travis_yml
# Generic shellscript checks:
for shellscript in $files_to_check; do
test_formatting
test_bashate
test_checkbashisms
test_shellcheck
done
}
echo "Checking ${shellscript} with bashate:"
main
# Can't ignore individual things for now, filed bug:
# https://bugs.launchpad.net/bash8/+bug/1698088
# E006=line length check
# E010=do/while same line (in some embedded perl in winetricks)
# E044=Use [[ for non-POSIX comparisions
w_try "$bashate" -i E006,E010,E044 "${shellscript}"
done
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
#!/bin/sh
set -x
# Invoked by travis to check for trailing whitespace
# Only in travis since local tree may have other diffs applied:
make cleanup
# Git diff doesn't show the trailing whitespace as of 2018/05/13.
# Tried various color/diff settings with no luck.
# The workaround is cat, but commands aren't standard on Linux/OS X
git diff --exit-code > whitespace.diff
ret="$?"
if [ "$ret" = 0 ]; then
echo "No trailing whitespace found."
exit 0
else
echo "There is trailing whitespace that needs to be fixed:"
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
cat -A whitespace.diff
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
# Currently unimpemented on OSX.
# sed will need to be fixed as well:
# sed --in-place 's,[ \t]\+$,,' $(find Makefile src tests -type f)
# sed: illegal option -- -
# usage: sed script [-Ealn] [-i extension] [file ...]
# sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
# make: *** [cleanup] Error 1
# cat -etv whitespace.diff
echo "Not fully implemented on osx yet"
else
echo "Unknown OS!"
fi
exit 1
fi
......@@ -135,7 +135,7 @@ skips=0
# middle of a two day run.
check_deps() {
for tool in time cabextract; do
command -v "$tool"
command -v "$tool" >/dev/null 2>&1
ret=$?
if [ ! $ret -eq 0 ] ; then
......@@ -220,8 +220,7 @@ case "$OS" in
/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 [ -x "$x" ] ; then
case "$x" in
/usr/lib/*/wine-development/wineserver)
......@@ -359,6 +358,8 @@ test_command()
archskip=0
command="$*"
# If _W_wine_not_needed is set, don't fail if wine is missing (used by test_listing())
# This previously changed spaces to hyphens. Going back to spaces so we test WINEPREFIXes
# with special characters, to prevent issues like https://github.com/Winetricks/winetricks/issues/995
export WINEPREFIX="$WINE_PREFIXES/${command}"
......@@ -371,13 +372,15 @@ test_command()
# Isolate us from the user's home directory
# shellcheck disable=SC2086
$XVFB $WINETRICKS sandbox || fail "\'$XVFB $WINETRICKS sandbox\' failed"
echo "Installing $command"
# shellcheck disable=SC2086
$XVFB $WINETRICKS --no-isolate -q nocrashdialog "$@"
return=$?
if [ -z "$_W_wine_not_needed" ]; then
$XVFB $WINETRICKS sandbox || fail "\'$XVFB $WINETRICKS sandbox\' failed"
echo "Installing $command"
$XVFB $WINETRICKS --no-isolate -q nocrashdialog "$@"
return=$?
else
$XVFB $WINETRICKS --no-isolate -q "$@"
return=$?
fi
if [ -d "$WINEPREFIX/drive_c/windows/syswow64" ]; then
WINEARCH="win64"
......@@ -393,6 +396,9 @@ test_command()
skip "$command is not supported on $WINEARCH, requires win64"
archskip=1
return
elif [ "$return" = "99" ]; then
skip "$command is known to be broken on this wine version, ignoring"
return
fi
if [ "$EXPECT_FAIL" = "yes" ] ; then
......@@ -421,8 +427,11 @@ test_command()
echo "Checking for dangling processes!"
# shellcheck disable=SC2009
ps augxw | grep \\.exe
"$WINESERVER" -w
echo "Wineserver done."
if [ -z "$_W_wine_not_needed" ]; then
"$WINESERVER" -w
echo "Wineserver done."
fi
}
test_custom_verbs()
......@@ -644,6 +653,48 @@ test_install_cached_or_download()
fi
}
test_listing()
{
export _W_wine_not_needed=1
W_WINE="$WINE"
# Most options should work with or without WINE available:
for category in $("${WINETRICKS}" list); do
export WINE="$W_WINE"
test_command "$category" list
export WINE=/dev/null
test_command "$category" list
done
for hardcoded in list list-cached list-download list-manual-download list-all; do
export WINE="$W_WINE"
test_command $hardcoded
export WINE=/dev/null
test_command $hardcoded
done
# list-installed needs the installed metadata which requires wine/wineprefix info:
export WINE="$W_WINE"
test_command list-installed
# Testing list-installed without wine is hard. A new prefix won't have anything installed
# and so winetricks bails out before it tries to run w_metadata
# So to truly test we need something installed first, then re-use that prefix with WINE=/dev/null
unset _W_wine_not_needed
export WINE="$W_WINE"
test_command mfc42
export WINEPREFIX="$WINE_PREFIXES/mfc42"
export _W_wine_not_needed=1
export WINE=/dev/null
EXPECT_FAIL=yes "$WINETRICKS" -q list-installed
unset _W_wine_not_needed
export WINE="$W_WINE"
}
test_quick()
{
echo "warning: quick test takes up around 20GB"
......@@ -657,8 +708,12 @@ test_quick()
# And test all the automatically-downloadable dlls
test_dlls
# And win32 7zip fallback
test_7zip
# And listing verbs (with/without WINE available)
test_listing
}
test_full() {
......@@ -748,44 +803,64 @@ test_w_compare_wine_version()
# comparison="$2" # the comparison to make (e.g., ',1.8', '1.9,', or '1.8,1.9')
# workaround_expected="$3" # should the workaround be executed (yes/no)
helper_test_w_compare_wine_version "wine-2.0" ",1.6" "no"
helper_test_w_compare_wine_version "wine-2.0" ",1.4" "no"
helper_test_w_compare_wine_version "wine-2.0" "1.4,1.6" "no"
# good (less than)
helper_test_w_compare_wine_version "wine-1.0" ",1.8.0" "yes"
helper_test_w_compare_wine_version "wine-3.0" ",3.0" "yes"
# good (between)
helper_test_w_compare_wine_version "wine-1.6" "1.4,2.0" "yes"
helper_test_w_compare_wine_version "wine-1.8.0" "1.8.0,3.0" "yes"
helper_test_w_compare_wine_version "wine-3.0" "1.8.0,3.0" "yes"
# good (greater than)
helper_test_w_compare_wine_version "wine-1.3" "1.2," "yes"
helper_test_w_compare_wine_version "wine-1.3.4" "1.2," "yes"
helper_test_w_compare_wine_version "wine-1.6" "1.2," "yes"
helper_test_w_compare_wine_version "wine-1.6-rc1" "1.2," "yes"
helper_test_w_compare_wine_version "wine-2.0.1" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0.1" "2.0," "yes"
helper_test_w_compare_wine_version "wine-2.0" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0" "1.8.1," "yes"
helper_test_w_compare_wine_version "wine-2.0" "1.8," "yes"
helper_test_w_compare_wine_version "wine-2.0.1 (debian 2.0.1-r1)" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0.1 (staging)" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0-rc1" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-3.0" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-3.0" "3.0," "yes"
# bad (less than)
helper_test_w_compare_wine_version "wine-1.0" "1.8.0," "no"
helper_test_w_compare_wine_version "wine-1.0" ",1.8.0" "yes"
helper_test_w_compare_wine_version "wine-2.0" "3.0," "no"
helper_test_w_compare_wine_version "wine-2.0.1 (staging)" "1.8.0," "yes"
# bad (between)
helper_test_w_compare_wine_version "wine-1.0" "2.0,3.0" "no"
helper_test_w_compare_wine_version "wine-2.0" "1.4,1.6" "no"
# bad (greater than)
helper_test_w_compare_wine_version "wine-1.3" ",1.2" "no"
helper_test_w_compare_wine_version "wine-1.3" "1.2," "yes"
helper_test_w_compare_wine_version "wine-1.3.4" ",1.2" "no"
helper_test_w_compare_wine_version "wine-1.3.4" "1.2," "yes"
helper_test_w_compare_wine_version "wine-1.6" ",1.2" "no"
helper_test_w_compare_wine_version "wine-1.6" ",1.2" "no"
helper_test_w_compare_wine_version "wine-1.6" "1.2," "yes"
helper_test_w_compare_wine_version "wine-1.6-rc1" ",1.2" "no"
helper_test_w_compare_wine_version "wine-1.6-rc1" "1.2," "yes"
helper_test_w_compare_wine_version "wine-2.0.1" ",1.8.0" "no"
helper_test_w_compare_wine_version "wine-2.0.1" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0.1" ",2.0" "no"
helper_test_w_compare_wine_version "wine-2.0.1" ",2.0" "no"
helper_test_w_compare_wine_version "wine-2.0.1" "2.0," "yes"
helper_test_w_compare_wine_version "wine-2.0" ",1.4" "no"
helper_test_w_compare_wine_version "wine-2.0" ",1.6" "no"
helper_test_w_compare_wine_version "wine-2.0" ",1.8.0" "no"
helper_test_w_compare_wine_version "wine-2.0" ",1.8.0" "no"
helper_test_w_compare_wine_version "wine-2.0" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0" ",1.8.1" "no"
helper_test_w_compare_wine_version "wine-2.0" "1.8.1," "yes"
helper_test_w_compare_wine_version "wine-2.0" ",1.8" "no"
helper_test_w_compare_wine_version "wine-2.0" "1.8," "yes"
helper_test_w_compare_wine_version "wine-2.0" ",1.9" "no"
helper_test_w_compare_wine_version "wine-2.0.1 (debian 2.0.1-r1)" ",1.8.0" "no"
helper_test_w_compare_wine_version "wine-2.0.1 (debian 2.0.1-r1)" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0.1 (staging)" ",1.8.0" "no"
helper_test_w_compare_wine_version "wine-2.0.1 (staging)" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-2.0-rc1" ",1.8.0" "no"
helper_test_w_compare_wine_version "wine-2.0-rc1" ",1.8.0" "no"
helper_test_w_compare_wine_version "wine-2.0-rc1" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-3.0" ",1.8.0" "no"
helper_test_w_compare_wine_version "wine-3.0" "1.8.0," "yes"
helper_test_w_compare_wine_version "wine-4.0" ",3.0" "no"
# FIXME: there's plenty of room for more tests..
}
......@@ -796,6 +871,8 @@ case "$1" in
custom-verbs) test_custom_verbs ;;
dotnet) check_deps && test_dotnet ;;
full) check_deps && test_full ;;
# doesn't use time/cabextract, so not bothering to check deps for now:
listing) test_listing ;;
quick) check_deps && test_quick ;;
w_compare_wine_version) check_deps && test_w_compare_wine_version ;;
xvfb-check) check_deps && XVFB=xvfb-run && export XVFB && test_xvfb ;;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment