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: ...@@ -3,7 +3,7 @@ os:
- linux - linux
- osx - osx
sudo: required sudo: required
dist: trusty dist: bionic
# Note: needed by winetricks-test, which not yet supported in TravisCI # Note: needed by winetricks-test, which not yet supported in TravisCI
...@@ -21,8 +21,6 @@ addons: ...@@ -21,8 +21,6 @@ addons:
# for checkbashisms # for checkbashisms
- devscripts - devscripts
# Note: if statements cannot go across multiple lines. Combine into one, or move to a shell script!
# Ubuntu notes: # Ubuntu notes:
# * ShellCheck is already installed in TravisCI # * ShellCheck is already installed in TravisCI
# * bashate is not available on Trusty and we need to install it manually # * bashate is not available on Trusty and we need to install it manually
...@@ -52,12 +50,23 @@ addons: ...@@ -52,12 +50,23 @@ addons:
# If the script fails, install pip and use it to install bashate # If the script fails, install pip and use it to install bashate
before_install: before_install:
- time sh ./misc/travis-install-bashate-deb.sh || time sh ./misc/travis-install-bashate-pip.sh - 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 # "brew update" (or auto-update when installing) takes a long time,
# So installing with "HOMEBREW_NO_AUTO_UPDATE=1" considerably reduces # but checkbashisms and shellcheck can (usually) be installed without this
# job time on macOS # So try installing with "HOMEBREW_NO_AUTO_UPDATE=1", which considerably reduces job time on macOS
# If it fails retry with auto-update # If it fails retry each individually with auto-update enabled
- if [[ "$TRAVIS_OS_NAME" == "osx" ]] ; then time env HOMEBREW_NO_AUTO_UPDATE=1 brew install checkbashisms shellcheck || time brew install checkbashisms shellcheck ; fi - |
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.,: # Note if testing on a branch, you can replace this with your desired command, e.g.,:
# script: time sh ./src/winetricks -q comctl32 # script: time sh ./src/winetricks -q comctl32
...@@ -73,9 +82,6 @@ script: ...@@ -73,9 +82,6 @@ script:
# shell-checks is quick and works, no display or compiles needed # shell-checks is quick and works, no display or compiles needed
- time sh ./tests/shell-checks - 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 # Keep updates working
- time sh ./tests/self-update-test - time sh ./tests/self-update-test
......
...@@ -201,10 +201,10 @@ Note that the file prefix (icecat.verb) and command name (icecat) must match. Al ...@@ -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. The tests need `bashate`, `checkbashisms`, and `shellcheck>=0.4.4` installed.
Makefile supports a few test targets: Makefile supports a few test targets:
* check - runs './tests/winetricks-tests quick' (without first clearing $WINETRICKS_CACHE) * `check` - runs './tests/winetricks-tests quick' (without first clearing $WINETRICKS_CACHE)
* shell-checks - runs './tests/shell-checks' * `shell-checks` - runs './tests/shell-checks'
* test - runs './tests/winetricks-tests full' (and clears $WINETRICKS_CACHE first) * `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) * `xvfb-check` - runs './tests/winetricks-tests xvfb-check' (without first clearing $WINETRICKS_CACHE first)
# Support # Support
* Winetricks is maintained by Austin English <austinenglish@gmail.com>. * Winetricks is maintained by Austin English <austinenglish@gmail.com>.
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
===== apps ===== ===== apps =====
3m_library 3M Cloud Library (3M Company, 2015) [downloadable] 3m_library 3M Cloud Library (3M Company, 2015) [downloadable]
7zip 7-Zip 19.00 (Igor Pavlov, 2019) [downloadable] 7zip 7-Zip 19.00 (Igor Pavlov, 2019) [downloadable]
...@@ -19,7 +18,6 @@ foobar2000 foobar2000 v1.4 (Peter Pawlowski, 2018) ...@@ -19,7 +18,6 @@ foobar2000 foobar2000 v1.4 (Peter Pawlowski, 2018)
hhw HTML Help Workshop (Microsoft, 2000) [downloadable] hhw HTML Help Workshop (Microsoft, 2000) [downloadable]
iceweasel GNU Icecat 31.7.0 (GNU Foundation, 2015) [downloadable] iceweasel GNU Icecat 31.7.0 (GNU Foundation, 2015) [downloadable]
irfanview Irfanview (Irfan Skiljan, 2016) [downloadable] irfanview Irfanview (Irfan Skiljan, 2016) [downloadable]
kde KDE on Windows (various, 2013) [downloadable]
kindle Amazon Kindle (Amazon, 2017) [downloadable] kindle Amazon Kindle (Amazon, 2017) [downloadable]
kobo Kobo e-book reader (Kobo, 2011) [downloadable] kobo Kobo e-book reader (Kobo, 2011) [downloadable]
mingw Minimalist GNU for Windows, including GCC for Windows (GNU, 2013) [downloadable] mingw Minimalist GNU for Windows, including GCC for Windows (GNU, 2013) [downloadable]
...@@ -30,7 +28,7 @@ mt4 Meta Trader 4 (, 2005) [downloadable] ...@@ -30,7 +28,7 @@ mt4 Meta Trader 4 (, 2005) [downloadable]
njcwp_trial NJStar Chinese Word Processor trial (NJStar, 2015) [downloadable] njcwp_trial NJStar Chinese Word Processor trial (NJStar, 2015) [downloadable]
njjwp_trial NJStar Japanese Word Processor trial (NJStar, 2009) [downloadable] njjwp_trial NJStar Japanese Word Processor trial (NJStar, 2009) [downloadable]
nook Nook for PC (e-book reader) (Barnes & Noble, 2011) [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) office2003pro Microsoft Office 2003 Professional (Microsoft, 2002)
office2007pro Microsoft Office 2007 Professional (Microsoft, 2006) office2007pro Microsoft Office 2007 Professional (Microsoft, 2006)
office2013pro Microsoft Office 2013 Professional (Microsoft, 2013) [downloadable] office2013pro Microsoft Office 2013 Professional (Microsoft, 2013) [downloadable]
...@@ -119,7 +117,12 @@ d9vk012 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux ...@@ -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] 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] 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] 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_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] dbghelp MS dbghelp (Microsoft, 2008) [downloadable]
devenum MS devenum.dll from DirectX user redistributable (Microsoft, 2010) [downloadable] devenum MS devenum.dll from DirectX user redistributable (Microsoft, 2010) [downloadable]
dinput8 MS DirectInput 8 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 ...@@ -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] 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] 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] 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] dxvk Vulkan-based D3D10/D3D11 implementation for Linux / Wine (latest) (Philip Rebohle, 2017) [downloadable]
esent MS Extensible Storage Engine (Microsoft, 2011) [downloadable] esent MS Extensible Storage Engine (Microsoft, 2011) [downloadable]
faudio1901 FAudio (xaudio reimplementation, with xna support) builds for win32 (19.01) (Kron4ek, 2019) [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 ...@@ -216,6 +226,8 @@ filever Microsoft's filever, for dumping file version info (Mic
flash Flash Player 29 (Adobe, 2018) [downloadable] flash Flash Player 29 (Adobe, 2018) [downloadable]
galliumnine02 Gallium Nine Standalone (v0.2) (Gallium Nine Team, 2019) [downloadable] galliumnine02 Gallium Nine Standalone (v0.2) (Gallium Nine Team, 2019) [downloadable]
galliumnine03 Gallium Nine Standalone (v0.3) (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] galliumnine Gallium Nine Standalone (latest) (Gallium Nine Team, 2019) [downloadable]
gdiplus MS GDI+ (Microsoft, 2011) [downloadable] gdiplus MS GDI+ (Microsoft, 2011) [downloadable]
gdiplus_winxp MS GDI+ (Microsoft, 2004) gdiplus_winxp MS GDI+ (Microsoft, 2004)
...@@ -253,6 +265,7 @@ msmask MS Masked Edit Control (Microsoft, 2009) [downloadable] ...@@ -253,6 +265,7 @@ msmask MS Masked Edit Control (Microsoft, 2009) [downloadable]
mspatcha MS mspatcha (Microsoft, 2004) [downloadable] mspatcha MS mspatcha (Microsoft, 2004) [downloadable]
msscript MS Windows Script Control (Microsoft, 2004) [downloadable] msscript MS Windows Script Control (Microsoft, 2004) [downloadable]
msvcirt Visual C++ 6 SP4 msvcirt library; part of vcrun6 (Microsoft, 2000) [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] msxml3 MS XML Core Services 3.0 (Microsoft, 2005) [downloadable]
msxml4 MS XML Core Services 4.0 (Microsoft, 2009) [downloadable] msxml4 MS XML Core Services 4.0 (Microsoft, 2009) [downloadable]
msxml6 MS XML Core Services 6.0 sp1 (Microsoft, 2007) [downloadable] msxml6 MS XML Core Services 6.0 sp1 (Microsoft, 2007) [downloadable]
...@@ -462,8 +475,8 @@ alldlls=builtin Override most common DLLs to builtin ...@@ -462,8 +475,8 @@ alldlls=builtin Override most common DLLs to builtin
alldlls=default Remove all DLL overrides alldlls=default Remove all DLL overrides
ao=disabled Disable AlwaysOffscreen (default) ao=disabled Disable AlwaysOffscreen (default)
ao=enabled Enable AlwaysOffscreen ao=enabled Enable AlwaysOffscreen
autostart_winedbg=disable Prevent winedbg from launching when an unhandled exception occurs autostart_winedbg=disabled Prevent winedbg from launching when an unhandled exception occurs
autostart_winedbg=enable Automatically launch winedbg when an unhandled exception occurs (default) autostart_winedbg=enabled Automatically launch winedbg when an unhandled exception occurs (default)
bad Fake verb that always returns false bad Fake verb that always returns false
cfc=disable Disable CheckFloatConstants (default) cfc=disable Disable CheckFloatConstants (default)
cfc=enabled Enable CheckFloatConstants 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] 3m_library 3M Cloud Library (3M Company, 2015) [downloadable]
7zip 7-Zip 19.00 (Igor Pavlov, 2019) [downloadable] 7zip 7-Zip 19.00 (Igor Pavlov, 2019) [downloadable]
abiword AbiWord 2.8.6 (AbiSource, 2010) [downloadable] abiword AbiWord 2.8.6 (AbiSource, 2010) [downloadable]
...@@ -18,7 +17,6 @@ foobar2000 foobar2000 v1.4 (Peter Pawlowski, 2018) ...@@ -18,7 +17,6 @@ foobar2000 foobar2000 v1.4 (Peter Pawlowski, 2018)
hhw HTML Help Workshop (Microsoft, 2000) [downloadable] hhw HTML Help Workshop (Microsoft, 2000) [downloadable]
iceweasel GNU Icecat 31.7.0 (GNU Foundation, 2015) [downloadable] iceweasel GNU Icecat 31.7.0 (GNU Foundation, 2015) [downloadable]
irfanview Irfanview (Irfan Skiljan, 2016) [downloadable] irfanview Irfanview (Irfan Skiljan, 2016) [downloadable]
kde KDE on Windows (various, 2013) [downloadable]
kindle Amazon Kindle (Amazon, 2017) [downloadable] kindle Amazon Kindle (Amazon, 2017) [downloadable]
kobo Kobo e-book reader (Kobo, 2011) [downloadable] kobo Kobo e-book reader (Kobo, 2011) [downloadable]
mingw Minimalist GNU for Windows, including GCC for Windows (GNU, 2013) [downloadable] mingw Minimalist GNU for Windows, including GCC for Windows (GNU, 2013) [downloadable]
...@@ -29,7 +27,7 @@ mt4 Meta Trader 4 (, 2005) [downloadable] ...@@ -29,7 +27,7 @@ mt4 Meta Trader 4 (, 2005) [downloadable]
njcwp_trial NJStar Chinese Word Processor trial (NJStar, 2015) [downloadable] njcwp_trial NJStar Chinese Word Processor trial (NJStar, 2015) [downloadable]
njjwp_trial NJStar Japanese Word Processor trial (NJStar, 2009) [downloadable] njjwp_trial NJStar Japanese Word Processor trial (NJStar, 2009) [downloadable]
nook Nook for PC (e-book reader) (Barnes & Noble, 2011) [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) office2003pro Microsoft Office 2003 Professional (Microsoft, 2002)
office2007pro Microsoft Office 2007 Professional (Microsoft, 2006) office2007pro Microsoft Office 2007 Professional (Microsoft, 2006)
office2013pro Microsoft Office 2013 Professional (Microsoft, 2013) [downloadable] 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) 3dmark03 3D Mark 03 (Futuremark, 2003)
3dmark05 3D Mark 05 (Futuremark, 2005) [downloadable] 3dmark05 3D Mark 05 (Futuremark, 2005) [downloadable]
3dmark06 3D Mark 06 (Futuremark, 2006) 3dmark06 3D Mark 06 (Futuremark, 2006)
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
adobeair Adobe AIR (Adobe, 2018) [downloadable] adobeair Adobe AIR (Adobe, 2018) [downloadable]
allcodecs All codecs (dirac, ffdshow, icodecs, cinepak, l3codecx, xvid) except wmp (various, 1995-2009) [downloadable] allcodecs All codecs (dirac, ffdshow, icodecs, cinepak, l3codecx, xvid) except wmp (various, 1995-2009) [downloadable]
amstream MS amstream.dll (Microsoft, 2011) [downloadable] amstream MS amstream.dll (Microsoft, 2011) [downloadable]
...@@ -50,7 +49,12 @@ d9vk012 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux ...@@ -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] 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] 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] 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_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] dbghelp MS dbghelp (Microsoft, 2008) [downloadable]
devenum MS devenum.dll from DirectX user redistributable (Microsoft, 2010) [downloadable] devenum MS devenum.dll from DirectX user redistributable (Microsoft, 2010) [downloadable]
dinput8 MS DirectInput 8 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 ...@@ -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] 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] 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] 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] dxvk Vulkan-based D3D10/D3D11 implementation for Linux / Wine (latest) (Philip Rebohle, 2017) [downloadable]
esent MS Extensible Storage Engine (Microsoft, 2011) [downloadable] esent MS Extensible Storage Engine (Microsoft, 2011) [downloadable]
faudio1901 FAudio (xaudio reimplementation, with xna support) builds for win32 (19.01) (Kron4ek, 2019) [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 ...@@ -147,6 +158,8 @@ filever Microsoft's filever, for dumping file version info (Mic
flash Flash Player 29 (Adobe, 2018) [downloadable] flash Flash Player 29 (Adobe, 2018) [downloadable]
galliumnine02 Gallium Nine Standalone (v0.2) (Gallium Nine Team, 2019) [downloadable] galliumnine02 Gallium Nine Standalone (v0.2) (Gallium Nine Team, 2019) [downloadable]
galliumnine03 Gallium Nine Standalone (v0.3) (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] galliumnine Gallium Nine Standalone (latest) (Gallium Nine Team, 2019) [downloadable]
gdiplus MS GDI+ (Microsoft, 2011) [downloadable] gdiplus MS GDI+ (Microsoft, 2011) [downloadable]
gdiplus_winxp MS GDI+ (Microsoft, 2004) gdiplus_winxp MS GDI+ (Microsoft, 2004)
...@@ -184,6 +197,7 @@ msmask MS Masked Edit Control (Microsoft, 2009) [downloadable] ...@@ -184,6 +197,7 @@ msmask MS Masked Edit Control (Microsoft, 2009) [downloadable]
mspatcha MS mspatcha (Microsoft, 2004) [downloadable] mspatcha MS mspatcha (Microsoft, 2004) [downloadable]
msscript MS Windows Script Control (Microsoft, 2004) [downloadable] msscript MS Windows Script Control (Microsoft, 2004) [downloadable]
msvcirt Visual C++ 6 SP4 msvcirt library; part of vcrun6 (Microsoft, 2000) [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] msxml3 MS XML Core Services 3.0 (Microsoft, 2005) [downloadable]
msxml4 MS XML Core Services 4.0 (Microsoft, 2009) [downloadable] msxml4 MS XML Core Services 4.0 (Microsoft, 2009) [downloadable]
msxml6 MS XML Core Services 6.0 sp1 (Microsoft, 2007) [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 3dmark05
3dmark2000 3dmark2000
3dmark2001 3dmark2001
...@@ -80,12 +79,17 @@ d3dx9_41 ...@@ -80,12 +79,17 @@ d3dx9_41
d3dx9_42 d3dx9_42
d3dx9_43 d3dx9_43
d3dxof d3dxof
d9vk
d9vk010 d9vk010
d9vk011 d9vk011
d9vk012 d9vk012
d9vk013 d9vk013
d9vk013f d9vk013f
d9vk020 d9vk020
d9vk021
d9vk022
d9vk030
d9vk040
d9vk_master d9vk_master
dbghelp dbghelp
devenum devenum
...@@ -172,6 +176,13 @@ dxvk131 ...@@ -172,6 +176,13 @@ dxvk131
dxvk132 dxvk132
dxvk133 dxvk133
dxvk134 dxvk134
dxvk140
dxvk141
dxvk142
dxvk143
dxvk144
dxvk145
dxvk146
emu8086 emu8086
esent esent
eufonts eufonts
...@@ -194,6 +205,8 @@ fontxplorer ...@@ -194,6 +205,8 @@ fontxplorer
galliumnine galliumnine
galliumnine02 galliumnine02
galliumnine03 galliumnine03
galliumnine04
galliumnine05
gdiplus gdiplus
georgia georgia
gfw gfw
...@@ -216,7 +229,6 @@ irfanview ...@@ -216,7 +229,6 @@ irfanview
itircl itircl
itss itss
jet40 jet40
kde
kindle kindle
kobo kobo
l3codecx l3codecx
...@@ -249,6 +261,7 @@ mspaint ...@@ -249,6 +261,7 @@ mspaint
mspatcha mspatcha
msscript msscript
msvcirt msvcirt
msvcrt40
msxml3 msxml3
msxml4 msxml4
msxml6 msxml6
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
acreedbro Assassin's Creed Brotherhood (Ubisoft, 2011) acreedbro Assassin's Creed Brotherhood (Ubisoft, 2011)
algodoo_demo Algodoo Demo (Algoryx, 2009) [downloadable] algodoo_demo Algodoo Demo (Algoryx, 2009) [downloadable]
alienswarm_steam Alien Swarm (Steam) (Valve, 2010) [downloadable] alienswarm_steam Alien Swarm (Steam) (Valve, 2010) [downloadable]
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
3dmark03 3dmark03
3dmark06 3dmark06
amnesia_tdd_demo amnesia_tdd_demo
......
Using winetricks 20190912 - sha256sum: a251311a6490ce546f5c9b450492be26ae8099517cc3ed8c50d6ef065be4ad0d with wine-4.14 and WINEARCH=win32
alldlls=builtin Override most common DLLs to builtin alldlls=builtin Override most common DLLs to builtin
alldlls=default Remove all DLL overrides alldlls=default Remove all DLL overrides
ao=disabled Disable AlwaysOffscreen (default) ao=disabled Disable AlwaysOffscreen (default)
ao=enabled Enable AlwaysOffscreen ao=enabled Enable AlwaysOffscreen
autostart_winedbg=disable Prevent winedbg from launching when an unhandled exception occurs autostart_winedbg=disabled Prevent winedbg from launching when an unhandled exception occurs
autostart_winedbg=enable Automatically launch winedbg when an unhandled exception occurs (default) autostart_winedbg=enabled Automatically launch winedbg when an unhandled exception occurs (default)
bad Fake verb that always returns false bad Fake verb that always returns false
cfc=disable Disable CheckFloatConstants (default) cfc=disable Disable CheckFloatConstants (default)
cfc=enabled Enable CheckFloatConstants cfc=enabled Enable CheckFloatConstants
......
...@@ -49,7 +49,7 @@ for dir in "${CACHE_DIR}/"* ; do ...@@ -49,7 +49,7 @@ for dir in "${CACHE_DIR}/"* ; do
esac esac
for file in "${dir}"/* ; do for file in "${dir}"/* ; do
# Convert the package: # Convert the package:
echo file="${file}" echo file="${file}"
echo "dir=$dir, package=$package, file=$file" echo "dir=$dir, package=$package, file=$file"
sha1_file="$(sha1sum "${file}" | awk '{print $1}')" sha1_file="$(sha1sum "${file}" | awk '{print $1}')"
......
...@@ -41,13 +41,12 @@ fi ...@@ -41,13 +41,12 @@ fi
datadir="${TOP}/output/links.d" datadir="${TOP}/output/links.d"
mkdir -p "${datadir}" 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 resolves to two different IP addresses, one of which is broken
ftp_microsoft_com=64.4.17.176 ftp_microsoft_com=64.4.17.176
w_download() { w_download() {
# shellcheck disable=SC2016 # 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 / _)" urlkey="$(echo "$url" | tr / _)"
echo "$url" > "${datadir}/${urlkey}.url" echo "$url" > "${datadir}/${urlkey}.url"
} }
...@@ -60,7 +59,7 @@ extract_all() { ...@@ -60,7 +59,7 @@ extract_all() {
# https://github.com/koalaman/shellcheck/issues/861 # https://github.com/koalaman/shellcheck/issues/861
# shellcheck disable=SC1003 # 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 # shellcheck disable=SC1091
. ./url-script-fragment.tmp . ./url-script-fragment.tmp
...@@ -151,8 +150,7 @@ esac ...@@ -151,8 +150,7 @@ esac
# cleanup # cleanup
rm -rf "$datadir" url-script-fragment.tmp rm -rf "$datadir" url-script-fragment.tmp
echo "Test over, $errors failures, $passes successes." echo "Test over, $errors failures, $passes successes."
if test $errors = 0 && test $passes -gt 0 if test $errors = 0 && test $passes -gt 0; then
then
echo PASS echo PASS
exit 0 exit 0
else else
......
...@@ -12,8 +12,7 @@ ...@@ -12,8 +12,7 @@
set -e set -e
if ! test "$1" if ! test "$1"; then
then
echo "Please specify a bunch of wineprefixes to grub through" echo "Please specify a bunch of wineprefixes to grub through"
echo "For instance, ~/winetrickstest-prefixes/dotnet20sp{,1,2}" echo "For instance, ~/winetrickstest-prefixes/dotnet20sp{,1,2}"
exit 1 exit 1
...@@ -21,7 +20,8 @@ fi ...@@ -21,7 +20,8 @@ fi
# Generate list of all filenames (except those which look ephemeral) # Generate list of all filenames (except those which look ephemeral)
rm -f /tmp/allfiles.txt rm -f /tmp/allfiles.txt
for dir ; do
for dir; do
( (
cd "$dir/drive_c" cd "$dir/drive_c"
# FIXME: don't assume there are no ='s in filenames, e.g. rewrite in perl # FIXME: don't assume there are no ='s in filenames, e.g. rewrite in perl
...@@ -34,7 +34,7 @@ done ...@@ -34,7 +34,7 @@ done
sort < /tmp/allfiles.txt | uniq -c | awk '$1 == 1 {print $2}' > /tmp/uniqfiles.txt sort < /tmp/allfiles.txt | uniq -c | awk '$1 == 1 {print $2}' > /tmp/uniqfiles.txt
# Associate them with the verb they came from # Associate them with the verb they came from
for dir ; do for dir; do
( (
cd "$dir" cd "$dir"
# Undo the space-to-= transformation, too # Undo the space-to-= transformation, too
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
# Name of this version of winetricks (YYYYMMDD) # Name of this version of winetricks (YYYYMMDD)
# (This doesn't change often, use the sha256sum of the file when reporting problems) # (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 # This is a UTF-8 file
# You should see an o with two dots over it here [ö] # You should see an o with two dots over it here [ö]
...@@ -67,7 +67,7 @@ WINETRICKS_VERSION=20190912 ...@@ -67,7 +67,7 @@ WINETRICKS_VERSION=20190912
# Copyright (C) 2011 Trevor Johnson # Copyright (C) 2011 Trevor Johnson
# Copyright (C) 2011 Franco Junio # Copyright (C) 2011 Franco Junio
# Copyright (C) 2011 Craig Sanders # 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 Giuseppe Dia
# Copyright (C) 2011 Łukasz Wojniłowicz # Copyright (C) 2011 Łukasz Wojniłowicz
# Copyright (C) 2011 Matthew Bozarth # Copyright (C) 2011 Matthew Bozarth
...@@ -300,17 +300,138 @@ w_killall() ...@@ -300,17 +300,138 @@ w_killall()
kill -s KILL $(pgrep $1) kill -s KILL $(pgrep $1)
} }
# Some packages don't support win32, die with an appropriate message # Warn user if package is broken (on all arches) in the current wine version. Bug report required.
# Returns 64 (for tests/winetricks-test) w_package_broken()
w_package_unsupported_win32()
{ {
if [ "$W_ARCH" = "win32" ] ; then # FIXME: test cases for this
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 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 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() w_package_broken_win64()
{ {
# Optional: # Optional:
...@@ -325,6 +446,17 @@ w_package_broken_win64() ...@@ -325,6 +446,17 @@ w_package_broken_win64()
fi 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 # 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() # 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) # Returns 32 (for tests/winetricks-test)
...@@ -345,7 +477,7 @@ w_package_warn_win64() ...@@ -345,7 +477,7 @@ w_package_warn_win64()
{ {
if [ "$W_ARCH" = "win64" ] ; then if [ "$W_ARCH" = "win64" ] ; then
case $LANG in 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-битные префиксы могут работать лучше." ;; 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." ;; *) w_warn "This package ($W_PACKAGE) may not fully work on a 64-bit installation. 32-bit prefixes may work better." ;;
esac esac
...@@ -675,7 +807,7 @@ w_verify_cabextract_available() ...@@ -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 # 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 # 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. # Convert a Windows path to a Unix path quickly.
...@@ -721,11 +853,11 @@ w_expand_env() ...@@ -721,11 +853,11 @@ w_expand_env()
# Get the latest tagged release from github.com API # Get the latest tagged release from github.com API
w_get_github_latest_release() w_get_github_latest_release()
{ {
# $1 - github organization
# $2 - github repository
# FIXME: can we get releases that aren't on master branch? # 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) # aria2c condenses the json (https://github.com/aria2/aria2/issues/1389)
# but curl/wget don't, so handle both cases: # but curl/wget don't, so handle both cases:
...@@ -738,6 +870,26 @@ w_get_github_latest_release() ...@@ -738,6 +870,26 @@ w_get_github_latest_release()
echo "$latest_version" 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 # get sha256sum string and set $_W_gotsha256sum to it
w_get_sha256sum() w_get_sha256sum()
{ {
...@@ -888,44 +1040,45 @@ w_dotnet_verify() ...@@ -888,44 +1040,45 @@ w_dotnet_verify()
dotnet48) version="4.8" ;; dotnet48) version="4.8" ;;
*) echo error ; exit 1 ;; *) echo error ; exit 1 ;;
esac 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 # FIXME: The logfile may be useful somewhere (or at least print the location)
# shellcheck disable=SC2140
w_ahk_do " # for 'run, netfx_setupverifier.exe /q:a /c:"setupverifier2.exe"' line
SetTitleMatchMode, 2 # shellcheck disable=SC2140
; FIXME; this only works the first time? Check if it's already verified somehow.. w_ahk_do "
SetTitleMatchMode, 2
run, netfx_setupverifier.exe /q:a /c:"setupverifier2.exe" ; FIXME; this only works the first time? Check if it's already verified somehow..
winwait, Verification Utility
ControlClick, Button1 run, netfx_setupverifier.exe /q:a /c:"setupverifier2.exe"
Control, ChooseString, NET Framework $version, ComboBox1 winwait, Verification Utility
ControlClick, Button1 ; Verify ControlClick, Button1
loop, 60 Control, ChooseString, NET Framework $version, ComboBox1
{ ControlClick, Button1 ; Verify
sleep 1000 loop, 60
process, exist, setupverifier2.exe {
dn_pid=%ErrorLevel% sleep 1000
if dn_pid = 0 process, exist, setupverifier2.exe
{ dn_pid=%ErrorLevel%
break if dn_pid = 0
} {
ifWinExist, Verification Utility, Product verification failed break
{ }
process, close, setupverifier2.exe ifWinExist, Verification Utility, Product verification failed
exit 1 {
} process, close, setupverifier2.exe
ifWinExist, Verification Utility, Product verification succeeded exit 1
{ }
process, close, setupverifier2.exe ifWinExist, Verification Utility, Product verification succeeded
break {
} process, close, setupverifier2.exe
} break
" }
dn_status="$?" }
w_info ".Net Verifier returned $dn_status" "
dn_status="$?"
w_info ".Net Verifier returned $dn_status"
} }
# Checks if the user can run the self-update/rollback commands # Checks if the user can run the self-update/rollback commands
...@@ -1557,8 +1710,7 @@ w_steam_install_game() ...@@ -1557,8 +1710,7 @@ w_steam_install_game()
winwaitclose winwaitclose
" "
if [ "$STEAM_DVD" = "TRUE" ] if [ "$STEAM_DVD" = "TRUE" ]; then
then
w_ahk_do " w_ahk_do "
; Run a fourth time, have it install the app. ; Run a fourth time, have it install the app.
run steam.exe -install ${W_ISO_MOUNT_LETTER}:\\ run steam.exe -install ${W_ISO_MOUNT_LETTER}:\\
...@@ -1602,11 +1754,9 @@ fi ...@@ -1602,11 +1754,9 @@ fi
} }
" "
if [ "$STEAM_DVD" = "TRUE" ] if [ "$STEAM_DVD" = "TRUE" ]; then
then
# Wait for install to finish # Wait for install to finish
while true while true; do
do
grep "SetHasAllLocalContent(true) called for $_W_steamid" "$W_PROGRAMS_X86_UNIX/Steam/logs/download_log.txt" && break grep "SetHasAllLocalContent(true) called for $_W_steamid" "$W_PROGRAMS_X86_UNIX/Steam/logs/download_log.txt" && break
sleep 5 sleep 5
done done
...@@ -1650,8 +1800,7 @@ w_mount() ...@@ -1650,8 +1800,7 @@ w_mount()
winetricks_mount_cached_iso winetricks_mount_cached_iso
else else
if test "$WINETRICKS_OPT_KEEPISOS" = 0 || test "$2"; then if test "$WINETRICKS_OPT_KEEPISOS" = 0 || test "$2"; then
while true while true; do
do
winetricks_mount_real_volume "$1" winetricks_mount_real_volume "$1"
if test "$2" = "" || test -f "$W_ISO_MOUNT_ROOT/$2"; then if test "$2" = "" || test -f "$W_ISO_MOUNT_ROOT/$2"; then
break break
...@@ -1836,8 +1985,7 @@ REGEDIT4 ...@@ -1836,8 +1985,7 @@ REGEDIT4
[HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides] [HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides]
_EOF_ _EOF_
while test "$1" != "" while test "$1" != ""; do
do
w_common_override_dll "$_W_mode" "$1" w_common_override_dll "$_W_mode" "$1"
shift shift
done done
...@@ -2259,8 +2407,7 @@ Usage: 'w_override_app_dlls app mode dll ...'." ;; ...@@ -2259,8 +2407,7 @@ Usage: 'w_override_app_dlls app mode dll ...'." ;;
echo "[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\$_W_app\\DllOverrides]" echo "[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\$_W_app\\DllOverrides]"
) > "$W_TMP"/override-dll.reg ) > "$W_TMP"/override-dll.reg
while test "$1" != "" while test "$1" != ""; do
do
w_common_override_dll "$_W_mode" "$1" w_common_override_dll "$_W_mode" "$1"
shift shift
done done
...@@ -2399,7 +2546,7 @@ _EOF_ ...@@ -2399,7 +2546,7 @@ _EOF_
csdversion_hex=dword:00000200 csdversion_hex=dword:00000200
"$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f "$WINE" reg add "HKLM\\System\\CurrentControlSet\\Control\\ProductOptions" /v ProductType /d "WinNT" /f
;; ;;
win7) win7|default)
csdversion="Service Pack 1" csdversion="Service Pack 1"
currentbuildnumber="7601" currentbuildnumber="7601"
currentversion="6.1" currentversion="6.1"
...@@ -2460,8 +2607,8 @@ _EOF_ ...@@ -2460,8 +2607,8 @@ _EOF_
w_unset_winver() w_unset_winver()
{ {
# FIXME: update when wine bumps default version w_warn "w_unset_winver() is deprecated, use \'w_set_winver default\' instead"
w_set_winver win7 w_set_winver default
} }
# Present app $1 with the Windows personality $2 # Present app $1 with the Windows personality $2
...@@ -2502,7 +2649,12 @@ w_compare_wine_version() ...@@ -2502,7 +2649,12 @@ w_compare_wine_version()
-bn) _expected_pos_current_wine="2";; -bn) _expected_pos_current_wine="2";;
-ge) _expected_pos_current_wine="2";; -ge) _expected_pos_current_wine="2";;
-le) _expected_pos_current_wine="1";; -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 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)" _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() ...@@ -2525,8 +2677,7 @@ w_compare_wine_version()
# val1,val2 (for >= val1 && <= val2) # val1,val2 (for >= val1 && <= val2)
w_wine_version_in() w_wine_version_in()
{ {
for _W_range for _W_range; do
do
_W_val1=$(echo "$_W_range" | sed 's/,.*//') _W_val1=$(echo "$_W_range" | sed 's/,.*//')
_W_val2=$(echo "$_W_range" | sed 's/.*,//') _W_val2=$(echo "$_W_range" | sed 's/.*,//')
# If in this range, return true # If in this range, return true
...@@ -2615,12 +2766,27 @@ w_metadata() ...@@ -2615,12 +2766,27 @@ w_metadata()
shift shift
# Echo arguments to file, with double quotes around the values. # Echo arguments to file, with double quotes around the values.
# Used to use Perl here, but that was too slow on Cygwin. # Used to use Perl here, but that was too slow on Cygwin.
for arg for arg; do
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 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_exe1=/*)
installed_file1=/*) w_die "bug: w_metadata $_W_md_cmd has a unix path for installed_file1, should be a windows path";; if [ -n "$_W_wine_not_needed" ]; then
media=download_manual) w_die "bug: verb $_W_md_cmd has media=download_manual, should be manual_download" ;; # "_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 esac
# Use longest match when stripping value, # Use longest match when stripping value,
# and shortest match when stripping name, # and shortest match when stripping name,
...@@ -2668,8 +2834,7 @@ w_conflicts() ...@@ -2668,8 +2834,7 @@ w_conflicts()
verb="$1" verb="$1"
conflicting_verbs="$2" conflicting_verbs="$2"
for x in $conflicting_verbs for x in $conflicting_verbs; do
do
if grep -qw "$x" "$WINEPREFIX/winetricks.log" 2>/dev/null; then 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." 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 fi
...@@ -2733,14 +2898,13 @@ w_do_call() ...@@ -2733,14 +2898,13 @@ w_do_call()
*) *)
# shellcheck disable=SC2154 # shellcheck disable=SC2154
case "${category}-${WINETRICKS_OPT_SHAREDPREFIX}" in case "${category}-${WINETRICKS_OPT_SHAREDPREFIX}" in
apps-0|benchmarks-0|games-0) apps-0|benchmarks-0|games-0) winetricks_set_wineprefix "$cmd";;
winetricks_set_wineprefix "$cmd" *) winetricks_set_wineprefix;;
# 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 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 esac
...@@ -2750,8 +2914,7 @@ w_do_call() ...@@ -2750,8 +2914,7 @@ w_do_call()
# Don't install if a conflicting verb is already installed: # Don't install if a conflicting verb is already installed:
# shellcheck disable=SC2154 # shellcheck disable=SC2154
if test "$WINETRICKS_FORCE" != 1 && test "$conflicts" && test -f "$WINEPREFIX/winetricks.log"; then if test "$WINETRICKS_FORCE" != 1 && test "$conflicts" && test -f "$WINEPREFIX/winetricks.log"; then
for x in $conflicts for x in $conflicts; do
do
w_conflicts "$1" "$x" w_conflicts "$1" "$x"
done done
fi fi
...@@ -3328,8 +3491,7 @@ winetricks_prefixmenu() ...@@ -3328,8 +3491,7 @@ winetricks_prefixmenu()
> "$WINETRICKS_WORKDIR"/zenity.sh > "$WINETRICKS_WORKDIR"/zenity.sh
if ls -d "$W_PREFIXES_ROOT"/*/dosdevices > /dev/null 2>&1; then if ls -d "$W_PREFIXES_ROOT"/*/dosdevices > /dev/null 2>&1; then
for prefix in "$W_PREFIXES_ROOT"/*/dosdevices for prefix in "$W_PREFIXES_ROOT"/*/dosdevices; do
do
q="${prefix%%/dosdevices}" q="${prefix%%/dosdevices}"
p="${q##*/}" p="${q##*/}"
if test -f "$W_PREFIXES_ROOT/$p/wrapper.cfg"; then if test -f "$W_PREFIXES_ROOT/$p/wrapper.cfg"; then
...@@ -3366,8 +3528,7 @@ winetricks_prefixmenu() ...@@ -3366,8 +3528,7 @@ winetricks_prefixmenu()
mkprefix '$_W_msg_mkprefix' off \ mkprefix '$_W_msg_mkprefix' off \
" "
if ls -d "$W_PREFIXES_ROOT"/*/dosdevices > /dev/null 2>&1; then if ls -d "$W_PREFIXES_ROOT"/*/dosdevices > /dev/null 2>&1; then
for prefix in "$W_PREFIXES_ROOT"/*/dosdevices for prefix in "$W_PREFIXES_ROOT"/*/dosdevices; do
do
q="${prefix%%/dosdevices}" q="${prefix%%/dosdevices}"
p="${q##*/}" p="${q##*/}"
if test -f "$W_PREFIXES_ROOT/$p/wrapper.cfg"; then if test -f "$W_PREFIXES_ROOT/$p/wrapper.cfg"; then
...@@ -3725,8 +3886,7 @@ winetricks_settings_menu() ...@@ -3725,8 +3886,7 @@ winetricks_settings_menu()
;; ;;
esac > "$WINETRICKS_WORKDIR"/zenity.sh esac > "$WINETRICKS_WORKDIR"/zenity.sh
for metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars for metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars; do
do
code=$(winetricks_metadata_basename "$metadatafile") code=$(winetricks_metadata_basename "$metadatafile")
( (
title='?' title='?'
...@@ -3940,8 +4100,7 @@ winetricks_showmenu() ...@@ -3940,8 +4100,7 @@ winetricks_showmenu()
true > "$WINETRICKS_WORKDIR"/installed.txt true > "$WINETRICKS_WORKDIR"/installed.txt
for metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars for metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars; do
do
code=$(winetricks_metadata_basename "$metadatafile") code=$(winetricks_metadata_basename "$metadatafile")
( (
title='?' title='?'
...@@ -4073,8 +4232,7 @@ winetricks_is_installed() ...@@ -4073,8 +4232,7 @@ winetricks_is_installed()
# so let it specify multiple, separated by | # so let it specify multiple, separated by |
_W_IFS="$IFS" _W_IFS="$IFS"
IFS='|' IFS='|'
for _W_file_ in $_W_file for _W_file_ in $_W_file; do
do
_W_file_unix="$(WINEPREFIX="$_W_prefix" w_pathconv -u "$_W_file_")" _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 if test -f "$_W_file_unix" && ! grep -q "Wine placeholder DLL" "$_W_file_unix"; then
IFS="$_W_IFS" IFS="$_W_IFS"
...@@ -4093,8 +4251,7 @@ winetricks_is_installed() ...@@ -4093,8 +4251,7 @@ winetricks_is_installed()
# List verbs which are already fully cached locally # List verbs which are already fully cached locally
winetricks_list_cached() winetricks_list_cached()
{ {
for _W_metadatafile in "$WINETRICKS_METADATA"/*/*.vars for _W_metadatafile in "$WINETRICKS_METADATA"/*/*.vars; do
do
# Use a subshell to avoid putting metadata in global space # Use a subshell to avoid putting metadata in global space
# If this is too slow, we can unset known metadata by hand # If this is too slow, we can unset known metadata by hand
( (
...@@ -4165,8 +4322,7 @@ winetricks_list_all() ...@@ -4165,8 +4322,7 @@ winetricks_list_all()
*) _W_cached="cached" ; _W_download="downloadable" ;; *) _W_cached="cached" ; _W_download="downloadable" ;;
esac esac
for _W_metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars for _W_metadatafile in "$WINETRICKS_METADATA/$WINETRICKS_CURMENU"/*.vars; do
do
# Use a subshell to avoid putting metadata in global space # Use a subshell to avoid putting metadata in global space
# If this is too slow, we can unset known metadata by hand # If this is too slow, we can unset known metadata by hand
( (
...@@ -4346,8 +4502,7 @@ winetricks_detect_optical_drive() ...@@ -4346,8 +4502,7 @@ winetricks_detect_optical_drive()
*) return ;; *) return ;;
esac esac
for WINETRICKS_DEV in /dev/cdrom /dev/dvd /dev/sr0 for WINETRICKS_DEV in /dev/cdrom /dev/dvd /dev/sr0; do
do
test -b $WINETRICKS_DEV && break test -b $WINETRICKS_DEV && break
done done
...@@ -4373,12 +4528,10 @@ winetricks_cache_iso() ...@@ -4373,12 +4528,10 @@ winetricks_cache_iso()
esac esac
fi fi
while true while true; do
do
# Wait for user to insert disc. # Wait for user to insert disc.
# Sleep long to make it less likely to close the drive during insertion. # Sleep long to make it less likely to close the drive during insertion.
while ! dd if=$WINETRICKS_DEV of=/dev/null count=1 while ! dd if=$WINETRICKS_DEV of=/dev/null count=1; do
do
sleep 5 sleep 5
done done
...@@ -4428,15 +4581,13 @@ winetricks_cache_iso() ...@@ -4428,15 +4581,13 @@ winetricks_cache_iso()
# FIXME: add progress bar for kde, too # FIXME: add progress bar for kde, too
case $WINETRICKS_GUI in case $WINETRICKS_GUI in
none|kdialog) none|kdialog)
while ps -p "$WINETRICKS_DD_PID" > /dev/null 2>&1 while ps -p "$WINETRICKS_DD_PID" > /dev/null 2>&1; do
do
sleep 5 sleep 5
ls -l "$W_CACHE"/temp.iso ls -l "$W_CACHE"/temp.iso
done done
;; ;;
zenity) zenity)
while ps -p "$WINETRICKS_DD_PID" > /dev/null 2>&1 while ps -p "$WINETRICKS_DD_PID" > /dev/null 2>&1; do
do
echo 1 echo 1
sleep 2 sleep 2
done | $WINETRICKS_GUI --title "Copying to $_W_expected_volname.iso" --progress --pulsate --auto-kill done | $WINETRICKS_GUI --title "Copying to $_W_expected_volname.iso" --progress --pulsate --auto-kill
...@@ -4497,10 +4648,8 @@ winetricks_mount_cached_iso() ...@@ -4497,10 +4648,8 @@ winetricks_mount_cached_iso()
w_try vcdmount.exe /l="$letter" "$my_img_win" w_try vcdmount.exe /l="$letter" "$my_img_win"
tries=0 tries=0
while test $tries -lt 20 while test $tries -lt 20; do
do for W_ISO_MOUNT_LETTER in e f g h i j k; do
for W_ISO_MOUNT_LETTER in e f g h i j k
do
# let user blacklist drive letters # let user blacklist drive letters
echo "$WINETRICKS_MOUNT_LETTER_IGNORE" | grep -q "$W_ISO_MOUNT_LETTER" && continue echo "$WINETRICKS_MOUNT_LETTER_IGNORE" | grep -q "$W_ISO_MOUNT_LETTER" && continue
W_ISO_MOUNT_ROOT=/cygdrive/$W_ISO_MOUNT_LETTER W_ISO_MOUNT_ROOT=/cygdrive/$W_ISO_MOUNT_LETTER
...@@ -4635,8 +4784,7 @@ winetricks_is_mounted() ...@@ -4635,8 +4784,7 @@ winetricks_is_mounted()
# If that fails, read volume name the hard way for each volume # If that fails, read volume name the hard way for each volume
# Have to use file to return results from implicit subshell # Have to use file to return results from implicit subshell
rm -f "$W_TMP_EARLY/_W_tmp.$LOGNAME" rm -f "$W_TMP_EARLY/_W_tmp.$LOGNAME"
winetricks_list_mounts . | while true winetricks_list_mounts . | while true; do
do
IFS= read -r _W_tmp IFS= read -r _W_tmp
_W_dev=$(echo "$_W_tmp" | sed 's/ .*//') _W_dev=$(echo "$_W_tmp" | sed 's/ .*//')
...@@ -4685,8 +4833,7 @@ winetricks_mount_real_volume() ...@@ -4685,8 +4833,7 @@ winetricks_mount_real_volume()
W_ISO_MOUNT_LETTER=$(awk '/iso/ {print $1}' < /proc/mounts | tr -d :) W_ISO_MOUNT_LETTER=$(awk '/iso/ {print $1}' < /proc/mounts | tr -d :)
W_ISO_MOUNT_ROOT=$(awk '/iso/ {print $2}' < /proc/mounts) W_ISO_MOUNT_ROOT=$(awk '/iso/ {print $2}' < /proc/mounts)
else else
while ! winetricks_is_mounted "$_W_expected_volname" while ! winetricks_is_mounted "$_W_expected_volname"; do
do
w_try w_warn_cancel "$_W_mountmsg" w_try w_warn_cancel "$_W_mountmsg"
# In non-gui case, give user two seconds to futz with disc drive before spamming him again # In non-gui case, give user two seconds to futz with disc drive before spamming him again
sleep 2 sleep 2
...@@ -4722,6 +4869,7 @@ winetricks_cleanup() ...@@ -4722,6 +4869,7 @@ winetricks_cleanup()
test "$W_OPT_NOCLEAN" = 1 || rm -rf "$WINETRICKS_WORKDIR" 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): # 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 "$W_TMP_EARLY"
test "$W_OPT_NOCLEAN" = 1 || rm -rf "$WINEPREFIX"/wrapper.cfg
} }
winetricks_set_unattended() winetricks_set_unattended()
...@@ -4834,10 +4982,9 @@ winetricks_set_wineprefix() ...@@ -4834,10 +4982,9 @@ winetricks_set_wineprefix()
"windows_cmd|wine_cmd") W_CACHE_WIN="$(w_pathconv -w "$W_CACHE")" ;; "windows_cmd|wine_cmd") W_CACHE_WIN="$(w_pathconv -w "$W_CACHE")" ;;
*) *)
# For case where Z: doesn't exist or / is writable (!), # 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" 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 for letter in y x w v u t s r q p o n m; do
do
if ! test -d "$WINEPREFIX"/dosdevices/${letter}:; then if ! test -d "$WINEPREFIX"/dosdevices/${letter}:; then
mkdir -p "$WINEPREFIX"/dosdevices mkdir -p "$WINEPREFIX"/dosdevices
WINETRICKS_CACHE_SYMLINK="$WINEPREFIX"/dosdevices/${letter}: WINETRICKS_CACHE_SYMLINK="$WINEPREFIX"/dosdevices/${letter}:
...@@ -4968,7 +5115,7 @@ winetricks_annihilate_wineprefix() ...@@ -4968,7 +5115,7 @@ winetricks_annihilate_wineprefix()
rm -rf "$WINEPREFIX" rm -rf "$WINEPREFIX"
# Also remove menu items. # 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. # Also remove desktop items.
# Desktop might be synonym for home directory, so only go one level # Desktop might be synonym for home directory, so only go one level
...@@ -5012,8 +5159,7 @@ winetricks_init() ...@@ -5012,8 +5159,7 @@ winetricks_init()
# The list of categories is also hardcoded in winetricks_mainmenu() :-( # The list of categories is also hardcoded in winetricks_mainmenu() :-(
WINETRICKS_CATEGORIES="apps benchmarks dlls fonts games settings mkprefix" WINETRICKS_CATEGORIES="apps benchmarks dlls fonts games settings mkprefix"
for _W_cat in $WINETRICKS_CATEGORIES for _W_cat in $WINETRICKS_CATEGORIES; do
do
mkdir -p "$WINETRICKS_METADATA/$_W_cat" mkdir -p "$WINETRICKS_METADATA/$_W_cat"
done done
...@@ -5033,8 +5179,6 @@ winetricks_init() ...@@ -5033,8 +5179,6 @@ winetricks_init()
# whether to use shared wineprefix (1) or unique wineprefix for each app (0) # whether to use shared wineprefix (1) or unique wineprefix for each app (0)
WINETRICKS_OPT_SHAREDPREFIX=${WINETRICKS_OPT_SHAREDPREFIX:-0} WINETRICKS_OPT_SHAREDPREFIX=${WINETRICKS_OPT_SHAREDPREFIX:-0}
WINETRICKS_SOURCEFORGE=https://downloads.sourceforge.net
winetricks_get_sha256sum_prog winetricks_get_sha256sum_prog
winetricks_get_platform winetricks_get_platform
...@@ -5092,6 +5236,29 @@ winetricks_init() ...@@ -5092,6 +5236,29 @@ winetricks_init()
W_TASKSET="" W_TASKSET=""
fi 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 # System-specific variables
case "$W_PLATFORM" in case "$W_PLATFORM" in
windows_cmd) windows_cmd)
...@@ -5124,8 +5291,8 @@ winetricks_init() ...@@ -5124,8 +5291,8 @@ winetricks_init()
/usr/lib/i386-linux-gnu/wine-development/wineserver \ /usr/lib/i386-linux-gnu/wine-development/wineserver \
/usr/lib/powerpc-linux-gnu/wine-development/wineserver \ /usr/lib/powerpc-linux-gnu/wine-development/wineserver \
/usr/lib/x86_64-linux-gnu/wine-development/wineserver \ /usr/lib/x86_64-linux-gnu/wine-development/wineserver \
file-not-found file-not-found; do
do
if test -x "$x"; then if test -x "$x"; then
case "$x" in case "$x" in
/usr/lib/*/wine-development/wineserver|/usr/bin/wineserver-development) /usr/lib/*/wine-development/wineserver|/usr/bin/wineserver-development)
...@@ -5156,16 +5323,6 @@ winetricks_init() ...@@ -5156,16 +5323,6 @@ winetricks_init()
;; ;;
esac 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_WINE_VERSION=${WINETRICKS_WINE_VERSION:-$(winetricks_early_wine --version | sed 's/.*wine/wine/')}
WINETRICKS_ORIG_WINE_VERSION="${WINETRICKS_WINE_VERSION}" WINETRICKS_ORIG_WINE_VERSION="${WINETRICKS_WINE_VERSION}"
...@@ -5184,11 +5341,11 @@ winetricks_init() ...@@ -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" w_warn "Your version of wine $_wine_version_stripped is no longer supported upstream. You should upgrade to 4.x"
fi fi
winetricks_set_wineprefix "$1"
if [ -z "$WINETRICKS_SUPER_QUIET" ] ; then if [ -z "$WINETRICKS_SUPER_QUIET" ] ; then
echo "Using winetricks $(winetricks_print_version) with ${WINETRICKS_ORIG_WINE_VERSION} and WINEARCH=${W_ARCH}" echo "Using winetricks $(winetricks_print_version) with ${WINETRICKS_ORIG_WINE_VERSION} and WINEARCH=${W_ARCH}"
fi fi
winetricks_latest_version_check
} }
winetricks_usage() winetricks_usage()
...@@ -5261,7 +5418,7 @@ Executes given verbs. Each verb installs an application or changes a setting. ...@@ -5261,7 +5418,7 @@ Executes given verbs. Each verb installs an application or changes a setting.
Options: Options:
--country=CC Set country code to CC and don't detect your IP address --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 --gui Show gui diagnostics even when driven by commandline
--isolate Install each app or game in its own bottle (WINEPREFIX) --isolate Install each app or game in its own bottle (WINEPREFIX)
--self-update Update this application to the last version --self-update Update this application to the last version
...@@ -5302,7 +5459,7 @@ winetricks_handle_option() ...@@ -5302,7 +5459,7 @@ winetricks_handle_option()
{ {
case "$1" in case "$1" in
--country=*) W_COUNTRY="${1##--country=}" ;; --country=*) W_COUNTRY="${1##--country=}" ;;
--force) WINETRICKS_FORCE=1;; -f|--force) WINETRICKS_FORCE=1;;
--gui) winetricks_detect_gui;; --gui) winetricks_detect_gui;;
-h|--help) winetricks_usage ; exit 0 ;; -h|--help) winetricks_usage ; exit 0 ;;
--isolate) WINETRICKS_OPT_SHAREDPREFIX=0 ;; --isolate) WINETRICKS_OPT_SHAREDPREFIX=0 ;;
...@@ -5331,8 +5488,7 @@ winetricks_handle_option() ...@@ -5331,8 +5488,7 @@ winetricks_handle_option()
[ -w "$W_TMP_EARLY" ] || w_die "temporary directory: '$W_TMP_EARLY' ; is not user writeable" [ -w "$W_TMP_EARLY" ] || w_die "temporary directory: '$W_TMP_EARLY' ; is not user writeable"
# Must initialize variables before calling w_metadata # Must initialize variables before calling w_metadata
if ! test "$WINETRICKS_LIB" if ! test "$WINETRICKS_LIB"; then
then
WINETRICKS_SRCDIR=$(dirname "$0") WINETRICKS_SRCDIR=$(dirname "$0")
WINETRICKS_SRCDIR=$(w_try_cd "$WINETRICKS_SRCDIR"; pwd) WINETRICKS_SRCDIR=$(w_try_cd "$WINETRICKS_SRCDIR"; pwd)
...@@ -5342,11 +5498,17 @@ then ...@@ -5342,11 +5498,17 @@ then
WINETRICKS_OPT_SHAREDPREFIX=${WINETRICKS_OPT_SHAREDPREFIX:-1} WINETRICKS_OPT_SHAREDPREFIX=${WINETRICKS_OPT_SHAREDPREFIX:-1}
# Handle options before init, to avoid starting wine for --help or --version # Handle options before init, to avoid starting wine for --help or --version
while winetricks_handle_option "$1" while winetricks_handle_option "$1"; do
do
shift shift
done 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 # 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() # 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 # 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() ...@@ -5416,16 +5578,14 @@ helper_d3dx9_xx()
# Even kinder, less invasive directx - only extract and override d3dx9_xx.dll # 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 w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x"
done done
if test "$W_ARCH" = "win64"; then if test "$W_ARCH" = "win64"; then
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*x64.cab for x in "$W_TMP"/*x64.cab; do
do
w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x"
done done
fi fi
...@@ -5590,7 +5750,9 @@ w_metadata art2kmin dlls \ ...@@ -5590,7 +5750,9 @@ w_metadata art2kmin dlls \
load_art2kmin() load_art2kmin()
{ {
# See https://www.microsoft.com/en-us/download/details.aspx?id=4438 # 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_cd "$W_CACHE/$W_PACKAGE"
w_try "$WINE" AccessRuntime.exe $W_UNATTENDED_SLASH_Q w_try "$WINE" AccessRuntime.exe $W_UNATTENDED_SLASH_Q
} }
...@@ -5709,9 +5871,9 @@ load_comctl32() ...@@ -5709,9 +5871,9 @@ load_comctl32()
# 2011/01/17: https://www.microsoft.com/en-us/download/details.aspx?id=14672 # 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 # 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 # 2016/01/07: w_download ftp://ftp.ie.debian.org/disk1/download.sourceforge.net/pub/sourceforge/p/po/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe
# 2017/03/12: w_download $WINETRICKS_SOURCEFORGE/project/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe # 2017/03/12: w_download https://downloads.sourceforge.net/project/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe
w_download $WINETRICKS_SOURCEFORGE/project/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe d68c0cca721870aed39f5f2efd80dfb74f3db66d5f9a49e7578b18279edfa4a7 w_download https://downloads.sourceforge.net/project/pocmin/Win%2095_98%20Controls/Win%2095_98%20Controls/CC32inst.exe d68c0cca721870aed39f5f2efd80dfb74f3db66d5f9a49e7578b18279edfa4a7
w_try "$WINE" "$W_CACHE"/comctl32/cc32inst.exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q w_try "$WINE" "$W_CACHE"/comctl32/cc32inst.exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q
w_try_unzip "$W_TMP" "$W_TMP"/comctl32.exe w_try_unzip "$W_TMP" "$W_TMP"/comctl32.exe
...@@ -5825,14 +5987,12 @@ load_d3dcompiler_42() ...@@ -5825,14 +5987,12 @@ load_d3dcompiler_42()
helper_directx_Jun2010 helper_directx_Jun2010
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x"
done done
if test "$W_ARCH" = "win64"; then if test "$W_ARCH" = "win64"; then
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*x64.cab for x in "$W_TMP"/*x64.cab; do
do
w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x"
done done
fi fi
...@@ -5861,14 +6021,12 @@ load_d3dcompiler_43() ...@@ -5861,14 +6021,12 @@ load_d3dcompiler_43()
helper_directx_Jun2010 helper_directx_Jun2010
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x"
done done
if test "$W_ARCH" = "win64"; then if test "$W_ARCH" = "win64"; then
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*x64.cab for x in "$W_TMP"/*x64.cab; do
do
w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x"
done done
fi fi
...@@ -5939,14 +6097,12 @@ load_d3dx9() ...@@ -5939,14 +6097,12 @@ load_d3dx9()
# Kinder, less invasive directx - only extract and override d3dx9_??.dll # 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 w_try_cabextract -d "$W_TMP" -L -F '*d3dx9*x86*' "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'd3dx9*.dll' "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'd3dx9*.dll' "$x"
done done
if test "$W_ARCH" = "win64"; then if test "$W_ARCH" = "win64"; then
w_try_cabextract -d "$W_TMP" -L -F '*d3dx9*x64*' "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F '*d3dx9*x64*' "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*x64.cab for x in "$W_TMP"/*x64.cab; do
do
w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'd3dx9*.dll' "$x" w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'd3dx9*.dll' "$x"
done done
fi fi
...@@ -6274,14 +6430,12 @@ load_d3dx11_42() ...@@ -6274,14 +6430,12 @@ load_d3dx11_42()
helper_directx_Jun2010 helper_directx_Jun2010
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x"
done done
if test "$W_ARCH" = "win64"; then if test "$W_ARCH" = "win64"; then
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*x64.cab for x in "$W_TMP"/*x64.cab; do
do
w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x"
done done
fi fi
...@@ -6306,14 +6460,12 @@ load_d3dx11_43() ...@@ -6306,14 +6460,12 @@ load_d3dx11_43()
helper_directx_Jun2010 helper_directx_Jun2010
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x"
done done
if test "$W_ARCH" = "win64"; then if test "$W_ARCH" = "win64"; then
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*x64.cab for x in "$W_TMP"/*x64.cab; do
do
w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x"
done done
fi fi
...@@ -6337,14 +6489,12 @@ load_d3dx10() ...@@ -6337,14 +6489,12 @@ load_d3dx10()
# Kinder, less invasive directx10 - only extract and override d3dx10_??.dll # 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 w_try_cabextract -d "$W_TMP" -L -F '*d3dx10*x86*' "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'd3dx10*.dll' "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'd3dx10*.dll' "$x"
done done
if test "$W_ARCH" = "win64"; then if test "$W_ARCH" = "win64"; then
w_try_cabextract -d "$W_TMP" -L -F '*d3dx10*x64*' "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F '*d3dx10*x64*' "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*x64.cab for x in "$W_TMP"/*x64.cab; do
do
w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'd3dx10*.dll' "$x" w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'd3dx10*.dll' "$x"
done done
fi fi
...@@ -6371,14 +6521,12 @@ load_d3dx10_43() ...@@ -6371,14 +6521,12 @@ load_d3dx10_43()
helper_directx_Jun2010 helper_directx_Jun2010
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x"
done done
if test "$W_ARCH" = "win64"; then if test "$W_ARCH" = "win64"; then
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x64*" "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*x64.cab for x in "$W_TMP"/*x64.cab; do
do
w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x" w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F "$dllname.dll" "$x"
done done
fi fi
...@@ -6602,8 +6750,7 @@ load_dpvoice() ...@@ -6602,8 +6750,7 @@ load_dpvoice()
helper_directx_dl helper_directx_dl
w_try_cabextract -d "$W_TMP" -L -F 'dxnt.cab' "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F 'dxnt.cab' "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dpvoice.dll' "$x" 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 'dpvvox.dll' "$x"
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dpvacm.dll' "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dpvacm.dll' "$x"
...@@ -6694,10 +6841,9 @@ helper_dxvk_d9vk() ...@@ -6694,10 +6841,9 @@ helper_dxvk_d9vk()
_W_dll_overrides="$(echo "${4}" | sed 's/,/ /g')" _W_dll_overrides="$(echo "${4}" | sed 's/,/ /g')"
_W_supported_overrides="dxgi d3d9 d3d10 d3d11" _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}" | awk -vvalid_overrides_regex="$(echo "${_W_supported_overrides}" | sed 's/ /|/g')" '{ gsub(valid_overrides_regex,""); sub("[ ]*",""); print $0 }')"
_W_invalid_overrides="$(echo "${_W_dll_overrides}" | sed "s/ ${_W_valid_overrides_regex}//g")"
if [ "${_W_invalid_overrides}" != "" ]; then 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 fi
_W_dll_overrides="$(echo "${_W_dll_overrides}" | sed 's/d3d10/& d3d10_1 d3d10core/')" _W_dll_overrides="$(echo "${_W_dll_overrides}" | sed 's/d3d10/& d3d10_1 d3d10core/')"
...@@ -6756,7 +6902,7 @@ helper_dxvk_d9vk() ...@@ -6756,7 +6902,7 @@ helper_dxvk_d9vk()
unset _W_dll _W_dll_overrides _W_invalid_overrides _W_min_vulkan_version _W_min_wine_version \ 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_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() ...@@ -6882,6 +7028,110 @@ load_d9vk020()
helper_dxvk_d9vk "$file1" "4.5" "1.1.104" "dxgi,d3d9,d3d10,d3d11" 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() ...@@ -7442,8 +7692,7 @@ load_dxvk130()
{ {
# https://github.com/doitsujin/dxvk # https://github.com/doitsujin/dxvk
w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3/dxvk-1.3.tar.gz" d15fac6503ea614986237052d554d7cbd2dbf5f3486feb6217e64bae83cfc2cf 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.20" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
} }
w_metadata dxvk131 dlls \ w_metadata dxvk131 dlls \
...@@ -7462,8 +7711,7 @@ load_dxvk131() ...@@ -7462,8 +7711,7 @@ load_dxvk131()
{ {
# https://github.com/doitsujin/dxvk # https://github.com/doitsujin/dxvk
w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3.1/dxvk-1.3.1.tar.gz" 2f6636dbd591ea9de20b30a33c9c8c0985a4939f6503f90ca5c7edafd01524a3 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.20" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
} }
w_metadata dxvk132 dlls \ w_metadata dxvk132 dlls \
...@@ -7482,8 +7730,7 @@ load_dxvk132() ...@@ -7482,8 +7730,7 @@ load_dxvk132()
{ {
# https://github.com/doitsujin/dxvk # https://github.com/doitsujin/dxvk
w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3.2/dxvk-1.3.2.tar.gz" aa70890a17b48be27648d15cb837b5167c99f75ee32ae0c94a85ec1f1fdc4675 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.20" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
} }
w_metadata dxvk133 dlls \ w_metadata dxvk133 dlls \
...@@ -7502,8 +7749,7 @@ load_dxvk133() ...@@ -7502,8 +7749,7 @@ load_dxvk133()
{ {
# https://github.com/doitsujin/dxvk # https://github.com/doitsujin/dxvk
w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3.3/dxvk-1.3.3.tar.gz" 828171ad1dbb6b51f367fa46cf33f8db4a0b1b990cd2e95654d6a65500d230b7 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.20" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
} }
w_metadata dxvk134 dlls \ w_metadata dxvk134 dlls \
...@@ -7522,8 +7768,142 @@ load_dxvk134() ...@@ -7522,8 +7768,142 @@ load_dxvk134()
{ {
# https://github.com/doitsujin/dxvk # https://github.com/doitsujin/dxvk
w_download "https://github.com/doitsujin/dxvk/releases/download/v1.3.4/dxvk-1.3.4.tar.gz" 4683e2ad4221b16572b0d939da5a05ab9a16b2b62c2f4e0c8bf3b2cdb27918ff 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.20" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "$file1" "4.5" "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() ...@@ -7546,8 +7926,7 @@ load_dxvk()
_W_dxvk_version="$(w_get_github_latest_release doitsujin dxvk)" _W_dxvk_version="$(w_get_github_latest_release doitsujin dxvk)"
_W_dxvk_version="${_W_dxvk_version#v}" _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" 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.20" "1.1.113" "dxgi,d3d10,d3d11"
helper_dxvk_d9vk "dxvk-${_W_dxvk_version}.tar.gz" "4.5" "1.1.113" "dxgi,d3d10,d3d11"
unset _W_dxvk_version unset _W_dxvk_version
} }
...@@ -7783,7 +8162,7 @@ load_dotnet11() ...@@ -7783,7 +8162,7 @@ load_dotnet11()
w_call corefonts w_call corefonts
w_call fontfix 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 # Use builtin regsvcs.exe to work around https://bugs.winehq.org/show_bug.cgi?id=25120
if test $W_OPT_UNATTENDED; then if test $W_OPT_UNATTENDED; then
WINEDLLOVERRIDES="regsvcs.exe=b" w_ahk_do " WINEDLLOVERRIDES="regsvcs.exe=b" w_ahk_do "
...@@ -7838,7 +8217,7 @@ load_dotnet11sp1() ...@@ -7838,7 +8217,7 @@ load_dotnet11sp1()
w_call remove_mono w_call remove_mono
w_call dotnet11 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 # Use builtin regsvcs.exe to work around https://bugs.winehq.org/show_bug.cgi?id=25120
if test $W_OPT_UNATTENDED; then if test $W_OPT_UNATTENDED; then
WINEDLLOVERRIDES="regsvcs.exe=b" w_ahk_do " WINEDLLOVERRIDES="regsvcs.exe=b" w_ahk_do "
...@@ -7934,7 +8313,7 @@ load_dotnet20() ...@@ -7934,7 +8313,7 @@ load_dotnet20()
*) w_die "exit status $status - $W_PACKAGE installation failed" ;; *) w_die "exit status $status - $W_PACKAGE installation failed" ;;
esac esac
w_unset_winver w_set_winver 'default'
# We can't stop installing dotnet20 in win2k mode until Wine supports # We can't stop installing dotnet20 in win2k mode until Wine supports
# reparse/junction points # reparse/junction points
...@@ -8045,8 +8424,17 @@ load_dotnet20sp1() ...@@ -8045,8 +8424,17 @@ load_dotnet20sp1()
{ {
w_call remove_mono w_call remove_mono
WINEDLLOVERRIDES=ngen.exe,regsvcs.exe,mscorsvw.exe=b # Not sure when exactly it was fixed, but it works with 4.0+, and doesn't in 3.0
export WINEDLLOVERRIDES # 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 if [ "$W_ARCH" = "win32" ]; then
# https://www.microsoft.com/en-us/download/details.aspx?id=16614 # https://www.microsoft.com/en-us/download/details.aspx?id=16614
...@@ -8086,7 +8474,7 @@ load_dotnet20sp1() ...@@ -8086,7 +8474,7 @@ load_dotnet20sp1()
fi fi
w_unset_winver w_set_winver 'default'
W_NGEN_CMD="w_try $WINE $W_DRIVE_C/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe executequeueditems" W_NGEN_CMD="w_try $WINE $W_DRIVE_C/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe executequeueditems"
...@@ -8114,9 +8502,17 @@ load_dotnet20sp2() ...@@ -8114,9 +8502,17 @@ load_dotnet20sp2()
{ {
w_call remove_mono w_call remove_mono
WINEDLLOVERRIDES=ngen.exe,regsvcs.exe,mscorsvw.exe=b # Not sure when exactly it was fixed, but it works with 4.0+, and doesn't in 3.0
export WINEDLLOVERRIDES # 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_warn "Setting windows version so installer works"
w_set_winver winxp w_set_winver winxp
...@@ -8151,7 +8547,7 @@ load_dotnet20sp2() ...@@ -8151,7 +8547,7 @@ load_dotnet20sp2()
rm -f "$W_SYSTEM32_DLLS"/msvc?80.dll rm -f "$W_SYSTEM32_DLLS"/msvc?80.dll
fi fi
w_unset_winver w_set_winver 'default'
W_NGEN_CMD="w_try $WINE $W_DRIVE_C/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe executequeueditems" W_NGEN_CMD="w_try $WINE $W_DRIVE_C/windows/Microsoft.NET/Framework/v2.0.50727/ngen.exe executequeueditems"
} }
...@@ -8207,9 +8603,7 @@ load_dotnet30() ...@@ -8207,9 +8603,7 @@ load_dotnet30()
LANGPACKS_BASE_PATH="${W_WINDIR_UNIX}/SYSMSICache/Framework/v3.0" LANGPACKS_BASE_PATH="${W_WINDIR_UNIX}/SYSMSICache/Framework/v3.0"
test -d "${LANGPACKS_BASE_PATH}" || mkdir -p "${LANGPACKS_BASE_PATH}" test -d "${LANGPACKS_BASE_PATH}" || mkdir -p "${LANGPACKS_BASE_PATH}"
# shellcheck disable=SC1010 # 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 \ 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
sv tr zh-CHS zh-CHT
do
ln -sf "${W_SYSTEM32_DLLS}/spupdsvc.exe" "${LANGPACKS_BASE_PATH}/dotnetfx3langpack${lang}.exe" ln -sf "${W_SYSTEM32_DLLS}/spupdsvc.exe" "${LANGPACKS_BASE_PATH}/dotnetfx3langpack${lang}.exe"
done done
...@@ -8219,7 +8613,17 @@ load_dotnet30() ...@@ -8219,7 +8613,17 @@ load_dotnet30()
# OK if this fails, that just means you have an older Wine. # OK if this fails, that just means you have an older Wine.
"$WINE" sc delete "FontCache3.0.0.0" "$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_try_cd "$W_CACHE/$W_PACKAGE"
w_warn "Installing .NET 3.0 runtime silently, as otherwise it gets hidden behind taskbar. Installation usually takes about 3 minutes." w_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() ...@@ -8250,6 +8654,12 @@ load_dotnet30sp1()
# I can't find a 64-bit installer anywhere # I can't find a 64-bit installer anywhere
w_package_unsupported_win64 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? # FIXME: URL?
w_download https://download.microsoft.com/download/8/F/E/8FEEE89D-9E4F-4BA3-993E-0FFEA8E21E1B/NetFx30SP1_x86.exe 3100df4d4db3965ead9520c887a534115cf6fc7ba100abde45226958b865695b 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 # Recipe from https://bugs.winehq.org/show_bug.cgi?id=25060#c10
...@@ -8285,7 +8695,7 @@ load_dotnet30sp1() ...@@ -8285,7 +8695,7 @@ load_dotnet30sp1()
*) w_die "exit status $status - $W_PACKAGE installation failed" ;; *) w_die "exit status $status - $W_PACKAGE installation failed" ;;
esac esac
w_unset_winver w_set_winver 'default'
# Doesn't install any ngen.exe # Doesn't install any ngen.exe
# W_NGEN_CMD="" # W_NGEN_CMD=""
...@@ -8443,7 +8853,7 @@ load_dotnet40() ...@@ -8443,7 +8853,7 @@ load_dotnet40()
W_NGEN_CMD="$WINE $WINEPREFIX/drive_c/windows/Microsoft.NET/Framework/v4.0.30319/ngen.exe executequeueditems" 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() verify_dotnet40()
...@@ -9318,6 +9728,38 @@ load_galliumnine03() ...@@ -9318,6 +9728,38 @@ load_galliumnine03()
helper_galliumnine "$file1" 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 \ w_metadata galliumnine dlls \
title="Gallium Nine Standalone (latest)" \ title="Gallium Nine Standalone (latest)" \
publisher="Gallium Nine Team" \ publisher="Gallium Nine Team" \
...@@ -9516,7 +9958,7 @@ w_metadata dirac dlls \ ...@@ -9516,7 +9958,7 @@ w_metadata dirac dlls \
load_dirac() 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.) # Avoid mfc90 not found error. (DiracSplitter-libschroedinger.ax needs mfc90 to register itself, I think.)
w_call vcrun2008 w_call vcrun2008
...@@ -9561,7 +10003,7 @@ w_metadata ffdshow dlls \ ...@@ -9561,7 +10003,7 @@ w_metadata ffdshow dlls \
load_ffdshow() 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_cd "$W_CACHE/$W_PACKAGE"
w_try "$WINE" ffdshow_beta7_rev3154_20091209.exe $W_UNATTENDED_SLASH_SILENT w_try "$WINE" ffdshow_beta7_rev3154_20091209.exe $W_UNATTENDED_SLASH_SILENT
} }
...@@ -9690,8 +10132,7 @@ _EOF_ ...@@ -9690,8 +10132,7 @@ _EOF_
# Note, this leaves a dangling explorer window. # Note, this leaves a dangling explorer window.
# Wait for it to appear and kill it # Wait for it to appear and kill it
while ! inode_pid=$(pgrep -f "explorer.exe.*Indeo") while ! inode_pid=$(pgrep -f "explorer.exe.*Indeo"); do
do
sleep 1 sleep 1
done done
kill -HUP "$inode_pid" kill -HUP "$inode_pid"
...@@ -9857,7 +10298,7 @@ load_ie8_kb2936068() ...@@ -9857,7 +10298,7 @@ load_ie8_kb2936068()
*) w_die "$W_PACKAGE installation failed" *) w_die "$W_PACKAGE installation failed"
esac esac
w_unset_winver w_set_winver 'default'
} }
#---------------------------------------------------------------- #----------------------------------------------------------------
...@@ -9908,7 +10349,7 @@ load_mdac27() ...@@ -9908,7 +10349,7 @@ load_mdac27()
w_set_winver nt40 w_set_winver nt40
w_try_cd "${W_CACHE}/${W_PACKAGE}" w_try_cd "${W_CACHE}/${W_PACKAGE}"
w_try "$WINE" "${file1}" ${W_OPT_UNATTENDED:+ /q /C:"setup $W_UNATTENDED_SLASH_QNT"} 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 \ ...@@ -9923,18 +10364,13 @@ w_metadata mdac28 dlls \
load_mdac28() 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 # 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 w_download https://download.microsoft.com/download/4/a/a/4aafff19-9d21-4d35-ae81-02c48dcbbbff/MDAC_TYP.EXE 157ebae46932cb9047b58aa849ac1885e8cbd2f218810cb83e57613b49c679d6
load_native_mdac load_native_mdac
w_set_winver nt40 w_set_winver nt40
w_try_cd "$W_CACHE"/"$W_PACKAGE" w_try_cd "$W_CACHE"/"$W_PACKAGE"
w_try "$WINE" mdac_typ.exe ${W_OPT_UNATTENDED:+ /q /C:"setup $W_UNATTENDED_SLASH_QNT"} 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() ...@@ -9958,8 +10394,7 @@ load_mdx()
# Install assemblies # 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 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 for file in mdx_*.cab; do
do
ver="${file%%_x86.cab}" ver="${file%%_x86.cab}"
ver="${ver##mdx_}" ver="${ver##mdx_}"
w_try_cabextract -d "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code/$ver" -F "microsoft.directx*" "$file" w_try_cabextract -d "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code/$ver" -F "microsoft.directx*" "$file"
...@@ -9968,12 +10403,10 @@ load_mdx() ...@@ -9968,12 +10403,10 @@ load_mdx()
# Add them to GAC # Add them to GAC
w_try_cd "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code" w_try_cd "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code"
for ver in * for ver in *; do
do
( (
w_try_cd "$ver" w_try_cd "$ver"
for asm in *.dll for asm in *.dll; do
do
name="${asm%%.dll}" name="${asm%%.dll}"
w_try mkdir -p "$W_WINDIR_UNIX/assembly/GAC/$name/${ver}__31bf3856ad364e35" w_try mkdir -p "$W_WINDIR_UNIX/assembly/GAC/$name/${ver}__31bf3856ad364e35"
w_try cp "$asm" "$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 \ ...@@ -10053,13 +10486,13 @@ w_metadata mfc40 dlls \
load_mfc40() 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 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" 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 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_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() ...@@ -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 \ w_metadata msxml3 dlls \
title="MS XML Core Services 3.0" \ title="MS XML Core Services 3.0" \
publisher="Microsoft" \ publisher="Microsoft" \
...@@ -10582,7 +11033,7 @@ w_metadata python26 dlls \ ...@@ -10582,7 +11033,7 @@ w_metadata python26 dlls \
load_python26() load_python26()
{ {
w_download https://www.python.org/ftp/python/2.6.2/python-2.6.2.msi c2276b398864b822c25a7c240cb12ddb178962afd2e12d602f1a961e31ad52ff 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_cd "$W_CACHE/$W_PACKAGE"
w_try "$WINE" msiexec /i python-2.6.2.msi ALLUSERS=1 $W_UNATTENDED_SLASH_Q w_try "$WINE" msiexec /i python-2.6.2.msi ALLUSERS=1 $W_UNATTENDED_SLASH_Q
...@@ -10883,7 +11334,8 @@ load_riched30() ...@@ -10883,7 +11334,8 @@ load_riched30()
# with sha256sum 536e4c8385d7d250fd5702a6868d1ed004692136eefad22252d0dac15f02563a # with sha256sum 536e4c8385d7d250fd5702a6868d1ed004692136eefad22252d0dac15f02563a
# Mirror list at http://www.filewatcher.com/m/InstMsiA.Exe.1707856-0.html # Mirror list at http://www.filewatcher.com/m/InstMsiA.Exe.1707856-0.html
# But they all have a different sha256sum, 5ab8b82f578f09dbccf797754155e531b5996b532c1f19c531596ec07cc4b46d # 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_cabextract --directory="$W_TMP" "$W_CACHE"/riched30/InstMsiA.exe
w_try cp -f "$W_TMP"/riched20.dll "$W_SYSTEM32_DLLS" w_try cp -f "$W_TMP"/riched20.dll "$W_SYSTEM32_DLLS"
...@@ -11028,7 +11480,7 @@ load_speechsdk() ...@@ -11028,7 +11480,7 @@ load_speechsdk()
w_override_dlls native sapi w_override_dlls native sapi
w_unset_winver w_set_winver 'default'
} }
#---------------------------------------------------------------- #----------------------------------------------------------------
...@@ -11408,27 +11860,8 @@ load_vcrun2005() ...@@ -11408,27 +11860,8 @@ load_vcrun2005()
w_try "$WINE" "$file1" $W_UNATTENDED_SLASH_Q w_try "$WINE" "$file1" $W_UNATTENDED_SLASH_Q
if [ $W_ARCH = win64 ] ;then if [ $W_ARCH = win64 ] ;then
w_download https://download.microsoft.com/download/9/1/4/914851c6-9141-443b-bdb4-8bad3a57bea9/vcredist_x64.exe bb9e8606e26c2b76984252182f7db0d6e9108b204b81d2a7b036c9b618c1f9f1 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
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
fi fi
} }
...@@ -11632,7 +12065,7 @@ load_vcrun2015() ...@@ -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" w_warn "This may fail in non-XP mode, see https://bugs.winehq.org/show_bug.cgi?id=37781"
fi fi
w_override_dlls native,builtin api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcr140 ucrtbase vcomp140 vcruntime140 w_override_dlls native,builtin api-ms-win-crt-private-l1-1-0 api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcr140 ucrtbase vcomp140 vcruntime140
w_set_winver winxp w_set_winver winxp
...@@ -11696,7 +12129,7 @@ load_vcrun2017() ...@@ -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" w_warn "This may fail in non-XP mode, see https://bugs.winehq.org/show_bug.cgi?id=37781"
fi fi
w_override_dlls native,builtin api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcr140 ucrtbase vcomp140 vcruntime140 w_override_dlls native,builtin api-ms-win-crt-private-l1-1-0 api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcr140 ucrtbase vcomp140 vcruntime140
w_set_winver winxp w_set_winver winxp
...@@ -11894,7 +12327,7 @@ load_windowscodecs() ...@@ -11894,7 +12327,7 @@ load_windowscodecs()
w_try "$WINE" "$EXE" /passive w_try "$WINE" "$EXE" /passive
fi fi
w_unset_winver w_set_winver 'default'
} }
#---------------------------------------------------------------- #----------------------------------------------------------------
...@@ -11981,7 +12414,8 @@ load_wmi() ...@@ -11981,7 +12414,8 @@ load_wmi()
# Mirror list: https://filemare.com/en-us/search/wmi9x.exe/761569271 # 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 # 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 # 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_set_winver win98
w_override_dlls native,builtin wbemprox wmiutils w_override_dlls native,builtin wbemprox wmiutils
...@@ -11991,7 +12425,7 @@ load_wmi() ...@@ -11991,7 +12425,7 @@ load_wmi()
w_try "$WINE" wmi9x.exe $W_UNATTENDED_SLASH_S w_try "$WINE" wmi9x.exe $W_UNATTENDED_SLASH_S
w_killall "WinMgmt.exe" w_killall "WinMgmt.exe"
w_unset_winver w_set_winver 'default'
} }
#---------------------------------------------------------------- #----------------------------------------------------------------
...@@ -12149,14 +12583,12 @@ load_xinput() ...@@ -12149,14 +12583,12 @@ load_xinput()
helper_directx_Jun2010 helper_directx_Jun2010
w_try_cabextract -d "$W_TMP" -L -F '*_xinput_*x86*' "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F '*_xinput_*x86*' "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*.cab for x in "$W_TMP"/*.cab; do
do
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'xinput*.dll' "$x" w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'xinput*.dll' "$x"
done done
if test "$W_ARCH" = "win64"; then if test "$W_ARCH" = "win64"; then
w_try_cabextract -d "$W_TMP" -L -F '*_xinput_*x64*' "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_TMP" -L -F '*_xinput_*x64*' "$W_CACHE"/directx9/$DIRECTX_NAME
for x in "$W_TMP"/*x64.cab for x in "$W_TMP"/*x64.cab; do
do
w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'xinput*.dll' "$x" w_try_cabextract -d "$W_SYSTEM64_DLLS" -L -F 'xinput*.dll' "$x"
done done
fi fi
...@@ -13014,7 +13446,7 @@ w_metadata opensymbol fonts \ ...@@ -13014,7 +13446,7 @@ w_metadata opensymbol fonts \
publisher="OpenOffice.org" \ publisher="OpenOffice.org" \
year="2017" \ year="2017" \
media="download" \ 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" installed_file1="$W_FONTSDIR_WIN/opens___.ttf"
load_opensymbol() load_opensymbol()
...@@ -13022,8 +13454,7 @@ load_opensymbol() ...@@ -13022,8 +13454,7 @@ load_opensymbol()
# The OpenSymbol fonts are a replacement for the Windows Wingdings font from OpenOffice.org. # 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 # 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. # 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_cd "$W_TMP"
w_try_ar "$W_CACHE/$W_PACKAGE/$file1" data.tar.xz 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 w_try tar -Jxf "$W_TMP/data.tar.xz" ./usr/share/fonts/truetype/openoffice/opens___.ttf
...@@ -13192,8 +13623,7 @@ w_metadata allfonts fonts \ ...@@ -13192,8 +13623,7 @@ w_metadata allfonts fonts \
load_allfonts() load_allfonts()
{ {
# This verb uses reflection, should probably do it portably instead, but that would require keeping it up to date # 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 for file in "$WINETRICKS_METADATA"/fonts/*.vars; do
do
cmd=$(basename "$file" .vars) cmd=$(basename "$file" .vars)
case $cmd in case $cmd in
# "fake*" verbs need to be skipped because # "fake*" verbs need to be skipped because
...@@ -13738,13 +14168,11 @@ load_ie6() ...@@ -13738,13 +14168,11 @@ load_ie6()
{ {
w_package_unsupported_win64 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" w_try_cd "$W_TMP"
"$WINE" "$W_CACHE/$W_PACKAGE/$file1" "$WINE" "$W_CACHE/$W_PACKAGE/$file1"
w_call msls31
# Unregister Wine IE # Unregister Wine IE
if [ ! -f "$W_SYSTEM32_DLLS"/plugin.ocx ]; then if [ ! -f "$W_SYSTEM32_DLLS"/plugin.ocx ]; then
w_override_dlls builtin iexplore.exe w_override_dlls builtin iexplore.exe
...@@ -13756,8 +14184,7 @@ load_ie6() ...@@ -13756,8 +14184,7 @@ load_ie6()
# Remove the fake DLLs, if any # Remove the fake DLLs, if any
mv "$W_PROGRAMS_UNIX/Internet Explorer/iexplore.exe" "$W_PROGRAMS_UNIX/Internet Explorer/iexplore.exe.bak" 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 for dll in itircl itss jscript mlang mshtml msimtf shdoclc shdocvw shlwapi; do
do
test -f "$W_SYSTEM32_DLLS"/$dll.dll && test -f "$W_SYSTEM32_DLLS"/$dll.dll &&
mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak
done done
...@@ -13804,16 +14231,17 @@ load_ie6() ...@@ -13804,16 +14231,17 @@ load_ie6()
rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \ rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \
shdocvw.dll shell32.dll vbscript.dll webcheck.dll \ shdocvw.dll shell32.dll vbscript.dll webcheck.dll \
wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \ wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \
plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx; do
do
"$WINE" regsvr32 /i $i > /dev/null 2>&1 "$WINE" regsvr32 /i $i > /dev/null 2>&1
done done
# Set windows version back to user's default. Leave at win2k for better rendering (is there a bug for that?) # 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 # the ie6 we use these days lacks pngfilt, so grab that
w_call pngfilt w_call pngfilt
w_call msls31
} }
#---------------------------------------------------------------- #----------------------------------------------------------------
...@@ -13837,7 +14265,7 @@ load_ie7() ...@@ -13837,7 +14265,7 @@ load_ie7()
fi fi
# Change the override to the native so we are sure we use and register them # 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+ # 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 w_override_dlls native iexplore.exe
...@@ -13849,8 +14277,7 @@ load_ie7() ...@@ -13849,8 +14277,7 @@ load_ie7()
if [ -f "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe" ]; then 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" mv "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe" "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe.bak"
fi fi
for dll in itircl itss jscript mshtml msimtf shdoclc shdocvw shlwapi urlmon for dll in itircl itss jscript mshtml msimtf shdoclc shdocvw shlwapi urlmon; do
do
test -f "$W_SYSTEM32_DLLS"/$dll.dll && test -f "$W_SYSTEM32_DLLS"/$dll.dll &&
mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak
done done
...@@ -13906,8 +14333,7 @@ load_ie7() ...@@ -13906,8 +14333,7 @@ load_ie7()
rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \ rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \
shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \ shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \
wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \ wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \
plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx; do
do
"$WINE" regsvr32 /i $i > /dev/null 2>&1 "$WINE" regsvr32 /i $i > /dev/null 2>&1
done done
...@@ -13957,7 +14383,7 @@ load_ie8() ...@@ -13957,7 +14383,7 @@ load_ie8()
w_call msls31 w_call msls31
# Change the override to the native so we are sure we use and register them # 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+ # 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 w_override_dlls native iexplore.exe
...@@ -13969,8 +14395,7 @@ load_ie8() ...@@ -13969,8 +14395,7 @@ load_ie8()
if [ -f "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe" ]; then 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" mv "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe" "$W_PROGRAMS_X86_UNIX/Internet Explorer/iexplore.exe.bak"
fi fi
for dll in browseui inseng itircl itss jscript msctf mshtml shdoclc shdocvw shlwapi urlmon for dll in browseui inseng itircl itss jscript msctf mshtml shdoclc shdocvw shlwapi urlmon; do
do
test -f "$W_SYSTEM32_DLLS"/$dll.dll && test -f "$W_SYSTEM32_DLLS"/$dll.dll &&
mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak
done done
...@@ -14015,8 +14440,7 @@ load_ie8() ...@@ -14015,8 +14440,7 @@ load_ie8()
rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \ rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \
shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \ shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \
wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \ wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \
plugin.ocx proctexe.ocx tdc.ocx uxtheme.dll webcheck.dll wshom.ocx plugin.ocx proctexe.ocx tdc.ocx uxtheme.dll webcheck.dll wshom.ocx; do
do
"$WINE" regsvr32 /i $i > /dev/null 2>&1 "$WINE" regsvr32 /i $i > /dev/null 2>&1
done done
...@@ -14048,30 +14472,7 @@ _EOF_ ...@@ -14048,30 +14472,7 @@ _EOF_
;; ;;
esac esac
w_unset_winver w_set_winver 'default'
}
#----------------------------------------------------------------
w_metadata kde apps \
title="KDE on Windows" \
publisher="various" \
year="2013" \
media="download" \
file1="kdewin-installer-gui-1.0.0.exe" \
installed_exe1="$W_PROGRAMS_WIN/kde/etc/installer.ini" \
homepage="https://community.kde.org/Windows" \
unattended="no"
load_kde()
{
w_download 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}"
} }
#---------------------------------------------------------------- #----------------------------------------------------------------
...@@ -14138,7 +14539,7 @@ w_metadata mingw apps \ ...@@ -14138,7 +14539,7 @@ w_metadata mingw apps \
load_mingw() 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 if test "$W_OPT_UNATTENDED"; then
w_info "FYI: Quiet mode will install these mingw packages: 'gcc msys-base'" w_info "FYI: Quiet mode will install these mingw packages: 'gcc msys-base'"
...@@ -14207,7 +14608,7 @@ w_metadata mpc apps \ ...@@ -14207,7 +14608,7 @@ w_metadata mpc apps \
load_mpc() 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_cd "$W_CACHE/$W_PACKAGE"
w_try "$WINE" MPC-HC.1.7.5.x86.exe ${W_OPT_UNATTENDED:+ /VERYSILENT} w_try "$WINE" MPC-HC.1.7.5.x86.exe ${W_OPT_UNATTENDED:+ /VERYSILENT}
} }
...@@ -14375,14 +14776,14 @@ load_nook() ...@@ -14375,14 +14776,14 @@ load_nook()
w_metadata npp apps \ w_metadata npp apps \
title="Notepad++" \ title="Notepad++" \
publisher="Don Ho" \ publisher="Don Ho" \
year="2015" \ year="2019" \
media="download" \ 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" installed_exe1="$W_PROGRAMS_X86_WIN/Notepad++/notepad++.exe"
load_npp() 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_cd "$W_CACHE/$W_PACKAGE"
w_try "$WINE" "${file1}" $W_UNATTENDED_SLASH_S w_try "$WINE" "${file1}" $W_UNATTENDED_SLASH_S
} }
...@@ -15340,7 +15741,8 @@ load_winamp() ...@@ -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_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" w_try_cd "$W_CACHE/$W_PACKAGE"
if test $W_OPT_UNATTENDED; then if test $W_OPT_UNATTENDED; then
w_ahk_do " w_ahk_do "
...@@ -15463,7 +15865,7 @@ load_wmp9() ...@@ -15463,7 +15865,7 @@ load_wmp9()
load_wm9codecs load_wm9codecs
w_unset_winver w_set_winver 'default'
} }
#---------------------------------------------------------------- #----------------------------------------------------------------
...@@ -15480,6 +15882,8 @@ load_wmp10() ...@@ -15480,6 +15882,8 @@ load_wmp10()
{ {
w_package_unsupported_win64 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? # FIXME: what versions of Windows are really bundled with wmp10?
w_skip_windows wmp10 && return w_skip_windows wmp10 && return
...@@ -15507,7 +15911,7 @@ load_wmp10() ...@@ -15507,7 +15911,7 @@ load_wmp10()
load_wm9codecs load_wm9codecs
w_unset_winver w_set_winver 'default'
} }
#---------------------------------------------------------------- #----------------------------------------------------------------
...@@ -17522,8 +17926,7 @@ load_dragonage() ...@@ -17522,8 +17926,7 @@ load_dragonage()
" "
# Since the installer explodes on exit, just wait for the # Since the installer explodes on exit, just wait for the
# last file it's known to create # last file it's known to create
while ! test -f "$W_PROGRAMS_X86_UNIX/Dragon Age/bin_ship/DAOriginsLauncher-MCE.png" while ! test -f "$W_PROGRAMS_X86_UNIX/Dragon Age/bin_ship/DAOriginsLauncher-MCE.png"; do
do
w_info "Waiting for installer to finish..." w_info "Waiting for installer to finish..."
sleep 1 sleep 1
done done
...@@ -19474,8 +19877,7 @@ load_spore_cc_demo() ...@@ -19474,8 +19877,7 @@ load_spore_cc_demo()
send {SPACE}{DOWN}{SPACE}{ENTER} send {SPACE}{DOWN}{SPACE}{ENTER}
winwaitclose winwaitclose
" "
while pgrep -f "$file1" > /dev/null while pgrep -f "$file1" > /dev/null; do
do
w_info "Waiting for installer to finish." w_info "Waiting for installer to finish."
sleep 2 sleep 2
done done
...@@ -20959,16 +21361,17 @@ load_vsm() ...@@ -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)" 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" title="Prevent winedbg from launching when an unhandled exception occurs"
load_autostart_winedbg() load_autostart_winedbg()
{ {
case "$arg" in case "$arg" in
enable) _W_debugger_value="winedbg --auto %ld %ld";; # accidentally commited as enable/disable, so accept that, but prefer enabled/disabled
disable) _W_debugger_value="false";; enable|enabled) _W_debugger_value="winedbg --auto %ld %ld";;
disable|disabled) _W_debugger_value="false";;
*) w_die "Unexpected argument '$arg'. Should be enable/disable";; *) w_die "Unexpected argument '$arg'. Should be enable/disable";;
esac esac
...@@ -21143,8 +21546,7 @@ load_isolate_home() ...@@ -21143,8 +21546,7 @@ load_isolate_home()
_olddir="$(pwd)" _olddir="$(pwd)"
w_try_cd "$WINEPREFIX/drive_c/users/$USER" w_try_cd "$WINEPREFIX/drive_c/users/$USER"
for x in * for x in *; do
do
if test -h "$x" && test -d "$x"; then if test -h "$x" && test -d "$x"; then
rm -f "$x" rm -f "$x"
mkdir -p "$x" mkdir -p "$x"
...@@ -21169,7 +21571,18 @@ load_native_mdac() ...@@ -21169,7 +21571,18 @@ load_native_mdac()
{ {
# Set those overrides globally so user programs get MDAC's ODBC # Set those overrides globally so user programs get MDAC's ODBC
# instead of Wine's unixodbc # 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() ...@@ -21200,8 +21613,8 @@ load_remove_mono()
# If wine uninstaller can't find the application it will return 0 anyway. # 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\|)" mono_uuid="$("${WINE_ARCH}" uninstaller --list | grep 'Wine Mono' | cut -f1 -d\|)"
if test "$mono_uuid"; then if test "$mono_uuid"; then
for uuid in $mono_uuid; for uuid in $mono_uuid; do
do "${WINE_ARCH}" uninstaller --remove "$uuid" "${WINE_ARCH}" uninstaller --remove "$uuid"
done done
else else
# Bail out if mono isn't installed, so we don't break .Net setups # Bail out if mono isn't installed, so we don't break .Net setups
...@@ -21592,8 +22005,7 @@ winetricks_shell() ...@@ -21592,8 +22005,7 @@ winetricks_shell()
$SHELL $SHELL
;; ;;
*) *)
for term in gnome-terminal konsole Terminal xterm for term in gnome-terminal konsole Terminal xterm; do
do
if test "$(command -v $term 2>/dev/null)"; then if test "$(command -v $term 2>/dev/null)"; then
$term $term
break break
...@@ -21636,8 +22048,7 @@ execute_command() ...@@ -21636,8 +22048,7 @@ execute_command()
list-installed) winetricks_list_installed ;; list-installed) winetricks_list_installed ;;
list-all) list-all)
old_menu="$WINETRICKS_CURMENU" old_menu="$WINETRICKS_CURMENU"
for WINETRICKS_CURMENU in apps benchmarks dlls fonts games prefix settings for WINETRICKS_CURMENU in apps benchmarks dlls fonts games prefix settings; do
do
echo "===== $WINETRICKS_CURMENU =====" echo "===== $WINETRICKS_CURMENU ====="
winetricks_list_all winetricks_list_all
done done
...@@ -21735,8 +22146,7 @@ execute_command() ...@@ -21735,8 +22146,7 @@ execute_command()
esac esac
} }
if ! test "$WINETRICKS_LIB" if ! test "$WINETRICKS_LIB"; then
then
# If user opted out, save that preference now. # If user opted out, save that preference now.
winetricks_stats_save winetricks_stats_save
...@@ -21776,8 +22186,7 @@ then ...@@ -21776,8 +22186,7 @@ then
winetricks_detect_gui winetricks_detect_gui
winetricks_detect_sudo winetricks_detect_sudo
test -z "$WINETRICKS_ISO_MOUNT" && winetricks_detect_iso_mount test -z "$WINETRICKS_ISO_MOUNT" && winetricks_detect_iso_mount
while true while true; do
do
case $WINETRICKS_CURMENU in case $WINETRICKS_CURMENU in
main) verbs=$(winetricks_mainmenu) ;; main) verbs=$(winetricks_mainmenu) ;;
prefix) prefix)
...@@ -21819,8 +22228,7 @@ then ...@@ -21819,8 +22228,7 @@ then
# after picking a prefix, want to land in main. # after picking a prefix, want to land in main.
WINETRICKS_CURMENU=main ;; WINETRICKS_CURMENU=main ;;
*) *)
for verb in $verbs for verb in $verbs; do
do
execute_command "$verb" execute_command "$verb"
done done
......
.\" -*- nroff -*- .\" -*- nroff -*-
.TH WINETRICKS 1 "September 2019" "Winetricks 20190912" "Wine Package Manager" .TH WINETRICKS 1 "December 2019" "Winetricks 20191224" "Wine Package Manager"
.SH NAME .SH NAME
winetricks \- manage virtual Windows environments using Wine winetricks \- manage virtual Windows environments using Wine
.SH SYNOPSIS .SH SYNOPSIS
......
...@@ -12,9 +12,9 @@ ...@@ -12,9 +12,9 @@
set -e set -e
set -x set -x
temp="$(mktemp -d)" ###################################################################################################
# Helpers
trap 'rm -fr "$temp"' EXIT ###################################################################################################
w_die() { w_die() {
echo "$* failed" echo "$* failed"
...@@ -29,92 +29,205 @@ w_try() { ...@@ -29,92 +29,205 @@ w_try() {
fi fi
} }
bashate="$(command -v bashate)" ###################################################################################################
checkbashisms="$(command -v checkbashisms)" # Setup
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!"
if [ ! -f Makefile ] ; then if [ ! -f Makefile ] ; then
w_die "$0 should be run from the top of the source tree" w_die "$0 should be run from the top of the source tree"
fi fi
# Different versions can give different results: temp="$(mktemp -d)"
#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 ==========================="
echo "======================== Begin checkbashisms version info ===========================" trap 'rm -fr "$temp"' EXIT
"$checkbashisms" --version
echo "======================== End checkbashisms version info ==========================="
echo "======================== Begin shellcheck version info ===========================" ###################################################################################################
"$shellcheck" --version # Test functions
echo "======================== End shellcheck version info ===========================" ###################################################################################################
# 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: # tests using checkbashisms
cat > "${temp}/command.sh" <<_EOF 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 #!/bin/sh
command -v grep command -v grep
_EOF _EOF
if ! "$checkbashisms" --posix "${temp}/command.sh"; then 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 "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" 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: # /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" && \ 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" chmod +x "${temp}/checkbashisms.patched"
) )
checkbashisms="${temp}/checkbashisms.patched" checkbashisms="${temp}/checkbashisms.patched"
fi else
echo "checkbashisms workaround not needed, using vanilla script"
# FIXME: if we add a third, clean this up fi
# Check if checkbashisms supports `command -v`. If not, warn, or if on travis, patch it:
cat > "${temp}/kill.sh" <<_EOF # 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 #!/bin/sh
sleep 5 & spid="$!" sleep 5 & spid="$!"
kill -HUP \$spid kill -HUP \$spid
_EOF _EOF
if ! "$checkbashisms" --posix "${temp}/kill.sh"; then if ! "$checkbashisms" --posix "${temp}/kill.sh"; then
echo "Disabling the kill -signal warning" echo "Disabling the kill -signal warning"
echo "Creating a copy of the checkbashisms script, in ${temp}, to workaround this issue" 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: # /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" && \ sed -e '/bashisms.*kill/d' "$checkbashisms" > "${temp}/checkbashisms.patched.kill" && \
chmod +x "${temp}/checkbashisms.patched.kill" chmod +x "${temp}/checkbashisms.patched.kill"
) )
checkbashisms="${temp}/checkbashisms.patched.kill" checkbashisms="${temp}/checkbashisms.patched.kill"
fi 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. # check formatting, (no trailing whitespace, no tabs)
# E.g., if patching foo fails, then foo.orig would also be 'found'. test_formatting() {
# The find fallback is for non git users, e.g., distros packaging winetricks or end users # check for trailing spaces
# running shell-checks from a tarball download. # git diff misses some stuff? (2.18.0 / 2.22.0)
if [ -d .git ] ; then #w_try git diff --check --exit-code "${shellscript}"
files_to_check="$(git ls-files | xargs file | grep -e 'POSIX shell script' | cut -d : -f1)" if grep -n -r '[[:blank:]]$' "${shellscript}"; then
else w_die "${shellscript} contains trailing spaces, remove them."
files_to_check="$(find . -type f -exec file {} \; | grep -e 'POSIX shell script' | cut -d : -f1)" fi
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 # make sure `do` isn't on its own line:
echo "Checking ${shellscript} for bashisms:" if grep -n -w -e ' do$' -e '^do$' "${shellscript}"; then
w_try "$checkbashisms" --posix "${shellscript}" w_die "Put 'do' on the same line as 'for/while'"
fi
echo "Checking ${shellscript} with shellcheck:" # make sure `then` isn't on its own line:
w_try "$shellcheck" -s sh "${shellscript}" 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: # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
# 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
#!/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 ...@@ -135,7 +135,7 @@ skips=0
# middle of a two day run. # middle of a two day run.
check_deps() { check_deps() {
for tool in time cabextract; do for tool in time cabextract; do
command -v "$tool" command -v "$tool" >/dev/null 2>&1
ret=$? ret=$?
if [ ! $ret -eq 0 ] ; then if [ ! $ret -eq 0 ] ; then
...@@ -220,8 +220,7 @@ case "$OS" in ...@@ -220,8 +220,7 @@ case "$OS" in
/usr/lib/i386-linux-gnu/wine-development/wineserver \ /usr/lib/i386-linux-gnu/wine-development/wineserver \
/usr/lib/powerpc-linux-gnu/wine-development/wineserver \ /usr/lib/powerpc-linux-gnu/wine-development/wineserver \
/usr/lib/x86_64-linux-gnu/wine-development/wineserver \ /usr/lib/x86_64-linux-gnu/wine-development/wineserver \
file-not-found file-not-found; do
do
if [ -x "$x" ] ; then if [ -x "$x" ] ; then
case "$x" in case "$x" in
/usr/lib/*/wine-development/wineserver) /usr/lib/*/wine-development/wineserver)
...@@ -359,6 +358,8 @@ test_command() ...@@ -359,6 +358,8 @@ test_command()
archskip=0 archskip=0
command="$*" 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 # 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 # with special characters, to prevent issues like https://github.com/Winetricks/winetricks/issues/995
export WINEPREFIX="$WINE_PREFIXES/${command}" export WINEPREFIX="$WINE_PREFIXES/${command}"
...@@ -371,13 +372,15 @@ test_command() ...@@ -371,13 +372,15 @@ test_command()
# Isolate us from the user's home directory # Isolate us from the user's home directory
# shellcheck disable=SC2086 # shellcheck disable=SC2086
$XVFB $WINETRICKS sandbox || fail "\'$XVFB $WINETRICKS sandbox\' failed" if [ -z "$_W_wine_not_needed" ]; then
$XVFB $WINETRICKS sandbox || fail "\'$XVFB $WINETRICKS sandbox\' failed"
echo "Installing $command" echo "Installing $command"
$XVFB $WINETRICKS --no-isolate -q nocrashdialog "$@"
# shellcheck disable=SC2086 return=$?
$XVFB $WINETRICKS --no-isolate -q nocrashdialog "$@" else
return=$? $XVFB $WINETRICKS --no-isolate -q "$@"
return=$?
fi
if [ -d "$WINEPREFIX/drive_c/windows/syswow64" ]; then if [ -d "$WINEPREFIX/drive_c/windows/syswow64" ]; then
WINEARCH="win64" WINEARCH="win64"
...@@ -393,6 +396,9 @@ test_command() ...@@ -393,6 +396,9 @@ test_command()
skip "$command is not supported on $WINEARCH, requires win64" skip "$command is not supported on $WINEARCH, requires win64"
archskip=1 archskip=1
return return
elif [ "$return" = "99" ]; then
skip "$command is known to be broken on this wine version, ignoring"
return
fi fi
if [ "$EXPECT_FAIL" = "yes" ] ; then if [ "$EXPECT_FAIL" = "yes" ] ; then
...@@ -421,8 +427,11 @@ test_command() ...@@ -421,8 +427,11 @@ test_command()
echo "Checking for dangling processes!" echo "Checking for dangling processes!"
# shellcheck disable=SC2009 # shellcheck disable=SC2009
ps augxw | grep \\.exe 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() test_custom_verbs()
...@@ -644,6 +653,48 @@ test_install_cached_or_download() ...@@ -644,6 +653,48 @@ test_install_cached_or_download()
fi 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() test_quick()
{ {
echo "warning: quick test takes up around 20GB" echo "warning: quick test takes up around 20GB"
...@@ -657,8 +708,12 @@ test_quick() ...@@ -657,8 +708,12 @@ test_quick()
# And test all the automatically-downloadable dlls # And test all the automatically-downloadable dlls
test_dlls test_dlls
# And win32 7zip fallback # And win32 7zip fallback
test_7zip test_7zip
# And listing verbs (with/without WINE available)
test_listing
} }
test_full() { test_full() {
...@@ -748,44 +803,64 @@ test_w_compare_wine_version() ...@@ -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') # 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) # workaround_expected="$3" # should the workaround be executed (yes/no)
helper_test_w_compare_wine_version "wine-2.0" ",1.6" "no" # good (less than)
helper_test_w_compare_wine_version "wine-2.0" ",1.4" "no" helper_test_w_compare_wine_version "wine-1.0" ",1.8.0" "yes"
helper_test_w_compare_wine_version "wine-2.0" "1.4,1.6" "no" 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.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," "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" "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" "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" "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" "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" "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" "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" "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" "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" "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.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" "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" "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" "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" "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.. # FIXME: there's plenty of room for more tests..
} }
...@@ -796,6 +871,8 @@ case "$1" in ...@@ -796,6 +871,8 @@ case "$1" in
custom-verbs) test_custom_verbs ;; custom-verbs) test_custom_verbs ;;
dotnet) check_deps && test_dotnet ;; dotnet) check_deps && test_dotnet ;;
full) check_deps && test_full ;; 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 ;; quick) check_deps && test_quick ;;
w_compare_wine_version) check_deps && test_w_compare_wine_version ;; w_compare_wine_version) check_deps && test_w_compare_wine_version ;;
xvfb-check) check_deps && XVFB=xvfb-run && export XVFB && test_xvfb ;; 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