protonscr

Better support for Microsoft .NET Framework redists

protonclosed Feature Request
ValveSoftware/Proton#1786 · opened 2018-10-20 by Rabcor · updated 2020-04-09 · 7 comments · github
RRabcor 2018-10-20 github

Feature Request

I confirm:

  • [x] that I haven't found another request for this feature.
  • [x] that I have checked whether there are updates for my system available that
    contain this feature already.

Description

Installing .NET Framework into wine prefixes can be a challenge. Sometimes using winetricks (or for proton, protontricks) will work, but usually I've found that it does not, in those cases the recommended solution is often something along the lines of "Set the prefix to Windows XP mode, download a dotnet framework standalone installer, and install it" but even then, it's not guaranteed to work.

I frequently get failures where mscoree.dll is missing or errors where ngen.exe is not found when I try to deal with this.

Hopefully something like an automated script that detects if a game's installscript is trying to set up .NET redists, intercepts it, and installs it some other way that's guaranteed to work instead. Or alternatively setting up a list with ids of games that require it with some method to do it manually in case the game is not on the list.

Justification

It is already poorly implemented in winetricks, but the number of games that require NET Framework is awfully high, and the same number of games will typically fail to install NET Framework via the typical install scripts with Proton.

Because it can be challenging to get net framework installed in wine prefixes even without proton involved, and because of the number of games that require it is huge, there needs to be better support for installing it for proton prefixes.

Risks [optional]

Possibly legal ones depending on implementation.

References [optional]

https://github.com/ValveSoftware/Proton/issues?utf8=✓&q=net+framework
https://github.com/ValveSoftware/Proton/issues/495
And many other as of yet unreported ones (like paladins and smite, killing floor 2 also optionally requires it)

Vvanyasem 2018-10-20 github

Possible duplicate of #18

?ghost 2018-10-20 github

Possible duplicate of #18

I suppose that's fine IF Proton came with mono and that removed the need to install the .net redist package or whatever for all games.

However, Wine 3.18 already includes one .net fix anyway that should help in some situations so its not like they aren't do this anyway. There's a lot of stuff to do so it takes time.
https://www.winehq.org/announce/3.18

45680  Microsoft .NET Framework 3.5 (SP1) fails to install in 64-bit WINEPREFIX
MMagicRB 2018-10-20 github

Also mono does not work for all games, for example, Space Engineers won't start with mono. Mono needs to be removed and .net 4.7 needs to be installed instead, but yes mono would definitely help.

TThinkaboutmin 2018-10-21 github

AFAIK, Mono doesn't work together with .NET. With this in mind, I ponder, what happens when you start a game from Steam? It installs all the prerequisites... Meaning that .NET will be installed as well(if needed) therefore, Mono might be unusable. Not to mention that it's very unfriendly for the user to see a installation failing(or not even installing, like .NET 3.5). Although it would be awesome to have some workaround, without using any .NET.

Edit:
Forget about this part, as Proton "uses" Windows 7, meaning that it fail by saying that it's incompatible.

(or not even installing, like .NET 3.5)

RRabcor 2018-10-22 github

Possible duplicate of #18

No it is not, mono is an attempt to duplicate the functionality of the .NET framework, a mostly successful attempt, yet not successful enough for our purposes in gaming.

RRabcor 2018-11-02 github

It's worth mentioning that there's a regression in proton, where installing .NET framework 4.6 or higher does not work in proton 3.16 (last worked in 3.7 I think). installing .NET framework 4.0 does however work.

DDanMan 2019-01-06 github

FYI: I've gotten 3 games (DmC, Brothers:ATO2S, and Killer Is Dead) to work by forcing winetricks to install dotnet40 a 2nd time whenever I got the can't find ngen.exe error after the 1st time.

Maybe that has to do with some async operations? I've read on the Wine Bugzilla that that's what's preventing the Bayonetta config file from being stored.

As others mentioned: There's also the general problem that the Proton prefix defaults to Win7 which prevents dotnet35 for example from being installed (Win7 comes with it pre-installed). Example: the Batman games. For Arkham City I literally only had to switch the Windows version of the prefix to WinXP to get .Net to install through Steam's own pre-launch setup and run the game. Took about 20 min. though.

Proton versions

Launch options

Upstream links

DLLs