Closed ramcguire closed 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.
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!
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.
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:
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):
I think this should work for any arbitrary installation as Steam only checks for updates on the depots that are installed.
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.
Yeah just updating the manifest for everything under "InstalledDepots" should work. I'll experiment with that tomorrow.
Released now, thanks again!
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.