Phalcode / gamevault-app

Frontend for the self-hosted gaming platform for drm-free games
https://gamevau.lt
Other
281 stars 12 forks source link

Auto Install Redistributables #146

Closed 46620 closed 1 year ago

46620 commented 1 year ago

Is your feature request related to a problem? Please describe. When launching a lot of games on fresh Windows installs/wine prefixes the required Visual C++ redist packages and DirectX will most likely not be installed, causing a lot of games to not function.

Describe the solution you'd like A way to provide a package similar to Steams "Steam Common Redistributables", which when installing (i think) the first game to your library installs the required VC++ Redists and DirectX for all games.

Another idea I had was having admins add a "redist" folder to their uploads to add the specific files for that game to auto install when #18 comes in, but that would slowly lead to a lot of bloat and duped files across a large collection.

Describe alternatives you've considered

An alternative out of app idea I had was sending users/keeping a copy of a batch installer for VC++Redist from MajorGeeks.

Alfagun74 commented 1 year ago

Honestly, I don't think GameVault is the best option for finding and installing missing redistributables for each game.

There's no need to clutter GameVault with these installers since most gamers either already have them or can easily download them if necessary.

What's your opinion on this, @Yelo420?

46620 commented 1 year ago

Oh for providing a steam common redist package, I meant the admin of an instance provides one that's installable from the server, not including one in gamevault itself.

Alfagun74 commented 1 year ago

Oh for providing a steam common redist package, I meant the admin of an instance provides one that's installable from the server, not including one in gamevault itself.

Why do you want to download and store those redists on your server instead of installing them from microsoft.com, for example, on the client when needed? Is there something I'm not understanding about your situation?

46620 commented 1 year ago

It's mostly a convenience thing if giving a non tech savvy family member access so they can play bejeweled 3 after losing their physical disc without having to wonder what msvcp100.dll is and risk going to one of those "Easy Driver Fixing" websites that has you install some sketch software.

KairuByte commented 1 year ago

I could actually see this being quite useful. While some packages are auto detected as missing by windows 11, and an offer to install them is prompted, many “less than tech competent” users will balk at missing dependencies.

Even just having a url to download (for example) direct x, and silently install it while prepping a game for first run, would likely be sufficient.

Just have the server admin provide a config file that includes the url to download from and the arguments to start it with. Would give the back end owner a chance to nip troubleshooting in the bud.

Yelo420 commented 1 year ago

I understand the idea behind it. Often this problem is already taken care of by the installer itself. But of course this is not always the case.

Let's assume a list of redistributables maintained by the admin. What keeps the admin from specifying fishy software? Especially under the aspect that GameVault then installs them "silently".

Alternatively, you could also just provide a kind of "recommendation list". This is then displayed to all users in appropriate places.

Here, however, the problem is that the user may not know how to install them.

I think the concept itself is good, but we have to be careful with the implementation.

Alfagun74 commented 1 year ago

I get where you're coming from, and I totally agree about prioritizing security. It's always better to be cautious when it comes to allowing silent installation of random executables for users. Another thing to consider is how the server administrator would even know which runtimes a game needs. Most people install those redistributables once, and then they rarely run into any errors afterward.

Of course, we could offer a link to the redistributables, but I doubt granny would be able to install them manually either. Maybe we should handle the installation of redistributables for granny in advance?

Perhaps just adding a documentation entry under Client -> Troubleshooting would be enough? That way, users like granny can find the information they need easily.

KairuByte commented 1 year ago

I think the concern about “fishy software” from the admin is… frankly silly. You’re literally installing files provided by the admin already, if you don’t trust the person you’re getting your games from, you’ve already lost the security game. An admin could just inject shady stuff into existing game installers to achieve the same.

Many installers do handle dependencies on their own, but there are many more that don’t. And inevitably you’ll end up having end users that have no idea what they’re doing, and the end result will be a bad overall experience at best.

As for how admins could know what is needed, it’s actually not that hard for many games. Steam actually has an extensive list, for one. And for games not on steam there exist tools like dependency walker. There are other sources as well, the Linux community has been dealing with the dependency problem with wine and similar for decades now.

I admit, there may be better ways to handle this type of issue. Maybe ask permission first? Don’t do it silently? I’m not sure. But I don’t really think “do it for them” is a great answer when the draw for this type of software is going to be “thank god i don’t need to help Wilson install games from my http server anymore.”

Yelo420 commented 1 year ago

"I think the concern about “fishy software” from the admin is… frankly silly. You’re literally installing files provided by the admin already" - Fair point

I also think that this would take some work off some admins (and of course the other users). I think we will build this feature in. But how and in what form I'm not sure yet. I would ask around in the community to find a solution that fits best for everyone.

Alfagun74 commented 1 year ago

Good point about trust in the administrator. Although many installers include prebuilt integrity checks. But whatever, I'm still not a fan of installing additional software without the user's consent.

I understand that a "do it for them" approach is not ideal either. Selecting the redists needed manually sounds cumbersome for the admin aswell.

If we want a solution that's secure and agreeable to all, here are a couple of ideas off the top of my head:

What do you think?

KairuByte commented 1 year ago

I actually like both options... However, the first may be an issue depending on licensing. I can honestly say that I am unsure if the current iterations of such a tool is permissive enough to bundle it into GV. This would likely need to be researched. That said, an alternative would be to download the tool on demand, with user permission.

I actually also like the second option. An all in one "handles 99% of cases" installer similar to Steam would be quite useful.

I could see both of these working hand in hand. Perhaps even having the results of the dependency checker report any missing dependencies back to the admin, so they could be added to the server side. It would add some more work to the admins side, but much less than having to (ideally) remote into the machine, or worse try to explain the solution over the phone.

To be completely honest, I am trying to think of minimalist ways for an admin to have to deal with their end users. I assume all of us have had the experience of just wanting to game with a family member, and that family member getting incredibly frustrated with how long it is taking. Any type of mitigation that can be baked into GV would be a godsend to such a situation, even if it does require some extra legwork on the admins side to prevent more work later on.

Note: Reporting back could easily be an opt out feature. Similar to how telemetry and "help us improve our service" options exist in things like Windows and iOS. In fact, most of this should likely be optional with some sort of explanation as to what each piece of the puzzle does. I know my end users don't care, and most literally give me remote access to their PC's because they trust me, so they would be fine with literally anything. But others are obviously going to be somewhat more discerning in what they allow.

ChaosTherum commented 1 year ago

I hate to keep harping on it, but I made a suggestion on the backend issues page that could potentially cover this. Essentially have some sort of package file that can list dependencies and links to download them from. I was thinking more in the context of internal dependencies like an update installer for a game or whatnot, but it could totally be used in this situation as well.

https://github.com/Phalcode/gamevault-backend/issues/148

Alfagun74 commented 1 year ago

We will reject this issue.

Analyzing dependencies for installers and executables is very complex, especially when dealing with multiple platforms. Managing these cases can become quite challenging.

Many games already include their own redistributables.

For the rare cases, we can consider the approach suggested by @ChaosTherum in #148, where admins can put the redists in the "extra files" section.