Ejemplo n.º 1
0
        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文件
        }
Ejemplo n.º 2
0
        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");
        }