/// <summary>
        /// Writes the log messages to the message log
        /// </summary>
        /// <param name="installationHistoryRoot"></param>
        /// <param name="logMessages"></param>
        private void SaveInstallationMessages(string installationHistoryRoot, List <ContingencyEntry> logMessages)
        {
            try
            {
                if (string.IsNullOrEmpty(installationHistoryRoot))
                {
                    installationHistoryRoot = FileUtil.MakePath(FileUtils.InstallationHistoryRoot, "Upgrade_FAILURE_" + DateTime.Now.ToString("yyyyMMddTHHmmss") + DateTime.Now.Millisecond);
                }

                string messagesFile = Path.Combine(installationHistoryRoot, "messages.xml");
                FileUtil.EnsureFolder(messagesFile);

                using (FileStream fileStream = File.Create(messagesFile))
                {
                    XmlEntrySerializer xmlEntrySerializer = new XmlEntrySerializer();

                    //For some reason, this has changed in Sitecore 9. We are using reflection to get it because the fileStream parameter can be a FileStream or Stream
                    //xmlEntrySerializer.Serialize(logMessages, fileStream);
                    Type serializerType = xmlEntrySerializer.GetType();

                    MethodInfo serializeMethod = serializerType.GetMethod("Serialize",
                                                                          BindingFlags.Public | BindingFlags.Instance,
                                                                          null,
                                                                          new Type[] { logMessages.GetType(), typeof(FileStream) },
                                                                          null);

                    if (serializeMethod == null)
                    {
                        serializeMethod = serializerType.GetMethod("Serialize",
                                                                   BindingFlags.Public | BindingFlags.Instance,
                                                                   null,
                                                                   new Type[] { logMessages.GetType(), typeof(Stream) },
                                                                   null);
                    }

                    if (serializeMethod != null)
                    {
                        serializeMethod.Invoke(xmlEntrySerializer, new object[] { logMessages, fileStream });
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Fatal("Error saving installation messages", ex, typeof(InstallPackage));
            }
        }
        /// <summary>
        /// Writes the log messages to the message log
        /// </summary>
        /// <param name="installationHistoryRoot"></param>
        /// <param name="logMessages"></param>
        private void SaveInstallationMessages(string installationHistoryRoot, List <ContingencyEntry> logMessages)
        {
            try
            {
                if (string.IsNullOrEmpty(installationHistoryRoot))
                {
                    installationHistoryRoot = FileUtil.MakePath(FileUtils.InstallationHistoryRoot, "Upgrade_FAILURE_" + DateTime.Now.ToString("yyyyMMddTHHmmss") + DateTime.Now.Millisecond);
                }

                string messagesFile = Path.Combine(installationHistoryRoot, "messages.xml");
                FileUtil.EnsureFolder(messagesFile);

                using (FileStream fileStream = File.Create(messagesFile))
                {
                    XmlEntrySerializer xmlEntrySerializer = new XmlEntrySerializer();
                    xmlEntrySerializer.Serialize(logMessages, fileStream);
                }
            }
            catch (Exception ex)
            {
                Log.Fatal("Error saving installation messages", ex, typeof(InstallPackage));
            }
        }
        /// <summary>
        /// Writes the log messages to the message log
        /// </summary>
        /// <param name="installationHistoryRoot"></param>
        /// <param name="logMessages"></param>
        private void SaveInstallationMessages(string installationHistoryRoot, List<ContingencyEntry> logMessages)
        {
            if (string.IsNullOrEmpty(installationHistoryRoot))
            {
                installationHistoryRoot = FileUtil.MakePath(FileUtils.InstallationHistoryRoot, "Upgrade_FAILURE_" + DateTime.Now.ToString("yyyyMMddTHHmmss") + DateTime.Now.Millisecond);
            }

            string messagesFile = Path.Combine(installationHistoryRoot, "messages.xml");
            FileUtil.EnsureFolder(messagesFile);

            using (FileStream fileStream = File.Create(messagesFile))
            {
                XmlEntrySerializer xmlEntrySerializer = new XmlEntrySerializer();
                xmlEntrySerializer.Serialize(logMessages, fileStream);
            }
        }