Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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