madewokherd / wine-mono

Other
269 stars 39 forks source link

Wine-Mono does not warn/error about running dotnet5+ binaries. #197

Open Fox2Code opened 3 days ago

Fox2Code commented 3 days ago

According to https://github.com/madewokherd/wine-mono/issues/15#issuecomment-2107551161 dotnet5+ is out of scope of Wine-Mono.

But Wine-Mono does not warn or error out when loading dotnet5 software, a message like this should be enough:

Warning: Wine-Mono detected you are running dotnet5+ software, Wine-Mono only support up to dotnet4.
Warning: Do not report any issues related to this software to Wine or Wine-Mono when running this software with Wine-Mono.
Warning: Please install Microsoft dotnet5+ to run dotnet5+ software.

This is very important to make it clear Wine-Mono does not support dotnet5+

Fox2Code commented 3 days ago

Example of dotnet5+ software: https://www.minecraft.net/en-us/download

madewokherd commented 17 hours ago

In reply to https://github.com/madewokherd/wine-mono/issues/196#issuecomment-2204141994

There have been many issues caused by shipped libraries that reference things that don't exist, where .NET Framework detects they are unused and doesn't care, while Mono fails to detect this. My guess in this case is that the whole "Windows.Foundation.UniversalApiContract" library is unused by the Minecraft installer, and Mono doesn't detect this.

madewokherd commented 17 hours ago

Another possibility: .NET Framework may have special handling of winmd-type dll's that ignores the actual code (and references) inside the dll.

madewokherd commented 17 hours ago

From my own testing (based on modules loaded in the process on Windows), I know the Minecraft installer runs in .NET Framework. There's no "wrong detection" and no chance of that as the way Framework and Core load is completely different. .NET Core projects include an unmanaged executable that loads the .NET Core runtime (see for example the .NET 8 builds at https://github.com/madewokherd/xalia/releases/tag/xalia-0.4.2). .NET Framework executables instead reference mscoree which loads Wine Mono.

I don't know how you could get a .NET Core project to load in Wine Mono even if you wanted to.

Fox2Code commented 16 hours ago

Well, it's dotnet4 but expect dotnet5 stuff

Fox2Code commented 16 hours ago

I'm trying to think about this and it doesn't make a lot of sense, maybe bundling dotnet core with wine-mono for the GAC libraries and UWP apps could help?

Like I'm thinking Wine-Mono is installed by default on Wine, and since dotnet core is opensource, I don't think this would be an issue to bundle it in some way...

madewokherd commented 15 hours ago

We wouldn't be able to run the libraries in Mono.