コード例 #1
0
    /// <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);
        }
    }
コード例 #2
0
    /// <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 */ }
    }
コード例 #3
0
    /// <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();
        });
    }