From c61c9bef5519f61ce51c297a42c3d194b9fc33d0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Mar 2026 18:05:46 +0000 Subject: [PATCH] Add DISCORDCHATEXPORTER_DISABLE_UPDATE env var to disable auto-update in GUI Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> Agent-Logs-Url: https://github.com/Tyrrrz/DiscordChatExporter/sessions/158dba86-9958-4f57-ab22-174e0606b42f --- .../Services/UpdateService.cs | 29 ++++++++++--------- DiscordChatExporter.Gui/StartOptions.cs | 5 ++++ .../ViewModels/Dialogs/SettingsViewModel.cs | 3 ++ .../Views/Dialogs/SettingsView.axaml | 3 +- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/DiscordChatExporter.Gui/Services/UpdateService.cs b/DiscordChatExporter.Gui/Services/UpdateService.cs index 2fc367da..2574f11a 100644 --- a/DiscordChatExporter.Gui/Services/UpdateService.cs +++ b/DiscordChatExporter.Gui/Services/UpdateService.cs @@ -9,20 +9,21 @@ namespace DiscordChatExporter.Gui.Services; public class UpdateService(SettingsService settingsService) : IDisposable { - private readonly IUpdateManager? _updateManager = OperatingSystem.IsWindows() - ? new UpdateManager( - new GithubPackageResolver( - "Tyrrrz", - "DiscordChatExporter", - // Examples: - // DiscordChatExporter.win-arm64.zip - // DiscordChatExporter.win-x64.zip - // DiscordChatExporter.linux-x64.zip - $"DiscordChatExporter.{RuntimeInformation.RuntimeIdentifier}.zip" - ), - new ZipPackageExtractor() - ) - : null; + private readonly IUpdateManager? _updateManager = + OperatingSystem.IsWindows() && !StartOptions.Current.IsAutoUpdateDisabled + ? new UpdateManager( + new GithubPackageResolver( + "Tyrrrz", + "DiscordChatExporter", + // Examples: + // DiscordChatExporter.win-arm64.zip + // DiscordChatExporter.win-x64.zip + // DiscordChatExporter.linux-x64.zip + $"DiscordChatExporter.{RuntimeInformation.RuntimeIdentifier}.zip" + ), + new ZipPackageExtractor() + ) + : null; private Version? _updateVersion; private bool _updatePrepared; diff --git a/DiscordChatExporter.Gui/StartOptions.cs b/DiscordChatExporter.Gui/StartOptions.cs index f29a04ea..a44de709 100644 --- a/DiscordChatExporter.Gui/StartOptions.cs +++ b/DiscordChatExporter.Gui/StartOptions.cs @@ -6,6 +6,8 @@ namespace DiscordChatExporter.Gui; public partial class StartOptions { public required string SettingsPath { get; init; } + + public required bool IsAutoUpdateDisabled { get; init; } } public partial class StartOptions @@ -20,5 +22,8 @@ public partial class StartOptions ? Path.Combine(path, "Settings.dat") : path : Path.Combine(AppContext.BaseDirectory, "Settings.dat"), + IsAutoUpdateDisabled = + Environment.GetEnvironmentVariable("DISCORDCHATEXPORTER_DISABLE_UPDATE") is { } v + && (v == "1" || v.Equals("true", StringComparison.OrdinalIgnoreCase)), }; } diff --git a/DiscordChatExporter.Gui/ViewModels/Dialogs/SettingsViewModel.cs b/DiscordChatExporter.Gui/ViewModels/Dialogs/SettingsViewModel.cs index 544f4ba1..481d3d4f 100644 --- a/DiscordChatExporter.Gui/ViewModels/Dialogs/SettingsViewModel.cs +++ b/DiscordChatExporter.Gui/ViewModels/Dialogs/SettingsViewModel.cs @@ -46,6 +46,9 @@ public class SettingsViewModel : DialogViewModelBase set => _settingsService.Language = value; } + public bool IsAutoUpdateAvailable { get; } = + OperatingSystem.IsWindows() && !StartOptions.Current.IsAutoUpdateDisabled; + public bool IsAutoUpdateEnabled { get => _settingsService.IsAutoUpdateEnabled; diff --git a/DiscordChatExporter.Gui/Views/Dialogs/SettingsView.axaml b/DiscordChatExporter.Gui/Views/Dialogs/SettingsView.axaml index 03bbb3ac..f4e3c7a3 100644 --- a/DiscordChatExporter.Gui/Views/Dialogs/SettingsView.axaml +++ b/DiscordChatExporter.Gui/Views/Dialogs/SettingsView.axaml @@ -50,8 +50,7 @@