diff --git a/src/Squirrel/IUpdateManager.cs b/src/Squirrel/IUpdateManager.cs index af56f02f..b472192f 100644 --- a/src/Squirrel/IUpdateManager.cs +++ b/src/Squirrel/IUpdateManager.cs @@ -43,7 +43,9 @@ namespace Squirrel /// CheckForUpdate /// A Observer which can be used to report Progress - /// will return values from 0-100 and Complete, or Throw - Task ApplyReleases(UpdateInfo updateInfo, Action progress = null); + /// The path to the installed application (i.e. the path where + /// your package's contents ended up + Task ApplyReleases(UpdateInfo updateInfo, Action progress = null); /// /// Completely Installs a targeted app diff --git a/src/Squirrel/UpdateManager.ApplyReleases.cs b/src/Squirrel/UpdateManager.ApplyReleases.cs index a813bb8c..8378dfed 100644 --- a/src/Squirrel/UpdateManager.ApplyReleases.cs +++ b/src/Squirrel/UpdateManager.ApplyReleases.cs @@ -26,14 +26,14 @@ namespace Squirrel this.rootAppDirectory = rootAppDirectory; } - public async Task ApplyReleases(UpdateInfo updateInfo, bool silentInstall, Action progress = null) + public async Task ApplyReleases(UpdateInfo updateInfo, bool silentInstall, Action progress = null) { progress = progress ?? (_ => { }); var release = await createFullPackagesFromDeltas(updateInfo.ReleasesToApply, updateInfo.CurrentlyInstalledVersion); progress(10); - await installPackageToAppDir(updateInfo, release); + var ret = await installPackageToAppDir(updateInfo, release); progress(30); var currentReleases = await updateLocalReleasesFile(); @@ -45,6 +45,8 @@ namespace Squirrel await cleanDeadVersions(newVersion); progress(100); + + return ret; } public async Task FullUninstall() @@ -61,7 +63,7 @@ namespace Squirrel await Utility.DeleteDirectoryWithFallbackToNextReboot(rootAppDirectory); } - async Task installPackageToAppDir(UpdateInfo updateInfo, ReleaseEntry release) + async Task installPackageToAppDir(UpdateInfo updateInfo, ReleaseEntry release) { var pkg = new ZipPackage(Path.Combine(updateInfo.PackageDirectory, release.Filename)); var target = getDirectoryForRelease(release.Version); @@ -98,6 +100,7 @@ namespace Squirrel // which shortcuts to install, and nuking them. Then, run the app's // post install and set up shortcuts. runPostInstallAndCleanup(newCurrentVersion, updateInfo.IsBootstrapping); + return target.FullName; } void CopyFileToLocation(FileSystemInfo target, IPackageFile x) diff --git a/src/Squirrel/UpdateManager.cs b/src/Squirrel/UpdateManager.cs index 04fcac1f..e0c23258 100644 --- a/src/Squirrel/UpdateManager.cs +++ b/src/Squirrel/UpdateManager.cs @@ -60,12 +60,12 @@ namespace Squirrel await downloadReleases.DownloadReleases(updateUrlOrPath, releasesToDownload, progress, urlDownloader); } - public async Task ApplyReleases(UpdateInfo updateInfo, Action progress = null) + public async Task ApplyReleases(UpdateInfo updateInfo, Action progress = null) { var applyReleases = new ApplyReleasesImpl(rootAppDirectory); await acquireUpdateLock(); - await applyReleases.ApplyReleases(updateInfo, false, progress); + return await applyReleases.ApplyReleases(updateInfo, false, progress); } public async Task FullInstall(bool silentInstall = false) @@ -152,6 +152,10 @@ namespace Squirrel key.DeleteSubKeyTree(applicationName); } + public string RootAppDirectory { + get { return rootAppDirectory; } + } + public void Dispose() { var disp = Interlocked.Exchange(ref updateLock, null);