rockerbacon / modorganizer2-linux-installer

An easy-to-use Mod Organizer 2 installer for Linux
GNU General Public License v3.0
1.01k stars 80 forks source link

Remove dependency on Lutris #182

Closed rockerbacon closed 2 years ago

rockerbacon commented 3 years ago

The current implementation of the installer relies on Lutris by design. At the beginning this was a great way to get things done faster but as the project was developed and maintained relying too much on Lutris proved to be an obstacle. There are currently two important fixes the project needs which are being held back by Lutris development:

A Lutris installer will still be provided but the installer will merely download and execute the independent installer.

This migration is something I've been meaning to do for quite some time but I haven't had the time to work on. I would greatly appreciate help from anyone with bash knowledge and I'll provide full support to anyone wishing to get involved. Requirements and progress will be tracked in a GitHub project.

Feel free to ask questions and leave suggestions in this issue.

rockerbacon commented 3 years ago

I've added the independent-installer label and created the branch independent-installer.

I'll be opening issues describing tasks when I get home from work. Anyone who can already see things that need to be done is free to open new issues and pull requests.

jthistle commented 3 years ago

Hey! I've been just trying to get this to work and share your frustration with Lutris.

What exactly is the reason for dependence on Lutris in the first place? I can only see one thing being the ability to very simply download resources. And also maybe knowing where the game files are kept. But really, this should absolutely be rewritable as a standalone thing.

Have you considered using a more, uh, maintainable language like Python to rewrite this? Not that bash is bad; in fact it's excellent for filesystem-level stuff like this, just that it's quite painful to use.

rockerbacon commented 3 years ago

Hey! I've been just trying to get this to work and share your frustration with Lutris.

What exactly is the reason for dependence on Lutris in the first place? I can only see one thing being the ability to very simply download resources. And also maybe knowing where the game files are kept. But really, this should absolutely be rewritable as a standalone thing.

Have you considered using a more, uh, maintainable language like Python to rewrite this? Not that bash is bad; in fact it's excellent for filesystem-level stuff like this, just that it's quite painful to use.

Lutris made a lot of sense when this project was built around Vortex. If you look at the old Vortex installer, it was just one script to create a bunch of symlinks and the Lutris installer. After Wine got support for Window's VFS, Mod Organizer 2 became a possibility and the thought was that it was easier to build around something that was already made rather than redoing everything from scratch.

Bash was chosen because it is readily available, great for managing the filesystem, integrates with external programs in a relatively clean manner and everything you can run on a terminal can be put directly into a script. That last part was very important for getting things done faster, as the bulk of the work in this project was research and experimentation with the code itself being just for automation.

I'm open to switching technologies if they provide any noticeable benefit but I don't see it as something too important right now.

jthistle commented 3 years ago

Cool, thanks for the explanation. FWIW I wouldn't say that Python provides any real benefit over Bash other than maintainability; it was just a suggestion.

Leooow commented 3 years ago

@rockerbacon I would like to help but have no idea what I could contribute, any suggestions?

rockerbacon commented 3 years ago

@rockerbacon I would like to help but have no idea what I could contribute, any suggestions?

I'm trying to keep track of everything I think needs to be done through issues. You can filter all issues related to this by using the label:independent-installer filter in the search in the issues tab (quick link for ease).

If you're not comfortable developing, you can always keep an eye on pull requests and test them.

Leooow commented 3 years ago

@rockerbacon I would like to help but have no idea what I could contribute, any suggestions?

I'm trying to keep track of everything I think needs to be done through issues. You can filter all issues related to this by using the label:independent-installer filter in the search in the issues tab (quick link for ease).

If you're not comfortable developing, you can always keep an eye on pull requests and test them.

I'll have a look to see what I can do 👍🏼

jthistle commented 3 years ago

@rockerbacon hey, how are you? Just wondering if there's any progress being made on this project :)

rockerbacon commented 3 years ago

@rockerbacon hey, how are you? Just wondering if there's any progress being made on this project :)

I switched jobs recently and things got a little busy. I'm resuming work on the project today. Apologies for my absence.

jthistle commented 3 years ago

No need at all to apologize, nice to see you're back

class101 commented 3 years ago

I have Vortex latest version 1.3.22 running here without Lutris but on Proton 5.13-5, added as non-Steam game. So far everything is working fine here on Arch Linux, mods installations, browser link opening in chrome, nxm in-app download handler, etc... I have also been able to neutralize the useless admin rights check and also the high performance usage when browsing the settings with the following dll overrides :

fsutil.exe=d;taskschd=d

I wrote and saved a little shell procedure on file for my need in setting up a proton prefix properly with vcrun2019, directx_Jun2010 and dotnet48 without the use of winetricks that usually installs much more than what is really needed but the Steamworks Shared redistributables and legacycompat/iscriptevaluator.exe commonly used by Steam to deploy dependencies instead.

Let me know if anybody interested, could write little Steam guide on how to get things done.

kleshas commented 3 years ago

I'd be interested

spannerman79 commented 3 years ago

I too am getting a bit miffed at how limited Lutris is. I've been looking more at Q4Wine to handle wine instances.

Yes there is more setup involved but at least I can actually export and import instances easily and very quickly. Good luck trying to do that with Lutris.

Q4Wine also downloads winetricks directly from https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks so its always up to date - another fault with Lutris. Even though you have selected "use system libs" it still wants to use their packaged winetricks. PITA.


_Before anyone states that I'm just pushing this (Q4Wine) to dodgy download/install games - feel free to take a look at my actual Steam Library and take note if I have or have not already have Skyrim on there._

class101 commented 3 years ago

I'd be interested

@kleshas

Here it is, tested on Vortex 1.4.8 (latest version as of writing)

https://steamcommunity.com/app/221410/discussions/0/3094509155631896210/

marcus-grant commented 2 years ago

Might be interested in helping but a discussion about the best approaches is probably necessary first and I'll start by suggesting ansible might be a good bridge to exiting lutris. It uses declarative YAML files to provision complex systems and perform devops operations way more complex than this and has a familiar syntax to anyone who's used to lutris. Otherwise of course we could just do plain BASH scripts.

Let me know what you think I might just create a new project and take a lot of your current work and see if implementing it in ansible is any easier or more maintainable. If you want an idea of what an ansible role looks like here's mine for managing my system dotfiles.

spannerman79 commented 2 years ago

ansible is more focused on massive automation ie kubernetes. To the end user (ie gamer) they will only have one instance of TES:Skyrm installed.

marcus-grant commented 2 years ago

@basschaser Yeah you're right, I think I'm trying to solve problems with Lutris as a whole, not this project in particular and without the crucial piece to do it, a WINE module for ansible. And yeah I tried the SteamTinkerLauncher and it seems like that already does most of what this is supposed to do, though I'm having trouble getting it to correctly setup the MO2 broker for nexus links, seems to work in Vortex though. I'll check out your project and see if I find anything that might get it more complete after figuring out a reliable way to backup my modded games and restoring them. Something standalone for just setting up game modding from nexus would be nice to have since it's easier to maintain than the 30k+ line bash script in STL (awesome as it is otherwise).

frostworx commented 2 years ago

Hi, steamtinkerlaunch author here. I prefer the "one thing well" philosophy as well, and thoroughly understand what you mean/criticize, but IMHO steamtinkerlaunch matches that description in this context perfectly, because it is one tool to tweak and tinker with all your steam games. There are not many options to do this in Steam apparently (and let's hope those few remain available), so the only user-friendly option is to have one tool for this one thing.

ps: yeah, ansible ftw ;)

rockerbacon commented 2 years ago

Apologies to everyone for the long absence. Work and college have kept me very busy but I finally found some time and motivation to finalize this migration.

Pre-release 3.0.2 is out for anyone interested. Now only a few things remain:

I expect all future developments to be a lot easier after this update.