Closed silentrald closed 3 days ago
Can't we get rid of the screen dependency ? 🤔 I know we need it because BSIPA tries to move the cursor, but I also had this problem on Windows because I absolutely wanted the app to run without a window... Now it opens a window when executing BSIPA on Windows and no problem
Can't we execute just a command like dotnet bsipa.exe
in a way that it opens its own window and does not longer throw the cursor moving error?🤔
I think the screen
and dotnet
combination might be harder to debug tbh since screen
silently proceeds execution even if dotnet
fails. Can't seem to make dotnet bsipa.exe
to work in any case. Although, I got mono
or wine
to work and remove the cursor moving error. I've pasted the logs for each so that we can have a comparison.
For their binaries,
mono
- still looking if I can portably build this from https://gitlab.winehq.org/mono/mono.
wine
- kinda bundled within Steam so we can path that from where the protonPath is.
Or we can still use the currently stable release of wine and just put it in the repo with the same effect. Can download the builds from here https://github.com/Kron4ek/Wine-Builds/releases.
@Zagrios
Got a build for mono
although it's pretty big around 500mb so I might just drop it. I might just reuse the wine
binary that is package with proton so that no additional installation is needed and no added file to the build is necessary.
So the implementation that I'm currently thinking of is:
What do you think with the implementation above?
Only error I've encountered with wine
as well is where there is a mismatch with the versions. This just needs to kill the process for wine and exe.
pkill wine & pkill exe
But can still offer some support on this in Discord if anything breaks as well on this front.
As requested by @silentrald in #585, I'm referring some issues from there in here:
dotnet ./IPA.exe "./Beat Saber.exe"
wine ./IPA.exe "./Beat Saber.exe"
) gives the following error:002c:fixme:winediag:loader_init wine-staging 9.11 is a testing version containing experimental patches.
002c:fixme:winediag:loader_init Please mention your exact version when filing bug reports on winehq.org.
0120:fixme:mscoree:parse_supported_runtime sku=L".NETFramework,Version=v4.7.2" not implemented
0120:fixme:mscoree:parse_supported_runtime sku=L".NETFramework,Version=v4.7.2" not implemented
0120:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0120:fixme:nls:GetFileMUIPath stub: 0x10, L"C:\\windows\\system32\\tzres.dll", (null), 000000000011E7C0, 00000000013545B0, 000000000011E7C8, 000000000011E7B8
0120:fixme:nls:GetFileMUIPath stub: 0x10, L"C:\\windows\\system32\\tzres.dll", (null), 000000000011E7C0, 00000000013545B0, 000000000011E7C8, 000000000011E7B8
0120:fixme:nls:GetFileMUIPath stub: 0x10, L"C:\\windows\\system32\\tzres.dll", (null), 000000000011E7C0, 00000000013545B0, 000000000011E7C8, 000000000011E7B8
Restoring old version...
Restoring Beat Saber_Data/Managed/Microsoft.CSharp.dll
Beat Saber_Data/Managed/netstandard.dll
Beat Saber_Data/Managed/IPA.Injector.dll
Beat Saber_Data/Managed/IPA.Loader.dll
Beat Saber_Data/Managed/I18N.West.dll
Beat Saber_Data/Managed/IPA.Loader.xml
Beat Saber_Data/Managed/System.Runtime.Serialization.dll
Beat Saber_Data/Managed/IPA.Injector.pdb
Beat Saber_Data/Managed/IPA.Loader.pdb
Beat Saber_Data/Managed/I18N.dll
Libs/MonoMod.RuntimeDetour.dll
Libs/Mono.Cecil.Rocks.dll
Libs/Mono.Cecil.Pdb.dll
Libs/Mono.Cecil.Mdb.dll
Libs/Ionic.Zip.dll
Libs/0Harmony.dll
Libs/Hive.Versioning.dll
Libs/Mono.Cecil.dll
Libs/SemVer.pdb
Libs/SemVer.dll
Libs/MonoMod.Utils.dll
Libs/Newtonsoft.Json.dll
winhttp.dll
Beat Saber_Data\Managed\UnityEngine.CoreModule.dll
ERROR: Oops! This should not have happened.
System.ArgumentException: Illegal characters in path.
at System.IO.Path.Combine (System.String path1, System.String path2) [0x00057] in <f1249a148cfb4110b9a02139
e12e4308>:0
at IPA.Patcher.BackupUnit.Restore () [0x0002f] in <92182438d24544498e9ffe99332cb29f>:0
at IPA.Patcher.BackupManager.Restore (IPA.PatchContext context) [0x0000a] in <92182438d24544498e9ffe99332cb
29f>:0
at IPA.Program.Install (IPA.PatchContext context) [0x0005f] in <92182438d24544498e9ffe99332cb29f>:0
That's very weird, every dll is expected except for the last one (UnityEngine.CoreModule.dll). Also I have warning on cancel_ptr but it still copied the files correctly. Although it failed somewhere in BSIPA where the path is not correctly created, still thinking if this has something to do with the slashes since looking at UnityEngine.CoreModule.dll has a different slashes from the previous dll filepaths.
But here's the logs of a successful wine execution with IPA.exe.
Can you post the dotnet logs and compare what's your successful execution with dotnet.
Problem
Currently with the linux AppImage, to install mods properly in linux distros, there are hidden dependencies that aren't very well documented. Users need to install both screen and dotnet-3.1.426 version. screen package is very trivial for most distros however the specific version of dotnet is very hard for most users to get installed.
These are some of the dotnet installation process:
Solution
Add the linux executable binaries for screen and dotnet to the
assets/scripts
folder to properly run theIPA.exe
executable. This is also feasible since I've got a working branch for this. Only downside here is that the dotnet binary is very big, around ~200mb. Will try to update this to get the final AppImage size if I include these changes.Alternative solutions (if any)
For Arch users, I think Insprill created an AUR package which uses yay package manager. The dependencies are linked here so it would work properly.
wine can also be an alternative to run
IPA.exe
although wine can fail in execution and/or log out error messages unlike dotnet.[Unlikely] A possibility of BSIPA being compiled as a linux binary so that we wouldn't depend on dotnet, minimum install would only be screen.
Additional context
Feature suggestion is because of Steam Deck users since its very hard to install packages in the handheld console and most users of these are not technically adept to install these stuff.