Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions UniGetUI.iss
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ procedure KillRunningApps;
begin
TaskKill('WingetUI.exe');
TaskKill('UniGetUI.exe');
TaskKill('UniGetUI.Avalonia.exe');
end;
function CmdLineParamExists(const Value: string): Boolean;
Expand Down Expand Up @@ -236,3 +237,4 @@ Filename: "{app}\{#MyAppExeName}"; Parameters: "--migrate-wingetui-to-unigetui";
; Filename: "{app}\{#MyAppExeName}"; Parameters: "--uninstall-unigetui"; Flags: skipifdoesntexist runhidden;
Filename: {sys}\taskkill.exe; Parameters: "/f /im WingetUI.exe"; Flags: skipifdoesntexist runhidden; RunOnceId: "KillWingetUI"
Filename: {sys}\taskkill.exe; Parameters: "/f /im UniGetUI.exe"; Flags: skipifdoesntexist runhidden; RunOnceId: "KillUniGetUI"
Filename: {sys}\taskkill.exe; Parameters: "/f /im UniGetUI.Avalonia.exe"; Flags: skipifdoesntexist runhidden; RunOnceId: "KillUniGetUIAvalonia"
871 changes: 813 additions & 58 deletions src/UniGetUI.Avalonia/Infrastructure/AvaloniaAutoUpdater.cs

Large diffs are not rendered by default.

19 changes: 19 additions & 0 deletions src/UniGetUI.Avalonia/ViewModels/MainWindowViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ public MainWindowViewModel()

AvaloniaAutoUpdater.UpdateAvailable += version => Dispatcher.UIThread.Post(() =>
{
UpdatesBanner.Severity = InfoBarSeverity.Success;
UpdatesBanner.Title = CoreTools.Translate("UniGetUI {0} is ready to be installed.", version);
UpdatesBanner.Message = CoreTools.Translate("The update process will start after closing UniGetUI");
UpdatesBanner.ActionButtonText = CoreTools.Translate("Update now");
Expand All @@ -195,6 +196,24 @@ public MainWindowViewModel()
UpdatesBanner.IsOpen = true;
});

AvaloniaAutoUpdater.StatusChanged += status => Dispatcher.UIThread.Post(() =>
{
UpdatesBanner.Severity = status.Severity;
UpdatesBanner.Title = status.Title;
UpdatesBanner.Message = status.Message;
UpdatesBanner.ActionButtonText = status.ActionButtonText ?? "";
UpdatesBanner.ActionButtonCommand = status.ActionButtonAction is { } action
? new CommunityToolkit.Mvvm.Input.RelayCommand(action)
: null;
UpdatesBanner.IsClosable = status.IsClosable;
UpdatesBanner.IsOpen = true;
});

// If the previous update attempt was killed mid-flow (typically by the
// installer terminating us during file replacement), surface a banner now
// that subscriptions are wired up.
AvaloniaAutoUpdater.CheckForOrphanedUpdateAttempt();

// Keep OperationsPanelVisible in sync with the live operations list
Operations.CollectionChanged += (_, _) =>
OperationsPanelVisible = Operations.Count > 0;
Expand Down
5 changes: 5 additions & 0 deletions src/UniGetUI.Avalonia/ViewModels/SidebarViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using UniGetUI.Avalonia.Infrastructure;
using UniGetUI.Avalonia.Views;
using UniGetUI.Core.Data;
using UniGetUI.Core.SettingsEngine;
Expand Down Expand Up @@ -83,6 +84,10 @@ public void RequestNavigation(string? pageName)
NavigationRequested?.Invoke(this, page);
}

[RelayCommand]
private static Task CheckForUpdates() =>
AvaloniaAutoUpdater.CheckAndInstallUpdatesAsync(autoLaunch: false, manualCheck: true);

public void SelectNavButtonForPage(PageType page) =>
SelectedPageType = page;

Expand Down
3 changes: 3 additions & 0 deletions src/UniGetUI.Avalonia/Views/SidebarView.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,9 @@
<MenuItem Header="{t:Translate Release notes}" Command="{Binding RequestNavigationCommand}" CommandParameter="ReleaseNotes">
<MenuItem.Icon><controls:SvgIcon Path="avares://UniGetUI.Avalonia/Assets/Symbols/megaphone.svg" Width="16" Height="16"/></MenuItem.Icon>
</MenuItem>
<MenuItem Header="{t:Translate Check for UniGetUI updates}" Command="{Binding CheckForUpdatesCommand}">
<MenuItem.Icon><controls:SvgIcon Path="avares://UniGetUI.Avalonia/Assets/Symbols/update.svg" Width="16" Height="16"/></MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="{t:Translate Help}" Command="{Binding RequestNavigationCommand}" CommandParameter="Help">
<MenuItem.Icon><controls:SvgIcon Path="avares://UniGetUI.Avalonia/Assets/Symbols/help.svg" Width="16" Height="16"/></MenuItem.Icon>
Expand Down
Loading
Loading