CEF Lock Guide

May 22, 2026 ยท View on GitHub

cef-lock.json records the Chromium Embedded Framework (CEF) distribution used by AppCef. The lock keeps the staged runtime payload reproducible and gives maintainers a clear path for intentional CEF upgrades.

Restore Locked CEF

From the repository root, run:

> IntelPresentMon\AppCef\Batch\pull-cef.ps1

The script downloads the URI recorded in IntelPresentMon\AppCef\cef-lock.json, extracts the archive, rebuilds the CEF C++ wrapper from a clean build directory, stages the AppCef CEF files, and verifies that the staged runtime payload matches the lock file.

The normal restore path never modifies cef-lock.json.

Upgrade Locked CEF

Maintainers intentionally updating CEF should use the upgrade path:

> IntelPresentMon\AppCef\Batch\upgrade-cef.ps1 https://example.com/path/to/cef_archive.tar.bz2

The upgrade script downloads the archive, stages the new payload, updates IntelPresentMon\AppCef\cef-lock.json, and regenerates the installer CEF WiX fragments.

Review all generated changes with the CEF upgrade.

Work Directory

CEF download, extraction, and wrapper build work directories are created under a short temporary root by default, normally C:\pcef with a fallback to the system temp directory.

To use a different root, set PRESENTMON_CEF_WORK_ROOT before running pull-cef.ps1 or upgrade-cef.ps1:

> set PRESENTMON_CEF_WORK_ROOT=D:\cef-work
> IntelPresentMon\AppCef\Batch\upgrade-cef.ps1 https://example.com/path/to/cef_archive.tar.bz2

After a successful pull or upgrade, temporary CEF work directories created by the script are removed by default. Failed runs leave those directories in place for diagnosis.

To keep work directories after a successful run, set PRESENTMON_CEF_KEEP_WORK=1:

> set PRESENTMON_CEF_KEEP_WORK=1
> IntelPresentMon\AppCef\Batch\upgrade-cef.ps1 https://example.com/path/to/cef_archive.tar.bz2

Local Archives

As a fallback, both scripts can accept a local archive path:

> IntelPresentMon\AppCef\Batch\pull-cef.ps1 path\to\cef_archive.tar.bz2
> IntelPresentMon\AppCef\Batch\upgrade-cef.ps1 path\to\cef_archive.tar.bz2

If CEF was upgraded from a local archive instead of a URI, pull-cef.ps1 must also be given a matching local archive path.