Files
Beyhan Oğur d5f52cc3d3 first commit
2026-09-03 04:45:36 +03:00

1.4 KiB

Single-project WinExe targeting net48 with WPF. Entry point is App.xaml.cs which bootstraps Exceptionless telemetry, parses CLI args via CommandLineParser into a static Options object, auto-detects the current version from ClassicAssist.dll, and resolves defaults (Path, CurrentVersion). The UI layer is a thin MainWindow bound to MainViewModel; all business logic lives in MainViewModel: it runs a background Task that calls CheckForUpdate, which uses Octokit's GitHubClient to list releases from Settings.Default.RepositoryOwner/RepositoryName, compares tag versions against CurrentVersion (or honors --force), kills an optional parent process (--pid), downloads the first .zip asset via HttpClient, verifies size, extracts to %TEMP%\CAUpdate-{version} using System.IO.Compression.ZipFile, then either recursively copies files into --path or relaunches itself with --stage Install --updatepath ... to perform a two-phase install when the package contains another updater. Misc/ holds reusable WPF behaviors (AutoScrollBehaviour, CloseBehaviour) and an InverseBooleanConverter; Properties/ stores multi-culture resources and user settings; Annotations.cs provides [NotifyPropertyChangedInvocator]. Dependency direction: App → Options + MainWindow → MainViewModel → Octokit/Exceptionless/CommandLineParser/System.Net.Http/System.IO.Compression; no cross-project references inside this scope.