diff --git a/DiscordChatExporter.Gui/Services/UpdateService.cs b/DiscordChatExporter.Gui/Services/UpdateService.cs index 2fc367da..b249bb16 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.IsAutoUpdateAllowed + ? 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..d17752a8 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 IsAutoUpdateAllowed { get; init; } } public partial class StartOptions @@ -20,5 +22,10 @@ public partial class StartOptions ? Path.Combine(path, "Settings.dat") : path : Path.Combine(AppContext.BaseDirectory, "Settings.dat"), + IsAutoUpdateAllowed = !( + Environment.GetEnvironmentVariable("DISCORDCHATEXPORTER_ALLOW_AUTO_UPDATE") + is { } env + && env.Equals("false", StringComparison.OrdinalIgnoreCase) + ), }; } diff --git a/DiscordChatExporter.Gui/ViewModels/Dialogs/SettingsViewModel.cs b/DiscordChatExporter.Gui/ViewModels/Dialogs/SettingsViewModel.cs index 544f4ba1..143246ca 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.IsAutoUpdateAllowed; + 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 @@