106 lines
3.8 KiB
C#
106 lines
3.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Squirrel;
|
|
using Microsoft.Win32.TaskScheduler;
|
|
|
|
|
|
namespace BodyshopPartner.Utils
|
|
{
|
|
public static class SquirrelAwareHelper
|
|
{
|
|
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
public static bool AddHttpExcetion()
|
|
{
|
|
logger.Debug("Attempting to add HTTP Exclusion for web-server");
|
|
|
|
string args = string.Format(@"http add urlacl url={0} user={1}", "http://+:1337/", "Everyone");
|
|
|
|
ProcessStartInfo psi = new ProcessStartInfo("netsh", args);
|
|
psi.Verb = "runas";
|
|
psi.CreateNoWindow = true;
|
|
psi.WindowStyle = ProcessWindowStyle.Hidden;
|
|
psi.UseShellExecute = true;
|
|
try
|
|
{
|
|
Process.Start(psi).WaitForExit();
|
|
logger.Debug("Added web-server port exclusion.");
|
|
return true;
|
|
}
|
|
catch (Exception Ex)
|
|
{
|
|
logger.Error("Unable to register exception " + Ex.ToString());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static void InitializeSquirrelAware()
|
|
{
|
|
using (var mgr = new UpdateManager(Utils.UpdateHandler.UpdatePath))
|
|
{
|
|
// Note, in most of these scenarios, the app exits after this method
|
|
// completes!
|
|
SquirrelAwareApp.HandleEvents(
|
|
onInitialInstall: v =>
|
|
{
|
|
logger.Debug("Installing via Squirrel Aware Helper. ", v);
|
|
try
|
|
{
|
|
|
|
bool successful = AddHttpExcetion();
|
|
if (successful)
|
|
{
|
|
logger.Debug("Successfully added exception.");
|
|
}
|
|
else
|
|
{
|
|
logger.Fatal("Unable to set exception for http port");
|
|
}
|
|
|
|
}
|
|
catch (Exception Ex)
|
|
{
|
|
logger.Fatal("Unable to set exception for http port", Ex.ToString());
|
|
}
|
|
Utils.UpdateHandler.ToggleStartWithWindows(true);
|
|
mgr.CreateShortcutForThisExe();
|
|
},
|
|
onAppUpdate: v =>
|
|
{
|
|
mgr.CreateShortcutForThisExe();
|
|
Utils.UpdateHandler.RestoreSettings();
|
|
Utils.UpdateHandler.ToggleStartWithWindows(Properties.Settings.Default.StartWithWindows);
|
|
Utils.PaintScaleConfig.RegisterScheduledTask();
|
|
},
|
|
onAppUninstall: v =>
|
|
{
|
|
mgr.RemoveShortcutForThisExe();
|
|
try
|
|
{
|
|
Microsoft.Win32.TaskScheduler.Task existingTask = TaskService.Instance.FindTask("ImEX Online Partner - Paint Scale Connection");
|
|
if (existingTask != null)
|
|
{
|
|
TaskService.Instance.RootFolder.DeleteTask("ImEX Online Partner - Paint Scale Connection");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex, "Error removing task while uninstalling.");
|
|
}
|
|
},
|
|
|
|
onFirstRun: () =>
|
|
{
|
|
logger.Info("We've run for the first time.");
|
|
|
|
Utils.UpdateHandler.ToggleStartWithWindows(true);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|