Skip to content

XAOSTECH/EGS-LL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

EGS-LL

GitHub repo GitHub release Licence

Build GUI Bash Lint Issues Pull Requests Stars Forks

Last Commit Repo Size Code Size Contributors

Stability Maintenance


Experienced Game Store Launcher Launcher β€” quality-of-life wrapper for game launchers on Windows


πŸ“‹ Table of Contents


πŸ” Overview

A quality-of-life wrapper for game launchers on Windows (e.g. Epic Games Store).

EGS-LL does not reverse-engineer, modify, or patch the launchers in any way. It exclusively uses publicly available Windows APIs (registry keys, filesystem operations, process monitoring) to automate tedious manual workarounds that users already perform.

The Problem

When you move, back up, or restore a game folder that was installed through the Epic Games Store, the launcher refuses to recognise the existing files. Instead it shows "Destination folder is not empty" and insists on a full re-download β€” even though a perfectly valid .egstore backup folder with manifests is sitting right there.

Users have worked around this for years with a tedious manual dance:

  1. Rename the existing game folder (e.g. RedDeadRedemption2 β†’ RedDeadRedemption22)
  2. Click Install in the launcher (pointing at the same parent directory)
  3. Wait for the download to start (optionally let it reach ~3 % for stability)
  4. Pause the download
  5. Delete the newly created (mostly-empty) folder
  6. Rename the backup folder back to the original name
  7. Resume β€” the launcher detects the .egstore data and verifies instead of re-downloading

EGS-LL automates this entire process.


✨ Features

EGS-LL ships with two interfaces: a PowerShell CLI for scripting and a WinForms GUI for point-and-click operation. Both automate the same underlying recovery workflow.

Feature CLI GUI Status
Recover Install β€” automate the folder-swap verification trick βœ… βœ… Implemented
List Games β€” show all EGS-managed games with install state βœ… βœ… Implemented
Show Info β€” display EGS paths, config, and registry data βœ… βœ… Implemented
Drive Scanning β€” find unregistered EGS games across all drives β€” βœ… Implemented
Automated Pause/Resume β€” three-tier cascade: UI Automation β†’ process suspension β†’ user prompt β€” β€” Not implemented
Real-time Progress β€” coloured log and progress bar during recovery β€” βœ… Implemented
Backup & Restore β€” automatic backup with rollback on failure/cancel βœ… βœ… Implemented

πŸ“₯ Installation

Prerequisites

  • Windows 10/11
  • Epic Games Store launcher installed

CLI only:

  • PowerShell 5.1+ (ships with Windows)

GUI only:

  • .NET Framework 4.8 (pre-installed on Windows 10 1903+ and Windows 11)

Option A: GUI (recommended)

Download EGS-LL.exe from the latest release and run it. No installation required β€” it's a single portable executable.

The GUI requests administrator elevation on launch. This is needed for registry access and process suspension. See Trust & Verification below for details on what elevated access is used for and how to verify the binary.

Option B: CLI

# Clone the repository
git clone https://github.com/XAOSTECH/EGS-LL.git
cd EGS-LL

PowerShell may block unsigned scripts by default. To allow EGS-LL to run:

# Allow local scripts to run (one-time setup)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# Or allow for the current session only
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

πŸš€ Usage

GUI

Launch EGS-LL.exe. The main window shows all detected EGS games with their install state.

Action How
Refresh Click Refresh to reload games from EGS manifests
Scan Drives Click Scan Drives to find unregistered game folders (.egstore) across all fixed drives
Recover Select a game β†’ click Recover Selected (or right-click β†’ Recover)
EGS Info Click EGS Info to view launcher paths and registry configuration

The Source column shows where each game was detected: EGS (from manifests) or Scan (discovered on disk).

During recovery, a modal dialogue shows real-time progress with a coloured log. The GUI handles the entire folder-swap flow automatically β€” including pausing/resuming the EGS download process.

CLI

# List detected games
.\egs-ll.ps1 list

# Show EGS configuration and paths
.\egs-ll.ps1 info

# Recover an existing game folder
.\egs-ll.ps1 recover "Fortnite"

# Recover with a custom game folder path
.\egs-ll.ps1 recover "Fortnite" -GameDir "D:\Games\Fortnite"

# Emergency restore a backup folder
.\egs-ll.ps1 restore "D:\Games\MyGame"

# Skip confirmation prompts
.\egs-ll.ps1 recover "Fortnite" -Yes

Examples

πŸ“˜ Example 1: Recover a game via CLI
.\egs-ll.ps1 recover "Red Dead Redemption 2"

The tool will:

  1. Locate the game via EGS manifests
  2. Validate the .egstore directory exists
  3. Rename the folder out of the way
  4. Guide you through starting/pausing the install in EGS
  5. Swap the folders back
  6. EGS verifies existing files instead of re-downloading
πŸ“— Example 2: Recover with a custom path
.\egs-ll.ps1 recover "Fortnite" -GameDir "E:\Games\Fortnite"

Use -GameDir when the game folder exists but has no EGS manifest (e.g. copied from another machine).

πŸ“™ Example 3: Discover and recover an unregistered game via GUI
  1. Launch EGS-LL.exe
  2. Click Scan Drives β€” the scanner checks common game directories then performs a shallow scan of all fixed drives
  3. A game found on disk but missing from EGS manifests shows as Unregistered with source Scan
  4. Select it β†’ click Recover Selected
  5. The recovery dialogue automates the entire flow including EGS process suspension

�️ Trust & Verification

Why the binary is unsigned

EGS-LL is an open-source project distributed as a portable .exe. The binary is currently unsigned, which means:

  • Windows SmartScreen will show a "Windows protected your PC" warning the first time you run it
  • The UAC prompt will show "Unknown publisher" instead of a verified name

This is normal for open-source software distributed outside of package managers. Signed code-signing certificates cost hundreds of pounds per year β€” we are evaluating free OSS signing via SignPath.io.

How to verify the download

Every release includes a SHA256SUMS.txt file. To verify the binary matches what CI built:

# Download both EGS-LL.exe and SHA256SUMS.txt from the release
# Then verify the hash:
$expected = (Get-Content SHA256SUMS.txt).Split(' ')[0]
$actual   = (Get-FileHash EGS-LL.exe -Algorithm SHA256).Hash
if ($expected -eq $actual) { Write-Host "βœ“ Hash matches" -ForegroundColor Green }
else { Write-Host "βœ— Hash mismatch β€” do not run this file" -ForegroundColor Red }

You can also compare the hash against the CI build log: open the build-gui workflow run for the release tag and check the "Collect artifacts" step output.

What elevation is used for

The GUI requests administrator privileges (requireAdministrator in the app manifest). Here is exactly what elevated access enables:

Action Why Elevated What It Does
Registry read HKLM keys require admin on some configurations Reads EGS install paths and launcher location (read-only, never writes)
Process suspension OpenProcess with PROCESS_SUSPEND_RESUME Tier 2 fallback: freezes the EGS process to pause downloads via NtSuspendProcess
Filesystem operations Game folders in Program Files may be ACL-restricted Renames/moves game folders during recovery

The primary pause mechanism (Tier 1) uses Windows UI Automation to click the Pause button in EGS β€” this does not require elevation. Process suspension is only attempted as a fallback.

EGS-LL never:

  • Writes to the Windows registry
  • Modifies EGS launcher files
  • Sends any data over the network
  • Accesses files outside of game directories and EGS manifest paths

Building from source

If you prefer not to run a pre-built binary, you can build from source with a single command:

dotnet build gui/EGS-LL.csproj -c Release

The output is at gui/bin/Release/net48/EGS-LL.exe. Requires the .NET SDK 8.x.


οΏ½πŸ”§ How It Works

Registry & Manifest Reading

EGS-LL reads:

  • HKLM\SOFTWARE\WOW6432Node\Epic Games\EpicGamesLauncher β€” launcher install paths
  • HKLM\SOFTWARE\WOW6432Node\Epic Games\UnrealEngineLauncher β€” data path overrides
  • %ProgramData%\Epic\EpicGamesLauncher\Data\Manifests\*.item β€” game manifest files (JSON)
  • Per-game .egstore\ directories β€” chunk/staging manifests

Install Recovery Flow

The GUI automates the full flow end-to-end. The CLI guides the user through pause/resume steps manually.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  User selects game to recover            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ Read EGS manifests β”‚
     β”‚ Locate game folder β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ Validate .egstore exists   β”‚
     β”‚ (proves prior EGS install) β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ Rename folder: Game β†’ Game_bak β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ Launch EGS install via URI scheme  β”‚
     β”‚ com.epicgames.launcher://install/  β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ Monitor for new folder creation    β”‚
     β”‚ (FileSystemWatcher + polling)      β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ Pause download (three-tier)        β”‚
     β”‚  1. UI Automation (click Pause)    β”‚
     β”‚  2. NtSuspendProcess (fallback)    β”‚
     β”‚  3. User prompt (manual pause)     β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ Delete new folder                  β”‚
     β”‚ Rename Game_bak β†’ Game             β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ Resume download (UIA or process)   β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ EGS verifies existing files        β”‚
     β”‚ instead of re-downloading          β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Drive Scanner (GUI)

The GUI includes a drive scanner that finds EGS games not registered in the launcher manifests:

  1. Phase 1 (fast): Checks common game directories (Epic Games, Games, Program Files, etc.) on all fixed drives
  2. Phase 2 (thorough): Shallow recursive scan (depth 2) of drive roots, skipping system directories
  3. Results are merged with manifest data β€” games found only on disk show as Unregistered with source Scan

πŸ“ Project Structure

EGS-LL/
β”œβ”€β”€ egs-ll.ps1              # CLI entry point
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ registry.ps1        # EGS registry key reader
β”‚   β”œβ”€β”€ manifest.ps1        # .item / .egstore manifest parser
β”‚   β”œβ”€β”€ recovery.ps1        # Install recovery automation
β”‚   └── utils.ps1           # Shared helpers (logging, validation)
β”œβ”€β”€ gui/
β”‚   β”œβ”€β”€ EGS-LL.csproj       # .NET Framework 4.8 WinForms project
β”‚   β”œβ”€β”€ Program.cs           # Entry point (admin elevation check)
β”‚   β”œβ”€β”€ app.manifest         # UAC admin elevation manifest
β”‚   β”œβ”€β”€ Core/
β”‚   β”‚   β”œβ”€β”€ RegistryHelper.cs      # Read-only EGS registry detection
β”‚   β”‚   β”œβ”€β”€ ManifestReader.cs      # Parse EGS .item manifest files
β”‚   β”‚   β”œβ”€β”€ ProcessHelper.cs       # Launch/detect/suspend/resume EGS
β”‚   β”‚   β”œβ”€β”€ RecoveryEngine.cs      # Full recovery workflow orchestration
β”‚   β”‚   β”œβ”€β”€ DriveScanner.cs        # Scan all drives for unregistered games
β”‚   β”‚   └── UIAutomationHelper.cs  # UIA-based EGS button interaction
β”‚   └── Forms/
β”‚       β”œβ”€β”€ MainForm.cs         # Main game library grid (dark theme)
β”‚       └── RecoveryForm.cs     # Modal recovery progress dialogue
β”œβ”€β”€ .github/workflows/
β”‚   β”œβ”€β”€ build-gui.yml        # Reusable build workflow (callable)
β”‚   └── release.yml          # Release automation (dev-control template)
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ README.md
β”‚   β”œβ”€β”€ CONTRIBUTING.md
β”‚   β”œβ”€β”€ CODE_OF_CONDUCT.md
β”‚   └── SECURITY.md
└── LICENSE

πŸ”„ CI/CD

The project uses GitHub Actions for automated builds and releases.

Workflow Purpose
build-gui.yml Builds the GUI on windows-latest. Reusable via workflow_call β€” the release workflow auto-discovers and triggers it. Also supports workflow_dispatch for standalone testing.
release.yml Full release automation (changelog, GPG-signed tag, GitHub release with artifacts and checksums). Powered by the dev-control template.

Building from Source

The GUI requires the .NET SDK (8.x) to build. The CI handles this automatically β€” you don't need the SDK installed locally.

# If you do have the SDK:
dotnet build gui/EGS-LL.csproj -c Release

The release workflow passes the version tag to the build, embedding it in the executable. Manual/test builds default to "experimental".


βš–οΈ Legal

This project is not affiliated with, endorsed by, or associated with Epic Games, Inc.

EGS-LL operates exclusively as an external wrapper. It:

  • Does not modify, patch, or inject into the Epic Games Store launcher binary
  • Does not reverse-engineer any proprietary protocols or obfuscation
  • Does not bypass any DRM, authentication, or licence checks
  • Only reads publicly accessible registry keys and user-owned files on disk
  • Only automates filesystem operations (rename/move) that users already perform manually
  • Only interacts with the launcher through its public URI scheme and standard Windows process APIs

Use of this tool is at your own risk and subject to the Epic Games Store EULA. Review their terms before use.


🀝 Contributing

Contributions welcome! Please read our Contributing Guidelines before submitting PRs.

Please keep the wrapper-only philosophy in mind:

  • No launcher binary modification
  • No network interception or MITM
  • No memory injection or hooking
  • Registry reads only (no writes to EGS-owned keys)
  • Filesystem operations on user-owned game directories only

See also: Code of Conduct | Security Policy


πŸ—ΊοΈ Roadmap

  • Install recovery automation (folder-swap verify trick)
  • Game listing with install state
  • EGS installation info display
  • GUI wrapper with dark theme
  • Automated pause/resume β€” three-tier cascade (UI Automation β†’ NtSuspendProcess β†’ user prompt)
  • Drive scanning for unregistered games (BFS, one-per-drive, reparse-point safe)
  • CI build pipeline (GitHub Actions, Windows runner)
  • Dynamic versioning (tag β†’ version, manual β†’ experimental)
  • SHA256 checksums in releases
  • Batch recovery for multiple games
  • Code signing via SignPath.io (free for OSS)
  • Support for additional launchers

See the open issues for a full list of proposed features and known issues.


πŸ’¬ Support


πŸ“„ Licence

Distributed under the GPL-3.0 Licence. See LICENCE for more information.


Git Tree Visualisation

Git Tree Visualisation

Full SVG Β· Interactive version Β· View data

Packages

 
 
 

Contributors