/// <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); }