//Create public Resources(FileCheckDone a, FileCheckError b, FileCheckDownloading c) { fcd = a; fce = b; Down = c; t = new List <Piece>(); wc = new WebClient(); if (!Directory.Exists(localpath)) { Directory.CreateDirectory(localpath); } if (!File.Exists(localpath + "b.down")) { File.WriteAllText(localpath + "b.down", "??????"); } }
public void ValidateXmlAndLocal() { Ipaybox.UpdateState = 1; Ipaybox.AddToLog(Ipaybox.Logs.Update, "Запуск обновления. Download core file..."); Ipaybox.NeedUpdates.Core = false; list = new XmlDocument(); try { string xml = TryDownloadUpdateXml(); if (xml != null) { if (xml.Length > 0 && xml.IndexOf("result") == -1) { Ipaybox.Incass.bytesRead += xml.Length; Ipaybox.FlushStatistic(); Ipaybox.AddToLog(Ipaybox.Logs.Update, "\t Успешно."); } else { Ipaybox.AddToLog(Ipaybox.Logs.Update, "\t НЕ Успешно."); // Останавливаем обновление Ipaybox.NeedUpdates.Core = true; Ipaybox.Working = false; return; } } else { //Останавливаем обновление Ipaybox.NeedUpdates.Core = true; Ipaybox.Working = false; return; } } catch { //Останавливаем обновление Ipaybox.NeedUpdates.Core = true; Ipaybox.Working = false; return; } if (!(list.DocumentElement != null && list.DocumentElement.Name == "fileinfo")) { Ipaybox.NeedUpdates.Core = true; Ipaybox.Working = false; return; } XmlElement root = list.DocumentElement; for (int i = 0; i < root.ChildNodes.Count; i++) { XmlElement row = (XmlElement)root.ChildNodes[i]; if (row.Name == "file") { // Сравнить данные по файлу CheckDirExist(row.GetAttribute("filepath")); FileCheckError err = ValidateLocalFile(row.GetAttribute("filepath"), row.GetAttribute("length"), row.GetAttribute("crc")); //Ipaybox.AddToLog(Ipaybox.Logs.Update, "\t Проверка файла " + row.GetAttribute("filepath") +" - "+ err.ToString()); switch (err) { case FileCheckError.UPDATE: bool result = DownloadFileGZ(row.GetAttribute("filepath"), row.GetAttribute("length"), row.GetAttribute("crc")); if (!result) { //Файл не скачался обновление остановить. Ipaybox.AddToLog(Ipaybox.Logs.Update, "\t Файл не скачался обновление остановить."); Ipaybox.NeedUpdates.Core = true; Ipaybox.Working = false; return; } break; } } } if (Needtorestart) { Ipaybox.NeedToRestart = true; } Ipaybox.UpdateState = 0; Ipaybox.AddToLog(Ipaybox.Logs.Update, "Выход из обновления."); }