/// <summary> /// Get the root app directory using the Squirrel manager. /// </summary> /// <returns></returns> private static string GetRootAppDirectory() { var appName = SquirrelHelper.GetAppName(); var updateLocation = SquirrelHelper.GetUpdateLocation(); using (var mgr = new UpdateManager(updateLocation, appName, FrameworkVersion.Net45)) { return(mgr.RootAppDirectory); } }
/// <summary> /// This code has to exist in order for Squirrel to work its magic. /// What it does, is hook methods to the install/uninstall events. /// Basic functionality includes: Create and remove shortcut upon install/uninstall, /// as well as when updating. /// </summary> public static void CustomSquirrelSetup() { var appName = SquirrelHelper.GetAppName(); var updateLocation = SquirrelHelper.GetUpdateLocation(); using (var mgr = new UpdateManager(updateLocation, appName, FrameworkVersion.Net45)) { SquirrelAwareApp.HandleEvents( onInitialInstall: v => { _log.Warn(Utilities.GetCallerName() + ": Installation in progress."); CreateOrUpdateCustomRegistryEntries(mgr.RootAppDirectory); RegisterShellExtension(mgr.RootAppDirectory); mgr.CreateShortcutForThisExe(); }, onAppUpdate: v => { _log.Warn(Utilities.GetCallerName() + ": Update in progress."); mgr.CreateShortcutForThisExe(); CreateOrUpdateCustomRegistryEntries(mgr.RootAppDirectory, v.ToString()); RegisterShellExtension(mgr.RootAppDirectory); }, onAppUninstall: v => { _log.Warn(Utilities.GetCallerName() + ": Uninstall in progress."); UnregisterShellExtension(mgr.RootAppDirectory); RemoveCustomRegistryEntries(mgr.RootAppDirectory); mgr.RemoveShortcutForThisExe(); StopBigStashOnUninstall(); CallBatchDelete(mgr.RootAppDirectory); }); } }