Files
bodyshop-uploader/BodyshopUploader/Utils/SquirrelAwareHelper.cs
2022-01-18 15:00:27 -08:00

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