Solaire / GLC

Lightweight, console-based, tool which automatically detects installed games and displays them to the user.
GNU General Public License v3.0
17 stars 3 forks source link

Better game library detection where available #18

Closed Nutzzz closed 2 years ago

Nutzzz commented 3 years ago

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.

Nutzzz commented 3 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.]

Nutzzz commented 3 years ago

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.

Nutzzz commented 3 years ago

Implemented GOG as well in this commit.

Nutzzz commented 2 years ago

Implemented Battle.net in this commit.

Nutzzz commented 2 years ago

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).