Refactor data location paths and add background service

Refactor DataLocationResolver to centralize data path resolution (ResolveLauncherDataPath, ResolveDesktopDataPath, ResolveConfigPath, ResolveLauncherLogsPath, ResolveLauncherStatePath) and replace usages of the previous ".launcher" layout with a "Launcher" folder. Update API: LoadConfig/SaveConfig reorganized and ApplyLocationChoice now accepts an optional custom path and migration flag; migration logic updated accordingly. Update dependent services and views (Logger, DeploymentLocator, UpdateEngineService, OobeStateService, StartupAttemptRegistry, LauncherDebugSettingsStore, OobeWindow) to use the new resolver APIs and paths. Add LauncherBackgroundService to load/validate/cache a custom splash background image and wire it into SplashWindow (AXAML/Axaml.cs) with UI placeholders and overlay. Misc: minor cleanup of Oobe/Splash XAML and related code adjustments and logging improvements.
This commit is contained in:
lincube
2026-04-25 18:14:29 +08:00
parent 5b4b9f32b5
commit 05ffadd1a0
13 changed files with 381 additions and 143 deletions

View File

@@ -23,7 +23,6 @@
</Design.DataContext>
<Grid x:Name="ContentGrid">
<!-- 步骤 1: 打字机动画开场 -->
<Grid x:Name="TypingStep" Margin="60,80,60,60">
<!-- 主标题区域(左上角) -->

View File

@@ -431,7 +431,7 @@ public partial class OobeWindow : Window
// 应用数据位置选择
if (!_isDebugMode)
{
_resolver.ApplyLocationChoice(_selectedDataLocationMode, _migrateExistingData);
_resolver.ApplyLocationChoice(_selectedDataLocationMode, null, _migrateExistingData);
}
await NavigateToStep(4);

View File

@@ -20,8 +20,20 @@
<views:SplashWindow />
</Design.DataContext>
<Grid RowDefinitions="*,Auto"
Background="#0B0B0B">
<Grid RowDefinitions="*,Auto">
<!-- 背景图片 -->
<Image x:Name="BackgroundImage"
Grid.RowSpan="2"
Stretch="UniformToFill"
IsVisible="False"
Opacity="0"/>
<!-- 半透明遮罩层 -->
<Border x:Name="BackgroundOverlay"
Grid.RowSpan="2"
Background="#0B0B0B"
Opacity="0.85"/>
<Grid Grid.Row="0"
Margin="24">
<TextBlock x:Name="AppNameText"

View File

@@ -29,12 +29,40 @@ public partial class SplashWindow : Window, ISplashStageReporter
private void OnWindowLoaded(object? sender, RoutedEventArgs e)
{
InitializeBackgroundImage();
if (this.FindControl<Border>("VersionTextBorder") is { } versionBorder)
{
versionBorder.PointerPressed += OnVersionTextClick;
}
}
private void InitializeBackgroundImage()
{
try
{
var imageInfo = LauncherBackgroundService.LoadBackgroundImage();
if (imageInfo is { IsValid: true, Bitmap: not null })
{
if (this.FindControl<Image>("BackgroundImage") is { } backgroundImage)
{
backgroundImage.Source = imageInfo.Bitmap;
backgroundImage.IsVisible = true;
backgroundImage.Opacity = 1;
}
Logger.Info("[SplashWindow] 背景图片加载成功");
}
else if (imageInfo is { Exists: true, IsValid: false })
{
Logger.Warn($"[SplashWindow] 背景图片校验失败: {imageInfo.ErrorMessage}");
}
}
catch (Exception ex)
{
Logger.Warn($"[SplashWindow] 加载背景图片失败: {ex.Message}");
}
}
private async void OnWindowOpened(object? sender, EventArgs e)
{
if (_isOpened)