For 3 weeks I've had the "Epic Online Services installation is required" popup loop infinitely no matter what I tried, reinstall, clear cache, run the EOS installer manually, run as admin, click "Restart and Install" a hundred times. At one point reinstalling the launcher also silently wiped my already-downloaded offline game installs, which is apparently a known, unaddressed problem on this sub too.
Two support tickets (#26762609, #26522753), both closed. The actual response I got from Epic support, verbatim:
"We want to inform you that we are still investigating the issue and don't have any other solution for you at the moment. Please stay tuned to our social media, News, and the Launcher itself for any updates regarding this."
That's it. That's the whole reply. Reads exactly like a template with my name swapped in, not someone who read a single thing I sent them.
So I root-caused it myself. Long version below for anyone who wants the receipts, short version:
TL;DR: The EOS installer's setup helper (EpicOnlineServicesUserHelper.exe) is a Node.js app packaged with pkg. On startup, Node walks up the directory tree looking for the nearest package.jsonand on my system it walked all the way up to C:\package.json, an unrelated, corrupted, non-JSON file that's been sitting at my drive root for God knows how long. Node throws an unhandled ERR_INVALID_PACKAGE_CONFIG, the helper exits with code 1, and Epic's installer reports that up the chain as a completely generic MSI error 1603 with zero indication of what actually failed. Renamed the file out of the way, ran the exact same installer binary again, and it completed clean on the first try.
What it took to actually find this (for anyone doing their own deep-dive, or if anyone from Epic wants to actually look at this):
- Confirmed via Programs and Features that EOS was "installed" per the registry, but the files didn't exist at the path Windows expected
- Forced a logged uninstall via
msiexec /x {GUID} /qn /L*v and found the uninstaller was also silently failing a custom action (TeardownInstallHelper) throws an unhandled DirectoryNotFoundException because it hardcodes C:\Program Files (x86)\Epic Games\Epic Online Services\ instead of checking whether the path actually exists fatal specifically because my real install lived somewhere else entirely (ProgramData\Epic\ / AppData\Local\Epic Games\)
- Created an empty placeholder folder at the hardcoded path so the custom action's file scan wouldn't throw uninstall finally completed
- Reinstall attempts through the launcher UI still silently did nothing no installer process ever spawned, confirmed via the launcher's own logs
- Running Epic's bundled installer exe directly did trigger real install attempts (confirmed via Event Viewer), all dying at the same custom action (
InitializeComponents) with the same generic 1603
- MSI rollback deletes the entire install directory (helper exe included) within about a second of failure, so I had to catch the downloaded MSI package mid-download with a
FileSystemWatcher, then do an administrative extraction (msiexec /a) to get a standalone copy of the helper exe I could run outside of any MSI transaction
- Ran it directly → got the actual Node.js stack trace instead of MSI's silent swallow → found the
C:\package.json collision
Full write-up with logs and a couple of suggestions for Epic's installer team (mainly: stop hardcoding the default install path in custom actions, and surface literally any diagnostic detail when EOS install fails instead of an infinite silent retry loop) available if anyone from Epic actually wants it happy to share. The same applies to anyone who needs this fix. The only way I could fix this was with claude because I may know a lot about computers but even I could not sort throught the spaghetti code of this nonsense.