protected void Uninstall() { TaskLogger.LogEnter(); if (!ServiceControllerUtils.IsInstalled(this.Name)) { base.WriteVerbose(Strings.ServiceNotInstalled(this.Name)); return; } base.WriteVerbose(Strings.WillUninstallInstalledService(this.Name)); try { this.serviceProcessInstaller.Uninstall(null); } catch (Win32Exception ex) { if (ex.NativeErrorCode == 1060) { this.WriteWarning(Strings.ServiceAlreadyNotInstalled(this.Name)); } else { base.WriteError(new ServiceUninstallFailureException(this.Name, ex.Message, ex), ErrorCategory.InvalidOperation, null); } } catch (InstallException ex2) { base.WriteError(new ServiceUninstallFailureException(this.Name, ex2.Message, ex2), ErrorCategory.InvalidOperation, null); } if (this.serviceFirewallRules.Count > 0) { using (List <ExchangeFirewallRule> .Enumerator enumerator = this.serviceFirewallRules.GetEnumerator()) { while (enumerator.MoveNext()) { ExchangeFirewallRule exchangeFirewallRule = enumerator.Current; TaskLogger.Trace("Removing Windows Firewall Rule for Service {0}", new object[] { this.Name }); exchangeFirewallRule.Remove(); } return; } } string fullPath = this.serviceProcessInstaller.Context.Parameters["assemblypath"]; TaskLogger.Trace("Removing Service {0} from windows firewall exception", new object[] { this.Name }); ManageService.RemoveAssemblyFromFirewallExceptions(this.Name, fullPath, new Task.TaskErrorLoggingDelegate(base.WriteError)); TaskLogger.LogExit(); }
protected void AddFirewallRule(ExchangeFirewallRule firewallRule) { this.serviceFirewallRules.Add(firewallRule); }