All checks were successful
Build SilverMetal Enhanced - Windows ISO / build (pull_request) Successful in 4m46s
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>
45 lines
2.0 KiB
Markdown
45 lines
2.0 KiB
Markdown
# 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.
|