-
Notifications
You must be signed in to change notification settings - Fork 7
Linux: implement relative installation #152
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
When setting an empty updater.conf next to the updater executable, the folder containing the updater executable is used to install the game.
|
This would be useful for the Lutris store. Updating a game there is painful because any update for the game has to go through a review process, so we aren't in control and an update can be slow to get. So with time we stopped updating the game. Such store offers the user the ability to install the game where they want to. Historically we unpacked the unizip. With such feature we would just unpack the updater and write an empty configuration file next to it, and the updater will install in the folder the user selected in Lutris. If a game was already installed in such folder, it will update the existing files. We would only need to update the game in Lutris when we update the updater. The updater is supposed to update itself in the same directory (not tested), so even if we are slow at updating it in Lutris, as long as the old one works, old installations will get the updated updater, and new installations will work with the old updater that will install the updated updater as part of the install process. The bonus is that by using the updater instead of the unizip, we install the desktop file and then set up the protocol handler, while retaining the ability for lutris to install in an arbitrary place. |
|
I flag this as draft because something doesn't work yet: the configuration file is never written, so it always consider the game to not be installed when restarting the updater. |
I found my mistake: I was setting the folder as config file path, instead of the file itself… It works. |
5b43939 to
a270a3f
Compare
|
I don't like that if you downloaded a file named What if we made it based on the updater binary having a magic file name instead? I assume you could rename it in the Lutris script thing. Note that with this idea we would need to disable |
|
Hmmm, and what if we use an hidden file with a unexpected name like |
630fd82 to
700e291
Compare
|
I implemented the renamed executable method. It works. Every Linux executable that starts with the For example you can name it That makes me think that maybe in the future we may add a similar mechanism with a |
700e291 to
b22ef68
Compare
|
Supposing we had a portable installer, do we really need a "relative" installer too? Like is it actually necessary/desirable to install the desktop files in the Lutris case? Maybe the UI control for editing the install path should be disabled? FWIW there's nothing about this installation mode that's really Linux-specific. Instead of modifying the Linux |
It is desirable in the lutris case to both:
Which is different than “portable”. |
|
So if it's OK to integrate everything with the system as usual, why do we need relative installation at all? I read that Lutris scripts may be implemented by forwarding to other launchers such as Steam or Battle.net. I assume that those launchers install everything in their own customary locations rather than a Lutris-specified one. Is the purpose just for Lutris to tell if the game was already previously installed by seeing if the updater binary exists? |
When renaming the updater with the
relativestring (any case) at the beginning of the name (for examplerelative-updaterorRelativeUnvanquished), the updater installs the game in the same folder the updater executable is.Original message:
When setting an empty updater.conf next to the updater executable, the folder containing the updater executable is used to install the game.
Fixes #90:
Needed by (if we want to do it):