Files
Fractured/tools/fractured-launcher-electron
Docker Build 1c85341b1f ci: disable electron-builder GitHub publish; add Gitea sync workflow
- Use --publish never in pack/CI so tagged builds do not require GH_TOKEN.
- Set build.publish to null and align publish:win with local-only packaging.
- Add Gitea release sync workflow and upload script; fetch script from default
  branch so reruns work for tags that predate the script.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 14:24:42 -05:00
..

Fractured Launcher (Electron)

Windows launcher with no extra console window, native Browse folder dialog, GitHub release assets + repo file sync, realmlist, optional auth, Play, and auto-update (via electron-updater). This is the only supported client launcher in this repo.

Requirements

Run from source

cd tools/fractured-launcher-electron
npm install
npm start

On first run, launcher.json is created next to the app (dev: in this folder). By default github.repo is Fractured-Distro (public release assets); no token is required for patches. Set GITHUB_TOKEN only if you override github to a private repo.

Build Windows installers

npm install
npm run pack:win

Produces under dist/:

Artifact Purpose
Fractured-Launcher-${version}-Setup.exe (NSIS) Recommended for players — supports seamless auto-update and restart.
Fractured-Launcher-${version}-Windows-Portable.exe No installer; players replace the file manually. Auto-update is less reliable than NSIS.

Auto-update behaviour

  • Packaged builds only (npm run pack:win output). In npm start dev mode, update checks are skipped (button still explains that).
  • ~5 seconds after launch, then every 6 hours, the app checks for a newer version.
  • When a download finishes, a dialog offers Restart now (calls quitAndInstall) or Later.
  • Manual check: button Check launcher updates in the UI.

Where updates are hosted

package.jsonbuild.publish targets Dawnforger/Fractured-Distro (public). electron-updater reads latest.yml from the latest release there; players do not need a GitHub token for launcher updates.

Private GitHub (if you change build.publish or github back to a private repo): set GH_TOKEN / GITHUB_TOKEN / github.token_env before starting the launcher so the updater can authenticate.

Public generic feed (optional CDN): set update_feed_url or LAUNCHER_UPDATE_URL to a folder that hosts latest.yml + installers; optional Bearer token if the host requires it.

Publishing a new launcher version

  1. Bump version in package.json (semver, e.g. 1.0.1).
  2. Create a GitHub personal access token with repo (or public_repo for public repos).
  3. From this directory:
set GH_TOKEN=ghp_your_token_here
npm run publish:win

That builds NSIS + portable and uploads update metadata and installers to the configured GitHub repos releases (see electron-builder publish).

Players on an older NSIS install will pick up the next version automatically on the next check.

Public distro repo (patches + launcher binaries)

Default default-launcher.json uses github.repo: Fractured-Distro so from_release assets (patch-Z.MPQ, Wow-patched.exe, …) download from Dawnforger/Fractured-Distro releasesno player token.

Publish assets there by:

  • GitHub Actions — workflow Sync release to Fractured-Distro (.github/workflows/distro-release-sync.yml): on release published on Dawnforger/Fractured, it builds the Electron launcher from that tag on Windows (npm run pack:win), downloads every asset attached to that release (patches, Wow-patched.exe, …), merges them (launcher files overwrite on duplicate names), and creates or updates the same tag on Fractured-Distro. Requires repository secret DISTRO_SYNC_TOKEN. Manual: Actions → run workflow with an existing tag.
  • Locally: scripts/publish-to-distro.sh (see script header) if you need to upload without a full release cycle.

If your public repo slug is not Fractured-Distro, edit DISTRO_REPO in the workflow / script and github.repo in launcher.json.

Private github.repo (optional)

For a private release source, set GITHUB_TOKEN (or github.token_env) with read access — do not embed a shared PAT in shipped launcher.json for all players.

Release asset names must match files[].source exactly when from_release: true. Use release_tag: "latest" for the newest release, or pin a tag.

CI

Workflow Fractured launcher CI (.github/workflows/fractured-launcher-ci.yml) runs on pushes/PRs under tools/fractured-launcher-electron/: Windows npm run pack:win and artifacts (*.exe, latest.yml, blockmaps). Actions → Fractured launcher CI → Run workflow runs it manually.

Config

Schema is defined by default-launcher.json (shipped in the app; first run copies to launcher.json beside the executable):

  • game_dir: WoW 3.3.5a root (contains Wow.exe).
  • update_feed_url: optional generic HTTPS base for launcher auto-update (overrides default GitHub feed when set).
  • github: owner, repo, ref (repo file paths), release_tag (latest or e.g. v1.0.0), token_env (env var name for a PAT when using private sources).
  • files: source, dest, backup, from_release (asset name on GitHub release vs repo path).
  • realmlist, auth, launch.