-
Notifications
You must be signed in to change notification settings - Fork 572
Description
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
- Shared install directory:
C:\Program Files\CEF\Versions\<version>(with fallback locations) - Version range matching: Apps specify vmin/vmax; installer finds newest compatible version
- Multi-app coordination: Database tracks registered apps and their requirements
- Automatic updates: Background checks for new CEF versions via CDN
- Safe pruning: Unused CEF versions removed only when no apps need them
- 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.