Skip to content

Commit cc6453f

Browse files
committed
Uninstalling if cost of repair is larger than cost of content
1 parent a07f628 commit cc6453f

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

Assets/PatchKit Patcher/Scripts/AppUpdater/AppUpdater.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,22 @@ AppContentSummary latestVersionContentSummary
7171
checkIntegrity.Prepare(_status);
7272
checkIntegrity.Execute(cancellationToken);
7373

74-
int missingFilesCount = checkIntegrity.Results.Files
75-
.Select(f => f.Status == FileIntegrityStatus.MissingData)
76-
.Count();
74+
var missingFiles = checkIntegrity.Results.Files
75+
.Select(f => f.Status == FileIntegrityStatus.MissingData);
76+
77+
int missingFilesCount = missingFiles.Count();
7778

78-
int invalidSizeFilesCount = checkIntegrity.Results.Files
79-
.Select(f => f.Status == FileIntegrityStatus.InvalidSize)
80-
.Count();
79+
var invalidSizeFiles = checkIntegrity.Results.Files
80+
.Select(f => f.Status == FileIntegrityStatus.InvalidSize);
81+
82+
int invalidSizeFilesCount = invalidSizeFiles.Count();
8183

8284
if (missingFilesCount + invalidSizeFilesCount == 0)
8385
{
8486
DebugLogger.Log("No missing or invalid size files.");
8587
return;
8688
}
8789

88-
var repairStrategy = new AppUpdaterRepairAndDiffStrategy(Context, _status, performDiff: false);
89-
9090
double repairCost = (missingFilesCount + invalidSizeFilesCount) * 2;
9191
if (isNewVersionAvailable)
9292
{
@@ -100,11 +100,15 @@ AppContentSummary latestVersionContentSummary
100100
if (repairCost < contentSize)
101101
{
102102
DebugLogger.Log(string.Format("Repair cost {0} is smaller than content cost {1}, repairing...", repairCost, contentSize));
103+
IAppUpdaterStrategy repairStrategy = _strategyResolver.Create(StrategyType.RepairAndDiff, Context);
103104
repairStrategy.Update(cancellationToken);
104105
}
105106
else
106107
{
107-
DebugLogger.Log("Content cost is smaller than repair.");
108+
DebugLogger.Log("Content cost is smaller than repair. Uninstalling to prepare for content strategy.");
109+
IUninstallCommand uninstall = commandFactory.CreateUninstallCommand(Context);
110+
uninstall.Prepare(_status);
111+
uninstall.Execute(cancellationToken);
108112
}
109113
}
110114

0 commit comments

Comments
 (0)