diff --git a/Flow.Launcher/App.xaml.cs b/Flow.Launcher/App.xaml.cs index 952ca70c458..b64c24784d0 100644 --- a/Flow.Launcher/App.xaml.cs +++ b/Flow.Launcher/App.xaml.cs @@ -1,5 +1,6 @@ using System; using System.Diagnostics; +using System.IO; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -21,6 +22,7 @@ using Flow.Launcher.ViewModel; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using Stopwatch = Flow.Launcher.Infrastructure.Stopwatch; namespace Flow.Launcher @@ -31,54 +33,121 @@ public partial class App : IDisposable, ISingleInstanceApp private const string Unique = "Flow.Launcher_Unique_Application_Mutex"; private static bool _disposed; private readonly Settings _settings; + private readonly IHost _host; public App() { // Initialize settings + WriteToLogFile(1); var storage = new FlowLauncherJsonStorage(); - _settings = storage.Load(); - _settings.SetStorage(storage); - _settings.WMPInstalled = WindowsMediaPlayerHelper.IsWindowsMediaPlayerInstalled(); + WriteToLogFile(2); + try + { + _settings = storage.Load(); + } + catch (Exception ex) + { + WriteToLogFile(ex.Message); + } + WriteToLogFile(3); + try + { + _settings.SetStorage(storage); + } + catch (Exception ex) + { + WriteToLogFile(ex.Message); + } + WriteToLogFile(4); + try + { + _settings.WMPInstalled = WindowsMediaPlayerHelper.IsWindowsMediaPlayerInstalled(); + } + catch (Exception ex) + { + WriteToLogFile(ex.Message); + } + WriteToLogFile(5); // Configure the dependency injection container - var host = Host.CreateDefaultBuilder() - .UseContentRoot(AppContext.BaseDirectory) - .ConfigureServices(services => services - .AddSingleton(_ => _settings) - .AddSingleton(sp => new Updater(sp.GetRequiredService(), Launcher.Properties.Settings.Default.GithubRepo)) - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - ).Build(); - Ioc.Default.ConfigureServices(host.Services); + try + { + WriteToLogFile($"AppContext.BaseDirectory: {AppContext.BaseDirectory}"); + _host = Host.CreateDefaultBuilder() + .UseContentRoot(AppContext.BaseDirectory) + .ConfigureServices(services => services + .AddSingleton(_ => _settings) + .AddSingleton(sp => new Updater(sp.GetRequiredService(), Launcher.Properties.Settings.Default.GithubRepo)) + .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddSingleton() + ).Build(); + } + catch (Exception ex) + { + WriteToLogFile(ex.Message); + } + WriteToLogFile(6); + try + { + Ioc.Default.ConfigureServices(_host.Services); + } + catch (Exception ex) + { + WriteToLogFile(ex.Message); + } + WriteToLogFile(7); // Initialize the public API and Settings first API = Ioc.Default.GetRequiredService(); + WriteToLogFile(8); _settings.Initialize(); + WriteToLogFile(9); + } + + private static void WriteToLogFile(string message) + { + // d:\LOG.TXT + using var sw = new StreamWriter("d:\\LOG.TXT", true); + sw.WriteLine($" {message} "); + } + + private static void WriteToLogFile(int message) + { + // d:\LOG.TXT + using var sw = new StreamWriter("d:\\LOG.TXT", true); + sw.WriteLine($" {message} "); } [STAThread] public static void Main() { + WriteToLogFile("A"); if (SingleInstance.InitializeAsFirstInstance(Unique)) { + WriteToLogFile("B"); using (var application = new App()) { + WriteToLogFile("C"); application.InitializeComponent(); + WriteToLogFile("D"); application.Run(); + WriteToLogFile("E"); } } } private async void OnStartupAsync(object sender, StartupEventArgs e) { + WriteToLogFile(10); await Stopwatch.NormalAsync("|App.OnStartup|Startup cost", async () => { + WriteToLogFile(11); Ioc.Default.GetRequiredService().PreStartCleanUpAfterPortabilityUpdate(); Log.Info("|App.OnStartup|Begin Flow Launcher startup ----------------------------------------------------"); diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index 43c1dfd9007..d760787bcf2 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -90,8 +90,8 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all