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

Does this work as an offline installer? #410

Closed Darthagnon closed 1 week ago

Darthagnon commented 1 week ago

Does ProtonUp-Qt work as an offline installer for Proton, Wine, etc.?

When I get a Steam Deck, I'm planning to install Windows on it purely because there are offline installers available for most software that will work without an internet connection to package managers' repos.

I wish Linux had the same philosophy, and was wondering whether this tool would install these dependencies without internet?

DavidoTek commented 1 week ago

No, ProtonUp-Qt downloads all compatibility tools from GitHub. It wouldn't be possible to include all possible tools because they would use up several hundreds of gigabytes.

You can download GE-Proton as an archive file without using ProtonUp-Qt from another computer and transfer it using a thumb drive in theory...

sonic2kk commented 1 week ago

Much software on Linux can be installed offline if not installed via a package manager; for example, AppImages.

ProtonUp-Qt can be used offline via the AppImage, but as mentioned it cannot install tools offline because they are fetched from external sources. Much functionality does work offline though, like the Shortcut Editor, Games List, Batch Update. It can still help you manage manually installed tools.

Regardless of operating system, tools that are a frontend for installing software from the web will always require an Internet Connection. It was recently (a matter of hours ago, #412) proposed to add functionality to extract a given archive into a compatibility tool folder using ProtonUp-Qt. Should such a proposal be eventually implemented, it could aid in offline usage.

Darthagnon commented 1 week ago

No, ProtonUp-Qt downloads all compatibility tools from GitHub. It wouldn't be possible to include all possible tools because they would use up several hundreds of gigabytes.

You can download GE-Proton as an archive file without using ProtonUp-Qt from another computer and transfer it using a thumb drive in theory...

GE-Proton is only 415mb? I'm not too sure where to manually extract it, but #415 would help a lot!

sonic2kk commented 1 week ago

One version of GE-Proton is only 415mb. Multiply that by all the releases, even just the last few. Plus, there's no way for ProtonUp-Qt to get the latest version unless it packaged a version with each release, which is unreasonable.

On top of this, ProtonUp-Qt also allows you to install other Proton versions. Even just the ones with Advanced Mode disabled, Proton-tkg stands out as another large one. There's also Kron4ek Wine builds, which there's reason why you might not want to use the latest so it's impossible to know which one should be downloaded without packaging several versions.

Expanding beyond Steam there's also Wine-GE which is of similar size, and Wine-tkg. Not to mention the variations thereof (builds from Wine Master can be up to 1gb!) and those are downloaded from CI, so there are several builds.

Even just packaging a few releases of each tool for each launcher we're already into tens of gigs. And the ones we pre-package would have to be updated with each release, some of which would get outdated very quickly. And ProtonUp-Qt would then have to update very often just to package newer archives to extract. This means the releasing strategy would also have to change, as there may be in-progress features in master that are pending follow-up PRs to finalize.

Not to mention here either the logistics of adding the releases into the archive. Short of manually placing the archives into ProtonUp-Qt and manually uploading a release, these would need to be downloaded and injected on CI, which would take a long time. ProtonUp-Qt would also have to be updated so Ctmods knew where to find the built-in ones. Users then also have to trust the archives ProtonUp-Qt has built in as blobs, because they aren't available on the repo, and we probably won't want to build each Proton version ourselves on CI so we can't add them as subprojects or something. True users also have to trust when we download the archives but the source for how we do that is available and it's much easier to vet Python code that downloads an archive than it is to vet blobs in releases.

I also somewhat challenge the "only" 415mb. The ProtonUp-Qt AppImage is 90mb, approximately a quarter of that size. On the flip side, the Flatpak if you don't have the KDE Runtime is quite large. We don't want to balloon the package sizes. Even just including the latest GE-Proton (which wouldn't make sense, there's no reason for GE-Proton to get special treatment other than bias) that would, at best, double the filesize. And these tools are already compressed as much as they probably can be so further compression is unlikely to make a significant enough difference that packaging the tools becomes feasible.

It is overall in my opinion just not feasible to include the tools in ProtonUp-Qt. It would be cumbersome to maintain, drastically increase file size, and he harder to vet from a security perspective.

I'm not too sure where to manually extract it

You can manually extract it to the folder that ProtonUp-Qt shows on the Main Menu, beside the launcher name. If you cannot see the full path on the window, you can click on the dropdown to view the full path. This can be done fully offline if you use the AppImage for example.

image

If you have any tools installed already, you can select that tool on the Main Menu, click "Show info", and the "Install directory" label will display the path. You can then copy and paste this path into your file manager. However having a tool installed would require you to have either already installed a tool to this location

image

It would also be possible to try to manually find the path. It depends on your distribution and how you installed Steam, but the main paths are as follows:

These paths are noted in constants.py but admittedly it is difficult to infer the paths if you do not know Python. Still, if you're interested, that's how ProtonUp-Qt determines the Steam paths.

This file also contains the paths for other launchers, although there is some Ctmod-specific logic to extract Lutris ctmods into, for example, the /runtimes directory instead of the /runners/wine directory.