コード例 #1
0
        /// <summary>
        /// Получение детальной информации об обновлениях шаблона из xml
        /// </summary>
        /// <param name="prevVersion">Текущая версия</param>
        /// <param name="updatesInFolder">Список обновлений, которые находятся в папке</param>
        /// <returns>Перечисление названий обновлений, которые необходимо поставить, с учётом текущей версии</returns>
        private IEnumerable <string> GetInfoListUpdates(string prevVersion, IEnumerable <string> updatesInFolder)
        {
            _log.Trace("Get updates information from xml");

            var templateInfo = new TemplateDetailInformation();

            templateInfo.Updates = _templateDetail.Updates;

            var currentVersion = prevVersion;

            var result = new List <string>();

            try
            {
                while (true)
                {
                    // получаем версии обновлений, для которых используемая версия отличается от текущей (из xml)
                    var updateVersions = templateInfo.Updates.Where(upd =>
                                                                    upd.ApplyVersions.Any(version => VersionComparer.CompareSt(version, currentVersion) == 0)).
                                         Select(upd => upd.UpdateVersion);

                    _log.Info("Updates version {0}", updateVersions);

                    // далее из полученного выбираем ту версию, которая отличается от версий обновлений в папке (самую последнюю)
                    var updVersion = updateVersions.Where(version => updatesInFolder.Any(versionInFile =>
                                                                                         VersionComparer.CompareSt(version, versionInFile) == 0)).OrderByDescending(version =>
                                                                                                                                                                    version, new VersionComparer()).FirstOrDefault();

                    _log.Info("updVersion {0}", updVersion);

                    if (!string.IsNullOrEmpty(updVersion))
                    {
                        currentVersion = updVersion;

                        // и если всё хорошо, то добавляем её к списку требуемых к загрузке обновлений
                        result.Add(updVersion);
                    }
                    else
                    {
                        break;
                    }
                }

                _log.Trace("Getting updates information from xml has been completed");
            }
            catch (Exception ex)
            {
                _log.Error("Error during getting detail information from xml file: {0}", ex.Message);
            }

            return(result);
        }