Closed Nutzzz closed 2 years ago
OK, here's my results so far. Not really great news [for a "perfect" solution] with many of them.
Amazon Games: [I've just implemented this one, and I'll be submitting a pull request shortly.] SQLite: %userprofile%\AppData\Local\Amazon Games\Data\Games\Sql\GameInstallInfo.sqlite
Battle.net: Protobuf: C:\ProgramData\Battle.net\Agent\product.db
JSON: C:\ProgramData\Battle.net\Agent\data\cache\.\.\*
Bethesda.net: [Doesn't look like there's anything else helpful in the filesystem or registry.]
Big Fish: [Doesn't look like there's anything else helpful in the filesystem or registry.]
GOG Galaxy: SQLite: C:\ProgramData\GOG.com\Galaxy\storage\galaxy-2.0.db
[However, unlike the others, GOG is looking at the Software registry keys rather than relying on the Uninstall key. We'll have to test what happens on a reinstall; this method is perhaps unnecessary.]
IGClient: [I've just implemented this one, and I'll be submitting a pull request shortly.] JSON: %userprofile%\AppData\Roaming\IGClient\storage\installed.json
Ubisoft Connect: [I reinstalled Windows, and got Ubisoft working again.] [Doesn't look like there's anything else helpful in the filesystem or registry, however it looks like Ubisoft helpfully re-creates the uninstall entries.]
It looks like the Origin fix isn't going to survive the transition to EA Desktop that's currently in beta. EDIT: I may have spoken too soon. Even after uninstalling both, and then installing just EA Desktop from scratch, it looks like the Origin stuff I use is duplicated. At least for now.
Implemented GOG as well in this commit.
Implemented Battle.net in this commit.
I'm going to close this. Bethesda has been deprecated, and I don't think there's another solution for the others (e.g., Big Fish and Indiegala).
Making sure this issue is captured from my fork (https://github.com/Nutzzz/GLC/issues/1): Relying on the Windows Uninstall registry is not ideal when game libraries can be used without it (e.g., after reinstalling Windows, you can just point Steam at an existing library [without reinstalling the games]).
EDIT: I managed to come up with solutions by ingesting files/databases for Steam, Epic, itch, Amazon, Origin, and Indiegala (though Origin is currently only a partial solution since I'm not currently getting the .exe name unless the uninstall entry also exists, and FindGameBinaryFile(), especially in its current state, gets the wrong .exe a lot of the time. And Indiegala currently always relies on FindGameBinaryFile().
Investigations into the other platforms are in the comment below.