using System.Windows; using System.Windows.Threading; using Velopack; using ytLive.Helpers; namespace ytLive; /// /// Interaction logic for App.xaml /// public partial class App : Application { public App() { AppLog.Write("App ctor"); } protected override void OnStartup(StartupEventArgs e) { AppDomain.CurrentDomain.UnhandledException += (_, args) => AppLog.Write(args.ExceptionObject is Exception ex ? "AppDomain unhandled exception: " + ex : "AppDomain unhandled exception object: " + args.ExceptionObject); DispatcherUnhandledException += (_, args) => AppLog.Write(args.Exception, "Dispatcher unhandled exception"); AppLog.Write("App OnStartup begin"); // Velopack auto-update bootstrap — checks for updates on startup and // applies them (the app restarts automatically if an update is found). // Update URL is configured per-deployment (self-hosted on DO droplet); // when no URL is set, the check is a no-op. try { VelopackApp.Build() .Run(); } catch (Exception ex) { AppLog.Write($"Velopack bootstrap failed (non-fatal): {ex.Message}"); } base.OnStartup(e); AppLog.Write("App OnStartup end"); } }