Skip to content

win: Add shared installer to bootstrap.exe #4093

@magreenblatt

Description

@magreenblatt

Summary

Add installer capabilities to CEF's existing Windows bootstrap executable to support shared CEF installations across multiple applications. This is the Windows implementation of #3836. Full technical details will be published once finalized.

Motivation

Currently, each CEF-based application bundles its own copy of CEF binaries (~200MB+). This wastes disk space and makes security updates slow to propagate. A shared installation model allows multiple applications to use a common CEF installation, with automatic updates and version management.

Proposal

Extend the existing bootstrap.exe to add installer functionality:

  • Launcher mode (default): Find compatible CEF version, install if needed, launch application
  • Installer mode (/update, /uninstall): Manage CEF versions explicitly

Reasons to add installer capabilities to the existing executable:

  • Installer mode is only triggered by explicit flags (/update, /uninstall)
  • Default behavior (no flags, CEF available) is unchanged from current bootstrap
  • Minimal size increase for installer code
  • Single build target, single signing process
  • Clients already rename bootstrap.exe to their app name

Key Features

  1. Shared install directory: C:\Program Files\CEF\Versions\<version> (with fallback locations)
  2. Version range matching: Apps specify vmin/vmax; installer finds newest compatible version
  3. Multi-app coordination: Database tracks registered apps and their requirements
  4. Automatic updates: Background checks for new CEF versions via CDN
  5. Safe pruning: Unused CEF versions removed only when no apps need them
  6. Code signing: Catalog file verification for all installed binaries

Commands

Client.exe                           # Launch (install CEF if needed)
Client.exe /update [/background]     # Check for updates
Client.exe /uninstall                # Unregister app, prune unused CEF versions

App Configuration

Embedded or adjacent JSON:

{
  "appid": "<uuid>",
  "vmin": "137.1",
  "vmax": "137.99"
}

Database Schema

{
  "schema_version": 1,
  "apps": [
    {"uuid": "<uuid>", "vmin": "137.1", "vmax": "137.99"}
  ]
}

Forward-compatible design: newer versions only add fields; older installers ignore unknown fields and skip pruning if schema is newer than understood.

Integration

Apps using bootstrap.exe already rename and ship it as their main executable (e.g., Client.exe). The installer handles CEF management transparently.

Apps with separate installers (e.g., ClientSetup.exe) can trigger CEF install/uninstall via command-line flags during their install/uninstall flows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bootstrapRelated to the Windows bootstrap executableenhancementEnhancement requestinstallerRelated to the shared installerwindowsWindows platform

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions