From bc771de4b328acf0c71a63c14d3389f648facaba Mon Sep 17 00:00:00 2001 From: Paul Betts Date: Fri, 8 Aug 2014 14:51:38 +0200 Subject: [PATCH] Run clean *after* apply, dummy --- src/Squirrel/ReleaseEntry.cs | 3 ++- src/Squirrel/UpdateManager.ApplyReleases.cs | 17 ++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Squirrel/ReleaseEntry.cs b/src/Squirrel/ReleaseEntry.cs index ab01370e..864c0e1f 100644 --- a/src/Squirrel/ReleaseEntry.cs +++ b/src/Squirrel/ReleaseEntry.cs @@ -150,7 +150,7 @@ namespace Squirrel } } - public static void BuildReleasesFile(string releasePackagesDir) + public static List BuildReleasesFile(string releasePackagesDir) { var packagesDir = new DirectoryInfo(releasePackagesDir); @@ -176,6 +176,7 @@ namespace Squirrel } File.Move(tempFile, target); + return entries; } static bool filenameIsDeltaFile(string filename) diff --git a/src/Squirrel/UpdateManager.ApplyReleases.cs b/src/Squirrel/UpdateManager.ApplyReleases.cs index edbcedff..74200006 100644 --- a/src/Squirrel/UpdateManager.ApplyReleases.cs +++ b/src/Squirrel/UpdateManager.ApplyReleases.cs @@ -29,16 +29,16 @@ namespace Squirrel { progress = progress ?? (_ => { }); - await cleanDeadVersions(updateInfo.CurrentlyInstalledVersion != null ? updateInfo.CurrentlyInstalledVersion.Version : null); + var release = await createFullPackagesFromDeltas(updateInfo.ReleasesToApply, updateInfo.CurrentlyInstalledVersion); progress(10); - var release = await createFullPackagesFromDeltas(updateInfo.ReleasesToApply, updateInfo.CurrentlyInstalledVersion); + await installPackageToAppDir(updateInfo, release); progress(50); - await installPackageToAppDir(updateInfo, release); - progress(95); + var currentReleases = await updateLocalReleasesFile(); + progress(75); - await updateLocalReleasesFile(); + await cleanDeadVersions(currentReleases.MaxBy(x => x.Version).First().Version); progress(100); } @@ -47,7 +47,6 @@ namespace Squirrel version = version ?? new Version(255, 255, 255, 255); this.Log().Info("Uninstalling version '{0}'", version); - // find all the old releases (and this one) var directoriesToDelete = getOldReleases(version) .Concat(new [] { getDirectoryForRelease(version) }) @@ -302,16 +301,16 @@ namespace Squirrel await toCleanup.ForEachAsync(async x => { try { - await Utility.DeleteDirectory(x.FullName); + await Utility.DeleteDirectoryWithFallbackToNextReboot(x.FullName); } catch (UnauthorizedAccessException ex) { this.Log().WarnException("Couldn't delete directory: " + x.FullName, ex); } }); } - internal async Task updateLocalReleasesFile() + internal async Task> updateLocalReleasesFile() { - await Task.Run(() => ReleaseEntry.BuildReleasesFile(Utility.PackageDirectoryForAppDir(rootAppDirectory))); + return await Task.Run(() => ReleaseEntry.BuildReleasesFile(Utility.PackageDirectoryForAppDir(rootAppDirectory))); } IEnumerable getReleases()