Extracts the app-agnostic plumbing proven in gclo 1.0 into four packages that every future KofTwentyTwo Windows app builds on: - KofTwentyTwo.AppKit: AppInfo identity, AppPaths, BuildVersion, crash-safe FileActivityLog with retention, LogTail, atomic SettingsStore<T> with ShellSettings, Credential Manager secret vault, IUserPrompter seam - KofTwentyTwo.AppKit.Updates: Velopack startup hook, never-throwing GitHub Releases update service with stable/dev channel selection, and the shared "check for updates" flow (UpdateCoordinator) - KofTwentyTwo.AppKit.WinUI / .Wpf: code-built splash overlay, About, live log viewer, crash net, theme and window helpers, dialog adapters The two framework-free packages are held to 100% line coverage (109 tests). WinUI and WPF sample apps exercise every service and are driven end to end by 12 FlaUI tests. BrandTool generates the vector mark and multi-size .ico. CI mirrors gclo's gates (zero warnings, coverage, UI tests, format, CodeQL, dependency review); the release workflow packs, checksums, attests build provenance, publishes a GitHub release, and pushes to nuget.org. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
26 lines
763 B
C#
26 lines
763 B
C#
using KofTwentyTwo.AppKit.Updates;
|
|
using Microsoft.UI.Dispatching;
|
|
|
|
namespace AppKit.Sample.WinUI;
|
|
|
|
/// <summary>
|
|
/// Custom entry point (DISABLE_XAML_GENERATED_MAIN) so Velopack handles its install,
|
|
/// update, and uninstall hooks before any UI exists.
|
|
/// </summary>
|
|
public static class Program
|
|
{
|
|
[STAThread]
|
|
private static void Main()
|
|
{
|
|
VelopackStartup.Run();
|
|
|
|
// The remainder mirrors the XAML-generated Main.
|
|
WinRT.ComWrappersSupport.InitializeComWrappers();
|
|
Microsoft.UI.Xaml.Application.Start(callbackParams =>
|
|
{
|
|
SynchronizationContext.SetSynchronizationContext(new DispatcherQueueSynchronizationContext(DispatcherQueue.GetForCurrentThread()));
|
|
_ = new App();
|
|
});
|
|
}
|
|
}
|