mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-22 17:24:27 +08:00
Introduce a per-user OOBE state model and hardened launch/elevation handling. Adds OobeStateFile/OobeLaunchDecision models, OobeStateService (persisting %LOCALAPPDATA%/.launcher/state/oobe-state.json), and LauncherExecutionContext to capture elevation and user SID. CommandContext now normalizes/infers launch-source values (normal, postinstall, apply-update, plugin-install, debug-preview) and exposes maintenance checks. LauncherFlowCoordinator propagates richer launcher context details for diagnostics and suppresses OOBE for elevated/maintenance contexts. PluginInstallerService avoids requesting elevation for user-scoped installs and returns a clear error when installation target is outside the current user's LocalAppData. LauncherClient maps and surfaces result codes, UpdateWorkflow and installer invocation now pass explicit --launch-source values, and WelcomeOobeStep persists OOBE completion via the new service. Adds unit tests (CommandContext, OobeStateService, PluginInstallerService), docs/specs/checklists for the contract, and makes internals visible to tests.
12 lines
564 B
Markdown
12 lines
564 B
Markdown
# Launcher Upgrade Checklist
|
|
|
|
- [x] Build passes for `LanMountainDesktop.Launcher`.
|
|
- [x] `update check` command returns structured JSON result.
|
|
- [x] `plugin update` command returns structured JSON result.
|
|
- [x] Legacy plugin install arguments still execute.
|
|
- [x] OOBE and splash are implemented as separate windows.
|
|
- [x] Update and rollback logic use version directory markers.
|
|
|
|
- [ ] Treat `first_run_completed` as legacy-only compatibility data.
|
|
- [ ] Keep the authoritative OOBE state in `%LOCALAPPDATA%\LanMountainDesktop\.launcher\state\oobe-state.json`.
|