Closed sirensongss closed 9 months ago
This looks like it's because innoextract
has not installed properly. Note these lines from your log:
Wed Feb 28 12:44:22 PM PST 2024 ERROR - installMO2 - Version for 'innoextract' is invalid. You need to at least version '1.9' Wed Feb 28 12:44:22 PM PST 2024 ERROR - installMO2 - Starting /home/deck/.config/steamtinkerlaunch/mo2/compatdata/pfx/drive_c/Modding/MO2/ModOrganizer.exe using wine/proton instead Wed Feb 28 12:44:22 PM PST 2024 WARN - installMO2 - Unfortunately 'innoextract' is required to install ModOrganizer on the Steam Deck, but it wasn't found Wed Feb 28 12:44:22 PM PST 2024 WARN - installMO2 - '/home/deck/.config/steamtinkerlaunch/mo2/compatdata/pfx/drive_c/Modding/MO2/ModOrganizer.exe' not found after installation, creating '/dev/shm/steamtinkerlaunch/ModOrganizer-failed.txt' to avoid further attempts
The 2nd line is also why the files you were supposed to delete don't exist.
Go to ~/stl/deps/usr/bin
and see if you have an innoextract
binary. Earlier in the log, SteamTinkerLaunch appears to suggest that it is found, so I'm not sure why it wouldn't be:
Wed Feb 28 12:44:07 PM PST 2024 INFO - installDependencyVersionFromURL - Using 'innoextract' binary found in path: '/home/deck/stl/deps/usr/bin/innoextract'
Perhaps somehow it pulled the wrong version? You can check with ./home/deck/stl/deps/usr/bin/innoextract --version
(it will only print the version, not the package increment, so you will only get i.e. 1.9
). If so, you can try manually downloading and replacing the innoextract
binrary with innoextract 1.9-8 from the Arch Mirrors. If that still fails, you could also try 1.9-9, but I don't think that'll work.
I have followed steps to purge MO2 2.5
ModOrganizer 2 v2.5 is currently not widely compatible with any Proton versions (including Proton 9.0 beta, afaik) outside of Proton-tkg based on Wine Master, and it will not be downloaded by SteamTinkerLaunch-git.
Also, as a word of warning, I would not recommend using ANY modding tools on SteamOS, ever. It is a headache that I don't wish on anyone, because of how fragile SteamOS is (even the Steam Workshop can brick games).
I did have an innoextract binary, but replacing it with the one you sent has solved the issue! Thank you so much, I really appreciate you helping out stubborn bozos like myself trying to get this stuff working on steamOS.
I wasn't aware of having installed 2.5, but I was running STL 12.2 briefly before realizing i needed to update, and I uninstalled it entirely before installing a new version.
Glad it's working! It might be a bit late now unless the binary is in your trash, but I wonder if it existed, but was 0 bytes? Or at least, smaller than the one you downloaded.
By the way, I should've really clarified and linked to the code, but SteamTinkerLaunch downloads (or is meant to download) from the same link that I provided. It wasn't great of me to just provide a link without much context like that, so my apologies on that front.
I wasn't aware of having installed 2.5, but I was running STL 12.2
Ah okay, yeah, v12.12 will download the latest MO2 including pre-releases. We pin to v2.4.4 for compatibility reasons now though, we should've did it before but MO2 v2.4.4 was simply out for a long time and I guess it was never gotten around to 😄
I'll keep this issue open for a bit until I have time to check if STL actually checks to make sure the stuff it downloads is > 0 bytes. We may not be able to do anything except log for now as we don't have much in the way of a "retry X times" function right now.
Happy gaming!
It looks like SteamTinkerLaunch is not checking if a binary is actually > 0 bytes. We only check if it exists in installDependencyVersionFromURL
. I guess I made the assumption back then that if the file exists then download probably succeeded, but this is not necessarily the case, as the file is probably created even if download fails.
Doing a simple byte size check is probably not enough on its own, but because installDependencyVersionFromURL
is generic, we can't really do any more specific checks. It may be a safe assumption that -v
exists for all current dependencies but perhaps not in future, so we can't really check if we get a success status code or something.
We can probably change the check to be if [ -f "$(command -v "$DEPCMD")" ] && [ -s "$(command -v "$DEPCMD" ]; then
, this is probably enough (-s
checks if the file is not empty, i.e. > 0 bytes). We could even store the path returned by $(command -v "$DEPCMD")"
in a variable and use it in the checks (and any future checks).
I don't have a Steam Deck to test, so I can't implement this myself, but I'll document this in #859 and then close this issue :-)
Updated #859 with some approaches to fix this problem in future. I don't have SteamTinkerLaunch on a Steam Deck anymore so I cannot test this fix. Hopefully someone can come forward and help out, using the information provided in this issue and the linked Steam Deck improvements issue.
I will close this now as I have consolidated the idea for the fix in another issue. Please re-open if you feel like there is something more that should be done. You are also more than welcome to contribute a fix if you want, but of course no pressure, just letting you know the door is always open for STL contributions of any kind :-)
System Information
-v14.0.20240218-1
Issue Description
I am unable to launch MO2 after following the troubleshooting guide. The error "innoextract: error while loading shared libraries: libboost_iostreams.so.1.80.0: cannot open shared object file: No such file or directory" appears in the terminal. I have followed steps to purge MO2 2.5, (the files it told me to delete weren't there)but still the install fails.
Logs
steamtinkerlaunch.log