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

Missing dll version properties #980

Closed
zzhiyi opened this issue Mar 25, 2019 · 17 comments
Closed

Missing dll version properties #980

zzhiyi opened this issue Mar 25, 2019 · 17 comments
Labels

Comments

@zzhiyi
Copy link
Contributor

zzhiyi commented Mar 25, 2019

Currently the generated dlls doesn't contain any version properties. You can check it on Windows via right checks and choose properties and then details. On Linux, you can also check it via exiftools and see that version properties are missing.

Some games check for the version of d3d dlls at start. Please see ValveSoftware/Proton#2393 for details.

Related link: https://www.transmissionzero.co.uk/computing/building-dlls-with-mingw/ #Adding Version Information and Comments to your DLL shows how to add version information to dlls.

@zzhiyi zzhiyi changed the title Missing dll version info Missing dll version properties Mar 25, 2019
@doitsujin
Copy link
Owner

doitsujin commented Mar 25, 2019

What exactly do these games check for and what information would the DXVK DLLs need to provide? I'm not familiar with Windows DLL versioning.

@misyltoad
Copy link
Collaborator

The meta data inside the dll provided by the .rc

Here is the .rc of a d3d11 dll https://hastebin.com/vefovefowu.bash

@SveSop
Copy link
Contributor

SveSop commented Mar 25, 2019

You can have a look at the various .rc files in the wine source.
Wine's "version.rc" attached. (EDIT: For d3d11.dll)
version.rc.gz

@SveSop
Copy link
Contributor

SveSop commented Mar 30, 2019

Looking at the https://www.transmissionzero.co.uk/computing/building-dlls-with-mingw/ i guess the d3d11 version.rc file could be something like i attach here. I can use windres on it, and link it to the d3d11.dll.

Probably not a good idea to use "CompanyName: Microsoft" on it tho, cos of possibly legal issues, depending on WHAT the game actually checks this should be no problem? Ie. if its version only, i see no issues keeping a "windows dll version" as long as the other stuff is changed?

Anyway, i have been stabbing around in total darkness trying to figure out how meson can build this file with windres x86_64-w64-mingw32-windres, but i dont have a clue how to achieve this as im a total meson n00b.
Supposedly its to use some windows.compile_resources(), but "windows" is a unknown thing, and i dont know how to fiddle with that.

Attaching a suggestion to version.rc file from the info posted earlier.
version.rc.gz

@zzhiyi
Copy link
Contributor Author

zzhiyi commented Mar 31, 2019

In wine, there is VALUE "CompanyName", "Microsoft Corporation" /* GameGuard depends on this */. So some anti-cheat toolkit check for Microsoft as well. I don't know if it's safe for dxvk although regarding the legal issues.

@zzhiyi
Copy link
Contributor Author

zzhiyi commented Mar 31, 2019

What exactly do these games check for and what information would the DXVK DLLs need to provide? I'm not familiar with Windows DLL versioning.

For now. Just the usual version information present in dlls is fine. We don't have to use "Microsoft" etc. The game just need some version so it doesn't fail. We probably want to keep the version the same as Windows though.

@dhewg
Copy link
Contributor

dhewg commented Apr 1, 2019

@SveSop
Copy link
Contributor

SveSop commented Apr 1, 2019

@dhewg
Quick glance on a couple of those links and i got a couple of ideas to try :)

Thx.

@SveSop
Copy link
Contributor

SveSop commented Apr 2, 2019

@dhewg Thanks for the tips! Was able to make that work, but since DXVK currently do not create the "fakedlls" when building winelib, so i disabled this "function" for the dll.so's.

@doitsujin Created a PR: #993
Take a look at see if its of any use.

Example: (The "real" is to the left)
dll_version

@doitsujin
Copy link
Owner

doitsujin commented Apr 2, 2019

Can anyone test if #993 fixes Shattered Horizon? If so, does it still work when removing the "Copyright", "Company Name" and "Product Name" lines?

I'm concerned about the legal implications of slapping the Microsoft name onto the project, even if it is required for certain applications to work.

@zzhiyi
Copy link
Contributor Author

zzhiyi commented Apr 2, 2019

Can anyone test if #993 fixes Shattered Horizon? If so, does it still work when removing the "Copyright", "Company Name" and "Product Name" lines?

I'm concerned about the legal implications of slapping the Microsoft name onto the project, even if it is required for certain applications to work.

I will test it.

@SveSop
Copy link
Contributor

SveSop commented Apr 2, 2019

Copyright should possibly be: "zlib/libpng license"? (The project license)?

@zzhiyi
Copy link
Contributor Author

zzhiyi commented Apr 3, 2019

#993 Fixed the Shattered Horizon. Removing "Copyright", "Company Name" and "Product Name" lines also works. But I would rather keep them and use "DXVK Project" for example.

@doitsujin
Copy link
Owner

Alright, thanks. Will do something like that then.

@SveSop
Copy link
Contributor

SveSop commented Apr 4, 2019

Made a push to my fork that builds "fake_dlls" if you build --winelib with the aforementioned versioning.

If that can be of any use, although i don't really see it, you kinda need to overwrite wine dll.so's and fakedll's with these, so that you would use it without dll overrides or anything, kinda like if it was "native wine".

As i said, dunno if it is worth the trouble for dll versioning? Anyway, for lulz and gigglez i guess:
SveSop@7632ffb

@sl1pkn07
Copy link

sl1pkn07 commented Apr 4, 2019

edited: useless

@SveSop
Copy link
Contributor

SveSop commented Apr 5, 2019

#993 (comment)

doitsujin pushed a commit that referenced this issue Apr 15, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants