steamsync & Epic Games Store URIs
Building off my last post, I built a little script called steamsync
that will import your Epic Games Store games as shortcuts into Steam. It is pip
installable (pip install steamsync && steamsync.py
), so give it a try!
(pypi package)
Epic Games Store URIs
I noticed that some games failed to launch, eg GTAV would give an authentication error. Using Procmon, I looked at the arguments that the Epic Games Store uses to launch the game. Here is an example:
"D:/Epic Games/GTAV/PlayGTAV.exe" -AUTH_LOGIN=unused -AUTH_PASSWORD=abcdefghijklmnopqrstuvwxyz123456 -AUTH_TYPE=exchangecode -epicapp=9d2d0eb64d5c44529cece33fe2a46482 -epicenv=Prod -EpicPortal -epicusername="gaben" -epicuserid=abcdefghijklmnopqrstuvwxyz12345 -epiclocale=en
Yup, sure enough, just launching PlayGTAV.exe
and signing in with your Rockstar
account that is linked to your EGS account isn’t enough, you need to do it through
the launcher. Maybe I should ask for a refund :)
Anyway, this means that we can’t launch GTAV from Steam with just a shortcut to
PlayGTAV.exe
, although most other, simpler games work.
Shortcuts
Fortunantly, the Epic Games Store has a feature that lets you make a desktop shortcut. Let’s make one and see what the target is:
com.epicgames.launcher://apps/9d2d0eb64d5c44529cece33fe2a46482?action=launch&silent=true
Eureka! The 9d2d0e
… is the Epic AppName
field that I noticed in the last
blog post.
Sure enough, after some testing, putting that URI in as the shortcut in Steam launches the game.
Unfortunately, since we aren’t giving the path to the executable, Steam doesn’t automatically pull in the games icon (update: see below). And the EGS has a habit of opening itself after the game exits, which can be kind of annoying in Big Picture mode.
UPDATE
Good news everyone, if you just give the path to the executable as the icon
value in shortcuts.vdf
, Steam will get the icon from the executable, even if
you use a URI!
steamsync
Versions of steamsync
after 0.2.0
have this fix in place. If you want to use
the path to the executable method, use the --use-paths
option. This works for
most games.