mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Install WebView2 after updating Wabbajack
This commit is contained in:
parent
3eb6b8c20b
commit
8475f61585
@ -9,8 +9,10 @@ using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using JetBrains.Annotations;
|
||||
using MessageBox.Avalonia.DTO;
|
||||
using ReactiveUI.Fody.Helpers;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Compression.Zip;
|
||||
using Wabbajack.Downloaders.Http;
|
||||
using Wabbajack.DTOs;
|
||||
@ -122,7 +124,7 @@ public class MainWindowViewModel : ViewModelBase
|
||||
|
||||
|
||||
var wc = new WebClient();
|
||||
wc.DownloadProgressChanged += UpdateProgress;
|
||||
wc.DownloadProgressChanged += (sender, args) => UpdateProgress($"{_version.Version}", sender, args);
|
||||
Status = $"Downloading {_version.Version} ...";
|
||||
byte[] data;
|
||||
try
|
||||
@ -166,10 +168,52 @@ public class MainWindowViewModel : ViewModelBase
|
||||
{
|
||||
_errors.Add(ex.Message);
|
||||
}
|
||||
finally
|
||||
|
||||
try
|
||||
{
|
||||
await FinishAndExit();
|
||||
await InstallWebView();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_errors.Add(e.Message);
|
||||
}
|
||||
|
||||
await FinishAndExit();
|
||||
}
|
||||
|
||||
[UriString]
|
||||
private const string WebViewDownloadLink = "https://go.microsoft.com/fwlink/p/?LinkId=2124703";
|
||||
|
||||
private async Task InstallWebView(CancellationToken cancellationToken = default)
|
||||
{
|
||||
var setupPath = KnownFolders.WabbajackAppLocal.Combine("MicrosoftEdgeWebview2Setup.exe");
|
||||
if (setupPath.FileExists()) return;
|
||||
|
||||
var wc = new WebClient();
|
||||
wc.DownloadProgressChanged += (sender, args) => UpdateProgress("WebView2", sender, args);
|
||||
|
||||
Status = "Downloading WebView2 Runtime";
|
||||
|
||||
byte[] data;
|
||||
try
|
||||
{
|
||||
data = await wc.DownloadDataTaskAsync(WebViewDownloadLink);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_errors.Add(ex.Message);
|
||||
await FinishAndExit();
|
||||
throw;
|
||||
}
|
||||
|
||||
await setupPath.WriteAllBytesAsync(new Memory<byte>(data), cancellationToken);
|
||||
|
||||
var process = new ProcessHelper
|
||||
{
|
||||
Path = setupPath
|
||||
};
|
||||
|
||||
await process.Start();
|
||||
}
|
||||
|
||||
private async Task VerifyCurrentLocation()
|
||||
@ -211,6 +255,7 @@ public class MainWindowViewModel : ViewModelBase
|
||||
}
|
||||
}
|
||||
|
||||
[ContractAnnotation("=> halt")]
|
||||
private async Task FinishAndExit()
|
||||
{
|
||||
try
|
||||
@ -275,9 +320,9 @@ public class MainWindowViewModel : ViewModelBase
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateProgress(object sender, DownloadProgressChangedEventArgs e)
|
||||
private void UpdateProgress(string what, object sender, DownloadProgressChangedEventArgs e)
|
||||
{
|
||||
Status = $"Downloading {_version.Version} ({e.ProgressPercentage}%)...";
|
||||
Status = $"Downloading {what} ({e.ProgressPercentage}%)...";
|
||||
}
|
||||
|
||||
private async Task<(Version Version, long Size, Func<Task<Uri>> Uri)> GetGithubRelease(CancellationToken token)
|
||||
|
@ -27,6 +27,7 @@
|
||||
<PackageReference Include="Avalonia.Desktop" Version="11.0.0-preview3" />
|
||||
<PackageReference Include="Avalonia.Diagnostics" Version="11.0.0-preview3" />
|
||||
<PackageReference Include="Avalonia.ReactiveUI" Version="11.0.0-preview3" />
|
||||
<PackageReference Include="JetBrains.Annotations" Version="2022.1.0" />
|
||||
<PackageReference Include="MessageBox.Avalonia" Version="2.3.1-prev2" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.0-rc.2.22472.3" />
|
||||
<PackageReference Include="ReactiveUI.Fody" Version="18.3.1" />
|
||||
|
Loading…
Reference in New Issue
Block a user