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));
        }
Ejemplo n.º 2
0
 protected override void OnStart(string[] args)
 {
     Monitor = new ChangesMonitor();
 }