Files
SilverMetal/windows/welcome/runtime/webview2/README.md
sysadmin 30a168e853
All checks were successful
Build SilverMetal Enhanced - Windows ISO / build (pull_request) Successful in 4m46s
perf(welcome): cut first-boot cold-start + add loading affordance
The Welcome wizard showed nothing until WebView2 cold-started and Blazor
booted, so the whole startup cost presented as a blank window long enough
that operators thought first boot had failed.

- Native MAUI splash overlay (renders in the first frame, no WebView2/JIT
  dependency) + a visually identical in-page splash inside #app, so the
  native -> webview -> Blazor handoff reads as one continuous loading
  screen. Fades out on first successful WV2 NavigationCompleted.
- PublishReadyToRun=true (publish-only) to remove first-run JIT on the
  one-shot cold-disk path. R2R header verified present after publish.
- Fixed-version WebView2 runtime baked offline next to the exe (build.ps1
  stages it, app points WEBVIEW2_BROWSER_EXECUTABLE_FOLDER at it). Removes
  the Evergreen registry probe and the LTSC "no WebView2 at all" risk flagged
  in welcome-app-spec.md; air-gap friendly. Absent => falls back to Evergreen.
- De-flash launch: drop the `cmd /c` wrapper and add -WindowStyle Hidden in
  autounattend FirstLogonCommands (kills the console flash + one process).

Verified: Release build clean, win-x64 self-contained publish succeeds with
R2R confirmed, 38/38 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:06:02 +01:00

2.0 KiB

Fixed-version WebView2 runtime (vendored)

The SilverOS Welcome wizard is a MAUI Blazor Hybrid app — it needs the Microsoft Edge WebView2 Runtime. IoT Enterprise LTSC images frequently ship without it, and even when present, the Evergreen runtime adds first-boot cold-start cost (registry probe; on-demand install if absent). To make first boot fast and air-gapped, we bake a fixed-version runtime here and point the app at it via WEBVIEW2_BROWSER_EXECUTABLE_FOLDER (see MauiProgram.cs).

What goes in this folder

The extracted contents of a "Microsoft Edge WebView2 Fixed Version" distribution — i.e. this directory must directly contain msedgewebview2.exe (plus its sibling DLLs, *.pak, locales, etc.). The build (windows/installer/build.ps1, Copy-WelcomePayload) detects msedgewebview2.exe and copies the whole folder to C:\Program Files\SilverOS\Welcome\webview2\ inside the image.

windows/welcome/runtime/webview2/
├── README.md            <- this file (the only thing committed)
├── msedgewebview2.exe   <- you add these
├── *.dll
├── *.pak
└── ...

How to obtain it

  1. Download the Fixed Version (x64) CAB from the official WebView2 distribution page: https://developer.microsoft.com/microsoft-edge/webview2/ → "Fixed Version". Match the channel/arch to the target (x64, since the app publishes win-x64).
  2. Expand the CAB and copy the inner runtime folder's contents here so that msedgewebview2.exe sits directly in this directory.
  3. Pin the version in windows/installer/inputs.manifest.json alongside the other baked inputs (SBOM hygiene).

If you skip this

The build does not fail — it logs a warning and the image relies on whatever Evergreen runtime is present at first boot. Fine for a quick VM smoke test; not recommended for shipped LTSC media (risk of a blank/hung wizard and slower cold start).

The runtime binaries are not committed (large, Microsoft-redistributable, version- pinned per build). Only this README is tracked.