public static FileInfo downloadUpdate(LocalIni local, ServerIni serv) { List <string> values = new List <string>(serv.zipFiles.Values); List <string> keys = new List <string>(serv.zipFiles.Keys); using (WebClient webClient = new WebClient()) { int i = 0; for (; i < values.Count; i++) { //try resume if (File.Exists(Util.getUpdateDirPath() + values[i]) && CheckSum.verifyMd5Hash(Util.getUpdateDirPath() + values[i], keys[i])) { continue; } //download File.WriteAllText(Util.getUpdateDirPath() + values[i], webClient.DownloadString(new Uri(Util.concutUrl(local.serverUri.ToString(), values[i]))), Encoding.Default); //check sum if (!CheckSum.verifyMd5Hash(Util.getUpdateDirPath() + values[i], keys[i]))//second attempt { File.WriteAllText(Util.getUpdateDirPath() + values[i], webClient.DownloadString(new Uri(Util.concutUrl(local.serverUri.ToString(), values[i]))), Encoding.Default); if (!CheckSum.verifyMd5Hash(Util.getUpdateDirPath() + values[i], keys[i])) { throw new Exception("file download error"); } } } } //combine files string updateFile = Util.getUpdateDirPath() + "update.zip"; File.Create(updateFile); foreach (string file in values) { string curFile = Util.getUpdateDirPath() + file; File.AppendAllText(updateFile, File.ReadAllText(curFile, Encoding.Default), Encoding.Default); File.Delete(curFile); } return(new FileInfo(updateFile)); }
public static bool deserialize(string srcFile, string destFile, string md5String) { File.Create(destFile); //file to string //string to byte string sfile = File.ReadAllText(srcFile, Encoding.Default); //md5 if (!CheckSum.verifyMd5Hash(sfile, md5String.Trim())) { return(false); } byte[] buf = Encoding.Default.GetBytes(sfile); //byte to file (without last postfix) ByteArrayToFile(destFile, buf); return(true); }