using System.Windows; using ClaudeDo.Installer.Core; using ClaudeDo.Installer.Pages.InstallPage; using ClaudeDo.Installer.Pages.PathsPage; using ClaudeDo.Installer.Pages.ServicePage; using ClaudeDo.Installer.Pages.UiSettingsPage; using ClaudeDo.Installer.Pages.WelcomePage; using ClaudeDo.Installer.Steps; using ClaudeDo.Installer.Views; using Microsoft.Extensions.DependencyInjection; namespace ClaudeDo.Installer; public partial class App : Application { private ServiceProvider? _services; protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); _services = BuildServices(); // TODO(Task 11): replace with async InstallModeDetector Window mainWindow = new WizardWindow { DataContext = _services.GetRequiredService() }; DarkTitleBar.Apply(mainWindow); mainWindow.Show(); } protected override void OnExit(ExitEventArgs e) { _services?.Dispose(); base.OnExit(e); } private static ServiceProvider BuildServices() { var sc = new ServiceCollection(); // Core sc.AddSingleton(); sc.AddSingleton(); sc.AddSingleton(); // Pages sc.AddSingleton(); sc.AddSingleton(); sc.AddSingleton(); sc.AddSingleton(); sc.AddSingleton(); // Steps (registration order = execution order) sc.AddSingleton(); sc.AddSingleton(); sc.AddSingleton(); sc.AddSingleton(); sc.AddSingleton(); sc.AddSingleton(); sc.AddSingleton(); // ViewModels sc.AddSingleton(); sc.AddSingleton(); return sc.BuildServiceProvider(); } }