/// <summary> /// Checks if there are any updates for the mod loader. /// </summary> public static async Task CheckForLoaderUpdatesAsync() { if (!HasInternetConnection) { return; } // Check for loader updates. UpdateManager <Empty>?manager = null; try { var releaseVersion = Version.GetReleaseVersion() !; var resolver = new GitHubReleaseResolver(new GitHubResolverConfiguration() { LegacyFallbackPattern = Constants.GitRepositoryReleaseName, RepositoryName = Constants.GitRepositoryName, UserName = Constants.GitRepositoryAccount }, new CommonPackageResolverSettings() { AllowPrereleases = releaseVersion.IsPrerelease }); var metadata = new ItemMetadata(releaseVersion, Constants.ApplicationPath, null); manager = await UpdateManager <Empty> .CreateAsync(metadata, resolver, new SevenZipSharpExtractor()); // Check for new version and, if available, perform full update and restart var result = await manager.CheckForUpdatesAsync(); if (result.CanUpdate) { Actions.SynchronizationContext.Send(_ => { // ReSharper disable once AccessToDisposedClosure Actions.ShowModLoaderUpdateDialog(new ModLoaderUpdateDialogViewModel(manager, result.LastVersion !)); }, null); } } catch (Exception ex) { manager?.Dispose(); var errorMessage = $"{Resources.ErrorCheckUpdatesFailed.Get()}\n" + $"{Resources.ErrorError.Get()}: {ex.Message}\n" + $"{ex.StackTrace}"; Actions.SynchronizationContext.Send(_ => { Actions.DisplayMessagebox.Invoke(Resources.ErrorError.Get(), errorMessage, new Actions.DisplayMessageBoxParams() { StartupLocation = Actions.WindowStartupLocation.CenterScreen }); }, null); } }
/// <inheritdoc /> public ModLoaderUpdateDialogViewModel(UpdateManager <Empty> manager, NuGetVersion targetVersion) { _manager = manager; _targetVersion = targetVersion; CurrentVersion = Version.GetReleaseVersion() !.ToNormalizedString(); NewVersion = _targetVersion.ToString(); // Try fetch Release info. try { var client = new GitHubClient(new ProductHeaderValue("Reloaded-II")); var releases = client.Repository.Release.GetAll(Constants.GitRepositoryAccount, Constants.GitRepositoryName); var release = releases.Result.First(x => x.TagName.Contains(targetVersion.ToString())); ReleaseUrl = release.HtmlUrl; ReleaseText = release.Body; } catch (Exception) { /* Ignored */ } }
/// <summary/> public SettingsPageViewModel(ApplicationConfigService appConfigService, ModConfigService modConfigService, LoaderConfig loaderConfig) { AppConfigService = appConfigService; ModConfigService = modConfigService; LoaderConfig = loaderConfig; UpdateTotalApplicationsInstalled(); UpdateTotalModsInstalled(); AppConfigService.Items.CollectionChanged += MainPageViewModelOnApplicationsChanged; ModConfigService.Items.CollectionChanged += ManageModsViewModelOnModsChanged; var version = FileVersionInfo.GetVersionInfo(Process.GetCurrentProcess().MainModule !.FileName !); Copyright = Regex.Replace(version.LegalCopyright !, @"\|.*", $"| {Version.GetReleaseVersion()!.ToNormalizedString()}"); RuntimeVersion = $"Core: {RuntimeInformation.FrameworkDescription}"; ActionWrappers.ExecuteWithApplicationDispatcher(() => { SelectCurrentLanguage(); SelectCurrentTheme(); }); }