mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
Introduce install checkpoint support and resume logic for updates, plus related locking and validation. Adds InstallCheckpoint model, AppJsonContext serialization, and UpdatePaths helpers for deployment lock, apply-in-progress lock and install-checkpoint path. UpdateEngineService gains checkpoint load/save/delete, incoming-state validation, resume logic for PLONDS and legacy updates, apply lock handling, and safer cleanup; ApplyPendingPlondsUpdateAsync and ApplyPendingUpdate flow updated accordingly. Add DeploymentLock contract and extend UpdateState with pause/resume/cancel helpers. Tests updated to cover stale/valid checkpoint resume and legacy/PLONDS flows. CI: enhance ddss-publish to detect release channel, validate S3 assets, prepare and atomically publish channel pointer; add ddss-rollback workflow to publish rollbacks; adjust plonds-build concurrency and release events.
48 lines
2.1 KiB
C#
48 lines
2.1 KiB
C#
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
using LanMountainDesktop.Launcher.Models;
|
|
using LanMountainDesktop.Launcher.Services;
|
|
using LanMountainDesktop.Shared.Contracts.Launcher;
|
|
using LanMountainDesktop.Shared.IPC.Abstractions.Services;
|
|
|
|
namespace LanMountainDesktop.Launcher;
|
|
|
|
[JsonSourceGenerationOptions(
|
|
WriteIndented = true,
|
|
PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase,
|
|
PropertyNameCaseInsensitive = true)]
|
|
[JsonSerializable(typeof(SignedFileMap))]
|
|
[JsonSerializable(typeof(UpdateFileEntry))]
|
|
[JsonSerializable(typeof(PlondsUpdateMetadata))]
|
|
[JsonSerializable(typeof(PlondsFileMap))]
|
|
[JsonSerializable(typeof(PlondsComponentEntry))]
|
|
[JsonSerializable(typeof(PlondsFileEntry))]
|
|
[JsonSerializable(typeof(PlondsHashDescriptor))]
|
|
[JsonSerializable(typeof(SnapshotMetadata))]
|
|
[JsonSerializable(typeof(InstallCheckpoint))]
|
|
[JsonSerializable(typeof(AppVersionInfo))]
|
|
[JsonSerializable(typeof(StartupProgressMessage))]
|
|
[JsonSerializable(typeof(LauncherCoordinatorRequest))]
|
|
[JsonSerializable(typeof(LauncherCoordinatorResponse))]
|
|
[JsonSerializable(typeof(LauncherCoordinatorStatus))]
|
|
[JsonSerializable(typeof(PublicShellStatus))]
|
|
[JsonSerializable(typeof(PublicTrayStatus))]
|
|
[JsonSerializable(typeof(PublicTaskbarStatus))]
|
|
[JsonSerializable(typeof(PublicShellActivationResult))]
|
|
[JsonSerializable(typeof(LauncherResult))]
|
|
[JsonSerializable(typeof(HostDiscoveryConfig))]
|
|
[JsonSerializable(typeof(PluginManifest))]
|
|
[JsonSerializable(typeof(PendingUpgrade))]
|
|
[JsonSerializable(typeof(List<PendingUpgrade>))]
|
|
[JsonSerializable(typeof(OobeStateFile))]
|
|
[JsonSerializable(typeof(DataLocationConfig))]
|
|
[JsonSerializable(typeof(GitHubRelease))]
|
|
[JsonSerializable(typeof(GitHubAsset))]
|
|
[JsonSerializable(typeof(List<GitHubRelease>))]
|
|
[JsonSerializable(typeof(StartupAttemptRecord))]
|
|
[JsonSerializable(typeof(PrivacyConfig))]
|
|
[JsonSerializable(typeof(PrivacyAgreementState))]
|
|
[JsonSerializable(typeof(LanMountainDesktop.Shared.Contracts.Update.InstallProgressReport))]
|
|
[JsonSerializable(typeof(LanMountainDesktop.Shared.Contracts.Update.InstallCompleteReport))]
|
|
internal sealed partial class AppJsonContext : JsonSerializerContext;
|