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
This commit is contained in:
copilot-swe-agent[bot] 2026-03-21 18:05:46 +00:00
parent b6e1f92989
commit c61c9bef55
4 changed files with 24 additions and 16 deletions

View file

@ -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;

View file

@ -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)),
};
}

View file

@ -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;

View file

@ -50,8 +50,7 @@
<!-- Auto-updates -->
<DockPanel
Margin="16,8"
IsVisible="{OnPlatform False,
Windows=True}"
IsVisible="{Binding IsAutoUpdateAvailable}"
LastChildFill="False"
ToolTip.Tip="{Binding LocalizationManager.AutoUpdateTooltip}">
<TextBlock DockPanel.Dock="Left" Text="{Binding LocalizationManager.AutoUpdateLabel}" />