kinsi55 / BeatSaber_UpdateSkipper

Simple tool to prevent Steam from Updating Beat Saber whenever there happens to be an update so you dont need to copy around files and end up possibly wrecking your setup.
MIT License
185 stars 14 forks source link

Automatically fetch manifest through Steam #1

Closed ramcguire closed 3 years ago

ramcguire commented 3 years ago

Using SteamKit2, automatically fetch the latest Manifest ID and fill in the information in the textbox.

Also used a more robust .gitignore and a little bit of debugging which helped in getting this functioning.

Looking at abstracting this to other installed games.

kinsi55 commented 3 years ago

Hey,

First off, thanks a lot for your PR! I had looked into using Steamkit to accomplish exactly this but decided it wasnt worth effort - Seems like its not as much effort as I had thought It'd be! I'm gonna merge this however will do some changes / correct formatting before publishing it as an update.

ramcguire commented 3 years ago

Yeah SteamKit documentation is definitely lacking. Not as bad as it seems though. I have a proof of concept solution for doing this process for any arbitrary installed application working in Python. I'll spend some time integrating it here as well. Next time I'll try to adhere more to your code style!

kinsi55 commented 3 years ago

The main problem with making this work for arbitrary apps is actually locating the correct depot ID to use, for various apps it can be pretty tricky from what my 5 minute google search gave me when I had considered making this that.

ramcguire commented 3 years ago

AFAIK we would only need to update the manifests listed under "InstalledDepots" in the appmanifest*.acf. For example I checked Portal 2 and my appmanifest_620.acf looks like this: image

Then using SteamKit to query for product info, we just need to update the depots found in the appmanifest*.acf file. The product info response returns more than necessary, but it does include all the depots I have installed. With Beat Saber, updating the "public" manifest is all that is needed as there is only one installed depot. It seems like this is the same case here (this is just looking at depot 624): image

I think this should work for any arbitrary installation as Steam only checks for updates on the depots that are installed.

kinsi55 commented 3 years ago

With Beat Saber, updating the "public" manifest is all that is needed as there is only one installed depot

If you have any DLC theres more, but yes I suppose brute force updating all of them might just work.

ramcguire commented 3 years ago

Yeah just updating the manifest for everything under "InstalledDepots" should work. I'll experiment with that tomorrow.

kinsi55 commented 3 years ago

Released now, thanks again!