perf(welcome): cut first-boot cold-start + add loading affordance
All checks were successful
Build SilverMetal Enhanced - Windows ISO / build (pull_request) Successful in 4m46s
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>
This commit is contained in:
@@ -183,6 +183,22 @@ function Copy-WelcomePayload {
|
||||
} else {
|
||||
Write-Warning " No apps dir found at $appsDir -- image will ship with no app catalog."
|
||||
}
|
||||
# Stage the fixed-version WebView2 runtime, if vendored, next to the app.
|
||||
# Cold-start + air-gap: a fixed-version runtime is just files (no installer
|
||||
# step at first boot) and removes the dependency on whether IoT Enterprise LTSC
|
||||
# ships WebView2 at all. Operator populates windows\welcome\runtime\webview2\
|
||||
# with an EXTRACTED "Microsoft Edge WebView2 Fixed Version" distribution (the
|
||||
# folder that contains msedgewebview2.exe) -- handled like the drivers dir:
|
||||
# absent is allowed (VM/dev test), in which case the app falls back to Evergreen.
|
||||
$wv2Src = Join-Path $WindowsDir 'welcome\runtime\webview2'
|
||||
if (Test-Path (Join-Path $wv2Src 'msedgewebview2.exe')) {
|
||||
$wv2Dest = Join-Path $dest 'webview2'
|
||||
$null = New-Item -ItemType Directory -Force $wv2Dest
|
||||
Copy-Item (Join-Path $wv2Src '*') $wv2Dest -Recurse -Force
|
||||
Write-Host " Staged fixed-version WebView2 runtime to $wv2Dest"
|
||||
} else {
|
||||
Write-Warning " No fixed-version WebView2 runtime at $wv2Src (expected msedgewebview2.exe) -- image will rely on the Evergreen runtime being present at first boot. See windows\welcome\runtime\webview2\README.md."
|
||||
}
|
||||
# --- Guard: verify the payload actually landed in the mounted image -------
|
||||
$stagedExe = Join-Path $dest 'SilverOS.Welcome.App.exe'
|
||||
if (-not (Test-Path $stagedExe)) {
|
||||
|
||||
Reference in New Issue
Block a user