The creator's ruling (2026-09-27) is Store MSIX + Store IAP, so Microsoft delivers the updates and the in-app updater is gone rather than parked. This is a COMPLIANCE action, not cleanup: the Velopack bootstrap downloaded and executed a payload, which Store policy 10.2.2 does not permit. Three edit sites, as planned: the PackageReference in ytLive.csproj, 'using Velopack;' in App.xaml.cs, and the bootstrap block. The self-hosted DigitalOcean update-URL droplet dies with it. Guard: ytLive.Tests/StorePackagingTests.cs - the ONE test asserts the app project references no updater package (Velopack/Squirrel/NetSparkle/AutoUpdater/WinSparkle) and that no app source file uses the updater API. The check matches CODE (a using directive, a type usage), not a bare word, so a file's prose may still name what it deliberately does not do. Smoke-tested after the removal: MainWindow loaded, 0 exceptions in startup.log. Full suite 437/437, 0 warnings.
40 lines
1.4 KiB
C#
40 lines
1.4 KiB
C#
using System.Windows;
|
|
using System.Windows.Threading;
|
|
using ytLive.Helpers;
|
|
|
|
namespace ytLive;
|
|
|
|
/// <summary>
|
|
/// Interaction logic for App.xaml
|
|
/// </summary>
|
|
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");
|
|
// Attribution (2026-09-04): every take must be traceable to the exact binary
|
|
// that produced it — the wordmark shows the release counter (BuildStamp.Release);
|
|
// the per-build GUID is forensic only and lands here.
|
|
AppLog.Write($"Build {ytLive.Helpers.BuildStamp.Id} (compiled {ytLive.Helpers.BuildStamp.BuiltLocal})");
|
|
|
|
// There is deliberately NO self-update bootstrap here: the Microsoft Store updates the
|
|
// app (TASK 48 — Store MSIX route), and a second updater would fight it.
|
|
|
|
base.OnStartup(e);
|
|
AppLog.Write("App OnStartup end");
|
|
}
|
|
}
|