public static void CreatServerFileXml() //创建服务端文件信息xml { ListDF = QueryFiles.FindFile(sx.SrcDirectory + Path.DirectorySeparatorChar, ListDF, ListDirectory); //搜索要复制的文件夹和文件 string s = sx.SrcDirectory.Substring(sx.SrcDirectory.LastIndexOf(Path.DirectorySeparatorChar)); //软件的根目录 foreach (String SrcFilePath in ListDF.Keys) { if (!FilterFile.Contains(sx.SrcDirectory + SrcFilePath.Replace(sx.SrcDirectory, ""))) { //拼接xml里文件名的相对路径 filesInfo.Add(s + SrcFilePath.Replace(sx.SrcDirectory, ""), QueryFiles.GetMD5HashFromFile(SrcFilePath)); } } CreatXml.CreateXML(filesInfo, TempFile + Path.DirectorySeparatorChar + "ServerFileInfo.xml", sx.Version); //创建xml文件 }
public static void XmlDiff(string ClientIP) //对比客户端与服务端xml文件的差异,生成需要删除的文件和更新文件的压缩包 { List <String> DeleteFile = new List <string>(); List <DeTailFile> ClientLDF = QueryXml.QueryXmlMain(TempFile + Path.DirectorySeparatorChar + ClientIP + Path.DirectorySeparatorChar + "ClientFileInfo.xml"); List <DeTailFile> ServerLDF = QueryXml.QueryXmlMain(TempFile + Path.DirectorySeparatorChar + "ServerFileInfo.xml"); int[] ClientCount = new int[ClientLDF.Count()]; int[] ServerCount = new int[ServerLDF.Count()]; string s = sx.SrcDirectory.Substring(0, sx.SrcDirectory.LastIndexOf(Path.DirectorySeparatorChar)); for (int i = 0; i < ClientLDF.Count(); i++) { for (int j = 0; j < ServerLDF.Count(); j++) { if (ClientLDF[i].Name.Equals(ServerLDF[j].Name)) { ClientCount[i]++; ServerCount[j]++; if (!ClientLDF[i].FileMD5.Equals(ServerLDF[j].FileMD5)) { UpdateFile.Add(s + ServerLDF[i].Name); } } } } for (int i = 0; i < ServerLDF.Count(); i++) { if (ServerCount[i] == 0) { UpdateFile.Add(s + ServerLDF[i].Name); } } cd.ZipFileDirectory(sx.SrcDirectory, TempFile + Path.DirectorySeparatorChar + ClientIP + Path.DirectorySeparatorChar + "Update.zip", UpdateFile); //压缩需要更新的文件 //添加需要删除的文件名 for (int i = 0; i < ClientLDF.Count(); i++) { if (ClientCount[i] == 0) { DeleteFile.Add(ClientLDF[i].Name); } } CreatXml.CreateXML(DeleteFile, TempFile + Path.DirectorySeparatorChar + ClientIP + Path.DirectorySeparatorChar + "DeleteFile.xml"); }