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);