コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }