Beispiel #1
0
        /// <summary>
        /// Updates all of the mods.
        /// </summary>
        /// <param name="summary">Summary of updates returned from <see cref="GetUpdateDetails"/></param>
        /// <param name="progressHandler">Event to receive information about the overall download and extract progress of all mods combined.</param>
        public async Task Update(ModUpdateSummary summary, IProgress <double> progressHandler = null)
        {
            // Guard against null.
            int pairCount = summary.ResolverManagerResultPairs.Count;

            var               completeMods             = new Box <int>(0);
            float             completeModSegmentLength = (float)1 / pairCount;
            Progress <double> totalProgressHandler     = null;

            if (progressHandler != null)
            {
                totalProgressHandler = new Progress <double>(progress =>
                {
                    progressHandler.Report((progress / pairCount) + (completeModSegmentLength * completeMods.Value));
                });
            }

            foreach (var pair in summary.ResolverManagerResultPairs)
            {
                var manager = pair.Manager;
                var version = pair.Result.LastVersion;
                await manager.PrepareUpdateAsync(version, totalProgressHandler);

                manager.LaunchUpdater(version, false);
                pair.Resolver.PostUpdateCallback(true);
                completeMods.Value += 1;
            }
        }
 public ModUpdateDialogViewModel(Updater updater, ModUpdateSummary summary)
 {
     Updater    = updater;
     Summary    = summary;
     UpdateInfo = Summary.GetUpdateInfo();
     TotalSize  = Summary.GetTotalSize();
 }
Beispiel #3
0
 /// <summary/>
 public ModUpdateDialogViewModel(Updater updater, ModUpdateSummary summary)
 {
     Updater        = updater;
     Summary        = summary;
     UpdateInfo     = Summary.GetUpdateInfo();
     TotalSize      = UpdateInfo.Sum(x => x.UpdateSize);
     SelectedUpdate = UpdateInfo[0];
     CanDownload    = true;
 }
    /// <summary>
    /// Updates all of the mods.
    /// </summary>
    /// <param name="summary">Summary of updates returned from <see cref="GetUpdateDetailsAsync"/></param>
    /// <param name="progressHandler">Event to receive information about the overall download and extract progress of all mods combined.</param>
    public async Task Update(ModUpdateSummary summary, IProgress <double>?progressHandler = null)
    {
        // Guard against null.
        var progressMixer      = new ProgressSlicer(progressHandler);
        var singleItemProgress = 1.0 / summary.ManagerModResultPairs.Count;

        for (var x = 0; x < summary.ManagerModResultPairs.Count; x++)
        {
            var slice   = progressMixer.Slice(singleItemProgress);
            var pair    = summary.ManagerModResultPairs[x];
            var manager = pair.Manager;
            var version = pair.Result.LastVersion;

            await manager.PrepareUpdateAsync(version !, slice);

            await manager.StartUpdateAsync(version !, new OutOfProcessOptions(), new UpdateOptions()
            {
                CleanupAfterUpdate = true
            });

            manager.Dispose();
        }
    }
 public ModUpdateDialog(Updater updater, ModUpdateSummary summary)
 {
     InitializeComponent();
     ViewModel = new ModUpdateDialogViewModel(updater, summary);
 }