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>
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
- 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). - Expand the CAB and copy the inner runtime folder's contents here so that
msedgewebview2.exesits directly in this directory. - Pin the version in
windows/installer/inputs.manifest.jsonalongside 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.