Skip to content
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

[Feature request] Vortex downgrade #809

Closed
short-circuit opened this issue May 23, 2023 · 10 comments
Closed

[Feature request] Vortex downgrade #809

short-circuit opened this issue May 23, 2023 · 10 comments
Labels
enhancement New feature or request Vortex Mod Manager Issues related to installing or using Vortex Mod Manager with SteamTinkerLaunch

Comments

@short-circuit
Copy link

System Information

  • SteamTinkerLaunch version: 12.12
  • Distribution: Archlinux

Feature Description

Give the possibility to install an older version of Vortex as newer install tend to break. This can be manually downloaded and then installed through the STL terminal command specifying the path to the install file e.g.:

steamtinkerlaunch vortex install PATH_TO_INSTALLER

Or if possible just by specifying version number, STL should install the requested version such as:

steamtinkerlaunch vortex install 1.7.8

Please correct me if this is already possible. Currently it is locking me out of using Vortex since the latest install fails with any provide proton version. Older Vortex installed without problem.

@short-circuit short-circuit added the enhancement New feature or request label May 23, 2023
@sonic2kk
Copy link
Owner

sonic2kk commented May 23, 2023

Thanks for the feature request!

Please correct me if this is already possible. Currently it is locking me out of using Vortex since the latest install fails with any provide proton version. Older Vortex installed without problem.

Fresh installs of Vortex 1.8.0 and above work for me on Arch Linux with GE-Proton8-2 using STL-git. This has also been confirmed to work on Linux Desktop by another user, the outlier appears to be SteamOS (though #807 may resolve it, pending testing). If you're still having issues you could try STL from latest master, as it changes a little bit of the install process (mainly removes dotnet48 installation). The latest version I have tested is Vortex 1.8.3, and I confirmed that a fresh installed worked just now with GE-Proton8-2. But this is besides the point of the feature request, which tl;dr I agree with but have a couple of reservations.


I did consider the possibility of giving users the option to install older Vortex versions (mentioned in #802 (comment) 😉), particularly given that STL now has support for disabling Vortex auto-updates. The issue is that when specifying an older Vortex version, automatic updates would have to be disabled, otherwise Vortex has a chance of automatically updating. I'm not sure if this is a good idea or not, given that older Vortex versions will eventually have a cut-off according to Vortex (it shows a warning when you disable automatic updates), and a user might install an older version and have it also not work. However, a user can simply have enough sense to know that they should disable automatic updates before specifying a custom version.

From a user perspective, I like both of the commands you have listed, and I would like to add both of them. On the Global Menu I would like to add both as well but it's probably okay to just add a checkbox+dropdown for "Custom Vortex Version". A tooltip for them would probably also outline that using an older Vortex version should go hand-in-hand with disabling automatic updates to prevent Vortex from updating itself. A custom Vortex installer would still be supported from the commandline, I am hesitant to add it to the UI because I am not sure what should be "prioritised." if a user enables both, I would be inclined to say the custom installer would take priority, but not sure.


The real solution here is for Vortex to be more careful about breaking things downstream, but I am not against the principle of specifying a version :-)

@sonic2kk
Copy link
Owner

sonic2kk commented May 23, 2023

Taking an initial look at what might be required to implement this. A lot of the logic is already present, f.e. we already have code to get the last N GitHub tags for a project since #649, and we already have code to fetch GitHub releases. I think we'd just need to adapt the latest code logic to allow downloading based on a given tag. The latest version logic currently looks for the latest tag when it comes to pre-releases, and then builds a URL for the download using the latest tag, so it shouldn't be too hard to adapt some logic to take a given tag.

There have been a number of improvements to Vortex support in STL-git, so even though I don't use or much like Vortex, this change wouldn't be too out-of-place. My main concern is ensuring specified versions won't get overwritten, but I am hesitant to enable the disable auto-update option when a custom version is provided. Doing that kind of thing is a bit more hands-on than I'd like STL to be.

@sonic2kk sonic2kk added the Vortex Mod Manager Issues related to installing or using Vortex Mod Manager with SteamTinkerLaunch label May 23, 2023
@sonic2kk
Copy link
Owner

sonic2kk commented May 23, 2023

#810 is up which implements the version selection part. Example usage would be steamtinkerlaunch vortex install v1.7.0. However do note that because SteamTinkerLaunch no longer installs dotnet48, any version of Vortex which requires this will need to have this installed manually.

If a version of Vortex that you are installing (either an older one, newer one, or unofficial one) requires various dependencies that STL no longer provides automatically, you'll need to specify a custom prefix to install Vortex into from the Global Menu which has the required dependencies; ex: if Vortex 1.7.0 requires dotnet48, you'll need a prefix with dotnet48 and you can point STL to that. Likewise if you've set STL to point to a custom Vortex project URL, and this Vortex version has different dependencies, you'll need to create a prefix that meets all of the requirements before installing Vortex.

The PR does not implement selecting a custom executable, I will work on that in a separate PR.


If you'd like to test this branch, you can clone the repo, checkout the vtx-set-version branch, and then sudo make install. If you've installed STL via a package manager feel free to remove it. If you installed via ProtonUp-Qt, you can install STL-git from that and choose the vtx-set-version branch from the versions list (STL-git versions in ProtonUp-Qt list branches).

The PR only updates the English langfile, if you're using a different language let me know and I can update that langfile on the PR. I only update the English langfile during development in case some wordings change.

@short-circuit
Copy link
Author

Hey @sonic2kk ,
Thank you for implementing this so quickly. I must be doing something wrong.
I have completely wiped the STL folders (in .config and /dev/shm/) and tried to use the branch with the new commit.
Trying to install Vortex with ProtonGE-8.2 just results in the install window to appear and hang with the following message:
image
I tried to install multiple versions and clearing the folders in between to make sure it would act like a clean install each time.
Is there anything else I might have to clear out before trying again?

@sonic2kk
Copy link
Owner

sonic2kk commented May 24, 2023

Thank you for testing!

Just a shot in the dark: Perhaps you need to update Winetricks ? sudo winetricks --self-update should do the trick. This will update Winetricks to the latest version (I believe it pulls from git). If you don't have Winetricks installed explicitly then STL will be using Winetricks itself I think, in which case STL should be updating Winetricks itself. I'm not sure if the automatic downloading of Winetricks only applies to Steam Deck, I haven't checked around that code recently 😅

Could you also clarify where exactly you're seeing this message? Is it in the terminal, or the window that appears during Vortex installation? I think it's the latter but I'd just like to confirm.

The changes in the branch should only touch the downloading logic, as this fetches and downloads the executable based on a given version, and then tells STL to use this executable for the installation process (which already happens, basically this PR just sets the version and the install etc logic is untouched). It could be that this issue comes from using STL-git where we now use Winetricks to install dotnet6, and sometimes Winetricks needs to be bleeding edge for newer Proton versions. You can check the STL log and do a search for winetricks and see which version it is using.

Feel free to try again on master and see if you get the same issue. I'll investigate myself later on when I have some time too :-)

@sonic2kk
Copy link
Owner

sonic2kk commented May 24, 2023

Just tested this with Vortex 1.8.0 and it installed for me, using steamtinkerlaunch start v1.8.0. I ran sudo winetricks --self-update a week or so ago though.

Looking up the message a little bit, it seems this comes from the Steam client: https://bbs.archlinux.org/viewtopic.php?id=285889

Did you have Steam opened while testing? Vortex, for some reason, will open Steam during installation (there is probably a command STL runs somewhere that opens Steam, which I never noticed until the other day when Steam happened to crash without me realising it). It is possible that opening Steam and trying again may fix it, if Winetricks does not. The message may be a red herring as it could just be output from the Steam client being piped to the StatusWindow.

@short-circuit
Copy link
Author

short-circuit commented May 25, 2023

Yeah so I just did a winetricks update and now it all works correctly. Install went through with some error messages (windows version not compatible and rundll32 cannot run the application) but most probably something wrong with my wine configuration. Steam automatically opens for me too during vortex install/start.
Clicking ignore on those messages just continued the process and vortex installed and started. 👍

Steam automatically opens for me too during vortex install/start.

Thanks for the quick implementation, this will be very useful in the future IMO.

@sonic2kk
Copy link
Owner

Those issues are strange but it is probably more to do with Wine (either your config or in general) than something STL is doing. There was one other report a while ago about the Wine version, but I couldn't reproduce it. As for the rundll32 error, I believe I have seen a similar issue when switching between Proton versions but that was mostly to do with dotnet48 (e.g. installing dotnet48 with Proton Version X and running something in that prefix, then running the same thing again in that prefix with Proton Version Y). What matters though is that Vortex is working :-)

Info dialogs like that are a bit annoying speaking from a user perspective but I can't reproduce them at the moment. If you (or anyone reading this from the future) knows how to resolve the problems I'd be happy to try and patch it though!

I'd just like to confirm that the standard Vortex behaviour still works for you, i.e. steamtinkerlaunch vortex start will download the latest, and steamtinkerlaunch vortex start <tag> will download the version you gave. One thing to note is that Vortex tags releases as vX.Y.Z, with the v at the beginning. STL could have some logic to try and append v if it's not there, but I think for usage like this it's best to avoid any correction-cases like this and trust the user 😉


Thanks for the quick implementation, this will be very useful in the future IMO.

No problem at all, thank you for testing and helping out! Based on your testing I'll probably also update the changelog courtesy note to remind users to update Winetricks manually, it's an easy step to miss in all fairness.

I also think this feature will be useful, with the caveat that installing older versions may not have all the necessary setup steps. It would be infeasible to account for/check for different Vortex versions and only install XYZ dependencies for a given version. Ex: dotnet48 may be required for Vortex 1.7, but it is not required for Vortex 1.8. Likewise if there is a very old version of Vortex that might need even more dependnecies, those won't be installed.

However, STL gives users the tools to point Vortex to a different prefix which they can configure themselves. I may look into an option to run Winetricks in Vortex's prefix at some point specifically for cases like this to make the tinkering slightly more straightforward, though I'd want to allow opening the Winetricks GUI as well as passing arguments from the commandline, so I'd need to figure that out first.


I'll update the help page for Vortex to document this new functionality, as well as updating the langfiles. I'll then do one final pass at testing, and then merge. Should hopefully be merged in tonight. Once it is, I'll post a note here and close this issue.

Thanks again!

@sonic2kk
Copy link
Owner

Oh, I totally forgot about the part of this feature request for a custom Vortex executable. I'll probably add that in a separate PR :-)

@sonic2kk
Copy link
Owner

sonic2kk commented May 25, 2023

The option to use a custom Vortex version based on a tag has been added with fb28b0c, I'll close this issue now :-)

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Vortex Mod Manager Issues related to installing or using Vortex Mod Manager with SteamTinkerLaunch
Projects
None yet
Development

No branches or pull requests

2 participants