public override Task <InstallSetupResult> ExecuteAsync(object model) { // Generate GUID var telemetrySiteIdentifier = Guid.NewGuid(); // Modify the XML to add a new GUID site identifier // hack: ensure this does not trigger a restart using (ChangesMonitor.Suspended()) { var umbracoSettingsPath = IOHelper.MapPath(SystemFiles.UmbracoSettings); if (File.Exists(umbracoSettingsPath) == false) { // Log an error _logger.Error <TelemetryIdentifierStep>("Unable to find umbracoSettings.config file to add telemetry site identifier"); return(Task.FromResult <InstallSetupResult>(null)); } try { var umbracoConfigXml = XDocument.Load(umbracoSettingsPath, LoadOptions.PreserveWhitespace); if (umbracoConfigXml.Root != null) { var backofficeElement = umbracoConfigXml.Root.Element("backOffice"); if (backofficeElement == null) { return(Task.FromResult <InstallSetupResult>(null)); } // Will add ID attribute if it does not exist backofficeElement.SetAttributeValue("id", telemetrySiteIdentifier.ToString()); // Save file back down umbracoConfigXml.Save(umbracoSettingsPath, SaveOptions.DisableFormatting); } } catch (Exception ex) { _logger.Error <TelemetryIdentifierStep>(ex, "Couldn't update umbracoSettings.config with a backoffice with a telemetry site identifier"); } } return(Task.FromResult <InstallSetupResult>(null)); }
protected override void OnStart(string[] args) { Monitor = new ChangesMonitor(); }