Elwig/Dialogs
@ -3,6 +3,7 @@ using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Navigation;
|
||||
@ -13,36 +14,47 @@ namespace Elwig.Dialogs {
|
||||
public string Version { get; private set; }
|
||||
public string Url { get; private set; }
|
||||
|
||||
private readonly CancellationTokenSource Cancellation;
|
||||
|
||||
public UpdateDialog(string version, string url, long size) {
|
||||
Version = version;
|
||||
Url = url;
|
||||
Cancellation = new();
|
||||
InitializeComponent();
|
||||
VersionText.Text = version;
|
||||
SizeText.Text = $"{size / 1024 / 1024}";
|
||||
}
|
||||
|
||||
private void OnClosed(object sender, EventArgs evt) {
|
||||
Cancellation.Cancel();
|
||||
}
|
||||
|
||||
private async void InstallButton_Click(object sender, RoutedEventArgs evt) {
|
||||
Description.Visibility = Visibility.Hidden;
|
||||
ProgressBar.Visibility = Visibility.Visible;
|
||||
InstallButton.IsEnabled = false;
|
||||
await Install();
|
||||
DialogResult = true;
|
||||
Close();
|
||||
}
|
||||
|
||||
public async Task Install() {
|
||||
var fileName = Path.Combine(App.TempPath, $"Elwig-{Version}.exe");
|
||||
{
|
||||
try {
|
||||
using var stream = new FileStream(fileName, FileMode.Create);
|
||||
using var client = new HttpClient() {
|
||||
Timeout = TimeSpan.FromSeconds(5),
|
||||
};
|
||||
await client.DownloadAsync(Url, stream, new Progress<double>(p => {
|
||||
ProgressBar.Value = p * 100.0;
|
||||
}));
|
||||
}), Cancellation.Token);
|
||||
} catch (OperationCanceledException) {
|
||||
File.Delete(fileName);
|
||||
return;
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
|
||||
Process.Start(fileName);
|
||||
DialogResult = true;
|
||||
}
|
||||
|
||||
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) {
|
||||
|
Reference in New Issue
Block a user