Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] We should register every DLL with * asterisk at the start #1136

Open
Arcitec opened this issue Mar 8, 2022 · 1 comment
Open

[BUG] We should register every DLL with * asterisk at the start #1136

Arcitec opened this issue Mar 8, 2022 · 1 comment

Comments

@Arcitec
Copy link

Arcitec commented Mar 8, 2022

Great news for Bottles compatibility with games!

I discovered why Winetricks adds * asterisk before every DLL name, such as *d3dcompiler_43 etc.

It was explained in their source code here:

https://github.com/Winetricks/winetricks/blob/d431b15fa55667217571a791074dc3eb69155dfc/src/winetricks#L2115-L2122

Relevant part:

# Note: if you want to override even DLLs loaded with an absolute
# path, you need to add an asterisk:
echo "\"*${module}\"=\"${_W_mode}\"" >> "${W_TMP}"/override-dll.reg

What this means is, if Bottles installs dxgi.dll, and registers dxgi in Wine, the following happens:

  • If a .exe asks for dxgi.dll, all is fine.
  • If a .exe asks for C:\Windows\system32\dxgi.dll or .\dxgi.dll (local game folder version), nothing is fine. The custom Bottles dxgi.dll will not be loaded then.

If we register it as *dxgi instead, then it will always be loaded. In other words, the * asterisk is necessary to do a "full override".

If we don't override completely, then certain games and apps will break in Bottles since they won't load the overridden DLLs at all unless we add a * to the name.

This may explain a bunch of games that crash in Bottles (with null-pointer errors) but work in Lutris even with the exact same Wine-runner in both apps.

This post is a followup from comments here: #1020 (comment)

@Arcitec Arcitec added the Bug label Mar 8, 2022
@pietrodicaprio pietrodicaprio moved this to Todo 🎈 in Trento Mar 14, 2022
@pietrodicaprio pietrodicaprio added this to the 2022.3.28 milestone Mar 14, 2022
@mirkobrombin
Copy link
Member

I want to test this on my self before committing. Should not be a breaking thing

@mirkobrombin mirkobrombin moved this from Todo 🎈 to Investigating 🔍 in Trento Mar 21, 2022
@mirkobrombin mirkobrombin removed this from the 2022.3.28 milestone Mar 21, 2022
@mirkobrombin mirkobrombin removed this from Trento Jun 7, 2022
@mirkobrombin mirkobrombin moved this to Investigating 🔍 in Brescia Jun 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Status: Investigating 🔍
Development

No branches or pull requests

3 participants