Skip to content

Ea app support - #1859

Draft
utkarshdalal wants to merge 4 commits into
masterfrom
ea-app-support
Draft

Ea app support#1859
utkarshdalal wants to merge 4 commits into
masterfrom
ea-app-support

Conversation

@utkarshdalal

@utkarshdalal utkarshdalal commented Aug 26, 2026

Copy link
Copy Markdown
Owner

Description

Recording

Type of Change

  • Bug fix
  • Performance / stability improvement
  • Compatibility improvements
  • Other (requires prior approval)

Checklist

  • If I have access to #code-changes, I have discussed this change there and it has been green-lighted. If I do not have access, I have still provided clear context in this PR. If I skip both, I accept that this change may face delays in review, may not be reviewed at all, or may be closed.
  • This change aligns with the current project scope (core functionality, stability, or performance). If not, it has been explicitly approved beforehand.
  • I have attached a recording of the change.
  • I have read and agree to the contribution guidelines in CONTRIBUTING.md.

Summary by cubic

Adds EA App support for Steam titles that ship the EA installer bundle, so games like The Sims 4 now install and launch through EA Desktop instead of failing silently. Requires Proton 11.

New Features

  • Detects EA App titles by EAappInstaller.exe, generates the headless-install cmd, and sources the 245MB MSI from a sibling EA install or by carving it out of the game's own installer.
  • Pre-registers EABackgroundService and opens the EA Desktop UI on first install so the user can sign in before the launch chain continues.
  • Runs installScript.vdf keyed Run Process entries as a pre-install step for Bionic Steam, honoring each process' HasRunStringKey.
  • Repairs the EA registry keys EA's self-heal leaves broken under Wine, routes EA's Qt hosts through builtin WineD3D, and forces the CEF subprocess to software rendering.
  • Launches EA App titles through a straight-line script that starts EABackgroundService, waits for the first-run bootstrap, then invokes Link2EA.exe; Steam-linked accounts sign in silently.
  • Loads a DNS shim into EA App containers that routes res_query and getaddrinfo through Android's resolver.

Bug Fixes

  • Re-applies EA game fixes right before guest launch so installer sessions cannot overwrite repairs.
  • Defers Steam API restore when no Steam user is available.
  • Returns a valid empty ListInputDevices reply so EA Desktop's UI no longer hits a fatal X error at startup.

Written for commit d4f6b59. Summary will update on new commits.

Review in cubic

@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@utkarshdalal
utkarshdalal force-pushed the ea-app-support branch 7 times, most recently from 30f87a5 to a501faf Compare August 27, 2026 04:22
Bionic Steam skips the Windows Steam client's first-run InstallScript
processing, so EA titles never install the EA App. Parse installScript.vdf,
honor each process's HasRunStringKey in the prefix registry for idempotency,
and apply the script's registry strings and file copies. Limited to games
that ship the EA installer bundle.
@utkarshdalal
utkarshdalal force-pushed the ea-app-support branch 3 times, most recently from 6ff07eb to 8a4458c Compare August 27, 2026 04:49
Detect EA App games by the installer bundle in the game dir - no per-game
registration. The gamefix self-provisions the headless installer (cmd
generated in code, the 245MB MSI copied from a sibling EA install; sc
create pre-registration stops wine msi rolling back the install on fresh
prefixes), repairs the EA registry that EA's own self-heal fails to fix
under wine (broken SDK paths crash Link2EA in rpcrt4), keeps EA's Qt
hosts on builtin WineD3D with the CEF subprocess on software rendering,
and writes a launch script that starts EABackgroundService and polls it
to RUNNING before invoking Link2EA.exe directly - Link2EA races a cold
service and EA rewrites its protocol registry keys on every service
start, so neither the wait nor the handler can live in the registry.
The gamefix is re-applied right before the game session for EA titles
only: installer sessions overwrite its registry work on their wineserver
flush, and on a cold install the EA binaries only exist afterwards.
EA's DirtySDK cannot resolve hostnames through bionic's resolver, so a
prebuilt LD_PRELOAD shim (source: gamenative-dns-shim repo) routes
res_query/getaddrinfo through Android's resolver for any EA App
container. Accounts linked to Steam sign in silently via the Link2EA
exchange token. Requires Proton 11.
@utkarshdalal
utkarshdalal force-pushed the ea-app-support branch 2 times, most recently from ea0fe69 to 948acb4 Compare August 27, 2026 06:45
Utkarsh Dalal added 2 commits August 27, 2026 19:07
…n-in

Source the 245MB install MSI from the game's own EAappInstaller.exe when no
copy exists: scan the WiX Burn bundle for the payload CAB, carve it, and pull
the MSI out with imagefs cabextract. The install cmd now narrates each phase
instead of sitting on a blank prompt, and opens the EA Desktop UI after a
successful install so the user can sign in before the launch chain continues.
The link2ea gate script is straight-line now: wine cmd nondeterministically
deadlocks spawning children inside for-loops, and sc start already blocks
until the service is up.
EA Desktop's UI issues the legacy XInput ListInputDevices request; replying
BadImplementation is a fatal X error that kills the client before its window
exists. Return a valid empty device list.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant