mirror of
https://github.com/velopack/velopack.git
synced 2025-10-25 15:19:22 +00:00
Try to limit situations where we download too many delta's
This commit is contained in:
@@ -94,11 +94,17 @@ namespace Squirrel
|
|||||||
|
|
||||||
var newerThanUs = availableReleases
|
var newerThanUs = availableReleases
|
||||||
.Where(x => x.Version > currentVersion.Version)
|
.Where(x => x.Version > currentVersion.Version)
|
||||||
.OrderBy(v => v.Version);
|
.OrderBy(v => v.Version)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
var deltasSize = newerThanUs.Where(x => x.IsDelta).Sum(x => x.Filesize);
|
var deltasSize = newerThanUs.Where(x => x.IsDelta).Sum(x => x.Filesize);
|
||||||
|
var deltasCount = newerThanUs.Count(x => x.IsDelta);
|
||||||
|
|
||||||
return (deltasSize < latestFull.Filesize && deltasSize > 0) ?
|
// delta's are cheap to download, but really expensive to apply.
|
||||||
|
// full packages are more expensive to download, but really cheap to apply.
|
||||||
|
// this tries to find a good balance of both. we will go for the full if
|
||||||
|
// there are too many delta's or if their file size is too large.
|
||||||
|
return (deltasSize > 0 && (deltasSize * 10) < latestFull.Filesize && deltasCount <= 10) ?
|
||||||
new UpdateInfo(currentVersion, newerThanUs.Where(x => x.IsDelta).ToArray(), packageDirectory) :
|
new UpdateInfo(currentVersion, newerThanUs.Where(x => x.IsDelta).ToArray(), packageDirectory) :
|
||||||
new UpdateInfo(currentVersion, new[] { latestFull }, packageDirectory);
|
new UpdateInfo(currentVersion, new[] { latestFull }, packageDirectory);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user