[PATCH 0/1] MR9634: dotnetfx35.exe: Add stub program.
This overrides native dotnetfx35 installer, which is broken in an unfixable way. Recent Windows also bypass its execution. -- This has been in proton for a long time, it fixes various error popups when 3.5 .NET installer is executed. Native installer could still be attempted with `WINEDLLOVERRIDES` although it's never going to succeed installing with a recent Windows version. I think changing Windows version to XP might help it but it's also a manual step, so having an additional override to set shouldn't make much difference. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634
From: Rémi Bernon <rbernon(a)codeweavers.com> This overrides native dotnetfx35 installer, which is broken in an unfixable way. Recent Windows also bypass its execution. --- configure.ac | 1 + programs/dotnetfx35/Makefile.in | 6 ++++++ programs/dotnetfx35/main.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 programs/dotnetfx35/Makefile.in create mode 100644 programs/dotnetfx35/main.c diff --git a/configure.ac b/configure.ac index 06a3a820e4c..bea2f11ee04 100644 --- a/configure.ac +++ b/configure.ac @@ -3544,6 +3544,7 @@ WINE_CONFIG_MAKEFILE(programs/cscript) WINE_CONFIG_MAKEFILE(programs/dism) WINE_CONFIG_MAKEFILE(programs/dllhost) WINE_CONFIG_MAKEFILE(programs/dplaysvr) +WINE_CONFIG_MAKEFILE(programs/dotnetfx35) WINE_CONFIG_MAKEFILE(programs/dpnsvr) WINE_CONFIG_MAKEFILE(programs/dpvsetup) WINE_CONFIG_MAKEFILE(programs/dxdiag) diff --git a/programs/dotnetfx35/Makefile.in b/programs/dotnetfx35/Makefile.in new file mode 100644 index 00000000000..f826beef4e5 --- /dev/null +++ b/programs/dotnetfx35/Makefile.in @@ -0,0 +1,6 @@ +MODULE = dotnetfx35.exe + +EXTRADLLFLAGS = -mwindows -municode + +SOURCES = \ + main.c diff --git a/programs/dotnetfx35/main.c b/programs/dotnetfx35/main.c new file mode 100644 index 00000000000..69723e3fc6b --- /dev/null +++ b/programs/dotnetfx35/main.c @@ -0,0 +1,32 @@ +/* + * Fake dotnetfx35.exe installer + * + * Copyright 2020 Rémi Bernon + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <windows.h> + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(dotnetfx); + +int WINAPI wWinMain( HINSTANCE instance, HINSTANCE previous, WCHAR *cmdline, int show ) +{ + FIXME( "stub!" ); + return 0; +} -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9634
Not to cast doubt, but for the sake of clarity, how is it broken? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124476
It shows an error popup about requiring to go through Windows Updates to install it. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124480
Ah right, this is the one that does a version check, and only installs if it's Windows XP or earlier? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124481
Yeah, and various Steam games are actually always trying to install it. On windows it automatically opens Windows update if you haven't .NET installed yet, but it's not something triggered by the executable, rather some compat db thing or loader identifying the installer and bypassing its execution entirely. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124482
I assume it's shipped with the installer, so why does it get executed from system32? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124546
It's not normally executed or present in system32, but having an existing builtin executable makes Wine load the builtin image over native? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124547
Only if the app launches it from system32, if it's in another directory it runs native. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124548
Hmm... well, I'm not sure how it works anymore but I believe it's been working for a while now. And fwiw dotnetfx35.exe *is* the installer. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124549
It's the installer but it must have been shipped or downloaded by the app, so then I'd expect the app to launch it from the install/download directory. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124550
Alright, maybe it works in Proton but not in Wine because of how redist installation are requested... Or maybe something changed in the loader order and it doesn't work anymore, we'll see. It would be nice to have some mechanism for this though, and I think there are other .NET installer versions that suffer from the same issue. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124551
This merge request was closed by Rémi Bernon. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634
I don't think anything changed in Wine, but yes, maybe there's a Proton patch that changes the behavior. I'd imagine that this sort of thing could be handled as an extension of the loadorder mechanism, are there bugs about specific installers that have this issue? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124563
You mean WineHQ bugs? I don't know if they have been reported there, it's been reported for Proton at least as the Steam redistributable installation takes longer and require prefix restart. It usually manifests by either an error popup, or it going through redist installation again if the installer fails silently (when run with /q) when it should only do it once, every time you start a game from Steam. This affects Cooking Simulator (641320) which installs dotnetfx35.exe, as well as Fallout 3 (22300) which I was looking at recently, which uses a different .NET version but fails the same way. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124570
OK, I was mostly looking for a way to reproduce, that should be good enough, thanks! -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9634#note_124571
participants (3)
-
Alexandre Julliard (@julliard) -
Elizabeth Figura (@zfigura) -
Rémi Bernon