neatodev / BmLauncherAsylumNET6

Batman: Arkham Asylum - Advanced Launcher (.NET 6 Edition)
Other
37 stars 4 forks source link

Can't get it to run on Linux #12

Open appsforartists opened 7 months ago

appsforartists commented 7 months ago

I'm running gamescope-session (the Steam client from SteamOS) on NixOS via Jovian. I tried both the 160MB and the 5MB versions, and tried both protontricks 35140 -q d3dx9 d3dcompiler_43 and protontricks 35140 -q calibri. If I click Play in Steam, the Steam logo appears for a second, and then I'm dropped back to the Asylum page in Steam.

I don't know how/which logs to collect to diagnose the precise issue.

I also can't get the original launcher to work after trying this either. 😰

appsforartists commented 7 months ago

Found the log:

gamescope-session[4057857]: Unhandled exception. System.TypeInitializationException: The type initializer for 'System.Management.WmiNetUtil.TypeInitializationException: The type initializer for 'System.Management.WmiNetUtilsHelper' threw an exception.
gamescope-session[4057857]:  ---> System.ComponentModel.Win32Exception (126): Failed to load required native library 'C:\windows\Microsoft.Win32Exception (126): Failed to load required native library 'C:\windows\Microsoft.NET\Framework64\v4.0.30319\wminet_utils.dll'.
gamescope-session[4057857]:    at System.Management.WmiNetUtilsHelper..cctor()
gamescope-session[4057857]:    --- End of inner exception stack trace ---
gamescope-session[4057857]:    at System.Management.ThreadDispatch.Start()
gamescope-session[4057857]:    at System.Management.ManagementScope.Initialize()
gamescope-session[4057857]:    at System.Management.ManagementObjectSearcher.Initialize()
gamescope-session[4057857]:    at System.Management.ManagementObjectSearcher.Get()
gamescope-session[4057857]:    at BmLauncherAsylumNET6.infrastructure.Factory.setGPUname()
gamescope-session[4057857]:    at BmLauncherAsylumNET6.infrastructure.Factory..ctor(BmLauncherForm form)
gamescope-session[4057857]:    at BmLauncherAsylumNET6.Program.RunWindow()
gamescope-session[4057857]:    at BmLauncherAsylumNET6.Program.Main()

Looks like the self-contained binary isn't totally self contained.

Are the presets available as ini files? That might be easier than trying to figure out which combination of magic commands puts the right dlls in the right places.

hh1599 commented 1 month ago

The problem is that the launcher has been updated to use dot net 6.03 and proton / wine tricks only installs 6.0. There is an old version provided along with the HD texture pack that works on linux here: https://www.nexusmods.com/batmanarkhamasylum/mods/1?tab=files

Hatsune-Cthulhu commented 1 week ago

The old version doesn't work, a bunch of the options cause a black tooltip which completely locks up the launcher

I also don't see a dotnet 6.03 version anywhere, are you referring to 6.0.3? Or 6.0.30? Because winetricks installs 6.0.19

This appears to indicate that .net v4 is also being used: System.ComponentModel.Win32Exception (126): Failed to load required native library 'C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\wminet_utils.dll'.\r\n"

hh1599 commented 1 week ago

The old version doesn't work, a bunch of the options cause a black tooltip which completely locks up the launcher

I also don't see a dotnet 6.03 version anywhere, are you referring to 6.0.3? Or 6.0.30? Because winetricks installs 6.0.19

This appears to indicate that .net v4 is also being used: System.ComponentModel.Win32Exception (126): Failed to load required native library 'C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\wminet_utils.dll'.\r\n"

Yes it's very annoying. You have to make sure your mouse is not touching the window and navigate with tab, arrows, and spacebar. Once you get it configured replace the original launcher and the settings should stick as they will be set to read only.

Hatsune-Cthulhu commented 1 week ago

Cracked it,

.NET 6 seems to have an undisclosed reliance on .NET 4.7.2 dlls (who would've thought, .NET being shit.... Nooooooooo)

Solution is to run protontricks 35140 -q dotnet472 dotnet6

Then the new launcher runs fine in linux

Hatsune-Cthulhu commented 1 week ago

@DraakjeYoblama or @neatodev Sorry for the ping, but think I've found the solution for linux users not needing to use the older launcher version. Any chance we could get the readme and/or nexus pages updated?

hh1599 commented 1 week ago

Cracked it,

.NET 6 seems to have an undisclosed reliance on .NET 4.7.2 dlls (who would've thought, .NET being shit.... Nooooooooo)

Solution is to run protontricks 35140 -q dotnet472 dotnet6

Then the new launcher runs fine in linux

That's awesome. Great work.

DraakjeYoblama commented 1 week ago

@Hatsune-Cthulhu I can't edit either of those, best I can do is make a pull request to edit the readme. But you could probably do that yourself (make sure to reference this issue).