fix(first-boot): online branding re-apply + deferred sm-bootstrap cleanup #13
Reference in New Issue
Block a user
Delete Branch "fix/branding-online-and-bootstrap-cleanup"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two real-user-desktop findings from the e2e (the wizard itself now runs fully and BitLocker + recovery work):
1. Lock/login screen + wallpaper weren't branded (OEM About was). Same root cause as the UAC reset we already proved: Windows resets offline-baked personalization during OOBE (PersonalizationCSP lock screen, default-user wallpaper, FVE recovery message). Plain
SOFTWAREkeys like OEM About survive; personalization doesn't.Fix: stage
windows/branding/into the image and re-runApply-Branding -Mode OnlinefromSetupComplete(post-OOBE, as SYSTEM) where it sticks. Idempotent with the offline bake.2.
sm-bootstrapstill present after onboarding.TearDownAsync's in-sessionRemove-LocalUserno-ops — you can't delete the account you're logged in as.Fix: keep the best-effort in-session attempt, but defer the real removal to a SYSTEM
AtStartupscheduled task that runs on next boot (sm-bootstrap not logged on), removes the account +Win32_UserProfile, then deletes itself. Uses an-EncodedCommandpayload to dodge schtasks quoting.Not a code change: the VM's "no network adapter" was a Proxmox NIC regression to virtio (no driver in IoT LTSC) — fixed by switching the VM to Intel e1000. The real Pocket 4 uses its driver pack.
Verified: build.ps1 parses, welcome solution builds, 29/29 tests. Next: rebuild → restage → retest (expect branded lock screen + wallpaper, and sm-bootstrap gone after the first real-user boot).
Follow-up still tracked: escrow + display the BitLocker recovery key in the Done step; investigate the PCR-11
E_FVE_SECURE_BOOT_CHANGED(likely-SkipHardwareTestsealing) so TPM+PIN doesn't drop to recovery on the first post-enroll boot.🤖 Generated with Claude Code