Files
bodyshop-uploader/BodyshopUploader/Utils/SquirrelAwareHelper.cs

76 lines
2.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Squirrel;
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());
}
mgr.CreateShortcutForThisExe();
},
onAppUpdate: v => mgr.CreateShortcutForThisExe(),
onAppUninstall: v => mgr.RemoveShortcutForThisExe(),
onFirstRun: () => { logger.Info("We've run for the first time."); });
}
}
}
}