DavidoTek / ProtonUp-Qt

Install and manage GE-Proton, Luxtorpeda & more for Steam and Wine-GE & more for Lutris with this graphical user interface.
https://davidotek.github.io/protonup-qt
GNU General Public License v3.0
1.16k stars 39 forks source link

Allow offline installing compatibility tools from archives #414

Open DavidoTek opened 5 days ago

DavidoTek commented 5 days ago

https://github.com/DavidoTek/ProtonUp-Qt/issues/412 , https://github.com/DavidoTek/ProtonUp-Qt/issues/410

Allow for installing from an archive: this would make it so that any forked, custom version of proton can be installed easily to Steam


This needs another UI with following options:

I would hide this behind advanced mode though. I'm not sure where we should put this button. There are 3.5 options:

  1. Add another button to (a) the main window (b) some other dialog
  2. Add it as an option in the drop down box of the install dialog
  3. Add a drop down arrow to the "Add tool" button (not very Steam Deck friendly, I would not consider that option)
sonic2kk commented 5 days ago

I stated in earlier issues but will also state here: I love this idea! My input on the mentioned features:

Archive (Textbox with select folder button)

I think there should be an option to choose what the top-level archive is. This is possibly tricky to implement though. What I mean by this is, say a user downloads a custom Wine-tkg build from a fork via CI. It's going to be a ZIP artifact that contains another archive inside. If a user selects the ZIP archive we should prompt them to choose what the top-level folder to extract should be so that they extract the right item from the archive. A tool called ModOrganizer 2 allows you to do this to some degree to choose what the top-level mod folder is in an archive if it can't tell, so perhaps we should do something along these lines.

Either way we will also have to implement some logic to determine the archive type. I am unsure how to do that, but it is surely possible as this has been a solved problem for archive software since forever :smile:

Launcher

When choosing a launcher we should filter out certain tool types that are not supported (i.e. DXVK/vkd3d is not supported for Steam).

Type [optional] (e.g., Wine, DXVK, ...)

Perhaps we could implement some logic to "guess" this based on directory structure. For example if something contains a proton script or something we can assume it's Proton. It doesn't have to go in an initial implementation or anything but possibly a nice QoL feature.

Similarly if we detect only DLLs and .so libs and if these are only one subdirectory deep (to make sure we don't match DLLs included with Proton flavours) we could assume it's a DXVK/vkd3d runtime.

That kind of would need to be wired in to account for the launcher though, as we don't allow runtimes for Steam for example. Potentially we could warn the user if we detect a tool that has a type which is incompatible with the current launcher, but whether that's helpful or not will depend on how accurate we could be at auto-detecting the type!

  1. Add another button to (a) the main window (b) some other dialog
  2. Add it as an option in the drop down box of the install dialog

I think both of these are good in combination. Having both options allows the user to either do it from the Main Menu or from the CtInfo.

But if we have to go with one, an option on the Main Menu is probably the most clear approach. We could add it as a util button with an archive icon, but that might not be super clear.