Пример #1
0
 public void Run(bool ci_run)
 {
     ci = ci_run;
     if (ci)
     {
         Console.WriteLine("Updating Filelist on CI... ...");
     }
     else
     {
         Console.WriteLine("Updating Filelist... ...");
     }
     list.Clear();
     AddDir(Config.workPath);            //当前目录所有文件
     //版本
     MyUtil.saveText(Config.versionFile, DateTime.Now.ToString());
     //重命名列表
     MyUtil.saveText(Config.renameFile, "# Rename List (Codepage is UTF-8, please use TAB to seperate entries, Use Relative Address.)"
                     + Environment.NewLine
                     + "# An example of renaming a file from 123456.jpg to 456789.jpg"
                     + Environment.NewLine
                     + "# pics/123456.jpg	pics/456789.jpg");
     //删除列表
     MyUtil.saveText(Config.deleteFile, "# Delete List (Codepage is UTF-8, please use TAB to seperate entries, Use Relative Address.)");
     //文件列表
     MyUtil.saveList(Config.filelistFile, list.ToArray());            //文件列表
     Console.WriteLine("Filelist Updated!!");
 }
Пример #2
0
        public void Run(bool ignore_sound)
        {
            Console.WriteLine("UPDATE FROM:" + Config.url_home);
            Console.WriteLine("DOWNLOAD TO:" + Config.workPath);
            Console.WriteLine("CONFIG FILE:" + Assembly.GetExecutingAssembly().Location + ".config");

            if (!File.Exists(Config.errorFile))
            {
                Console.WriteLine("Getting New Version ... ...");
                //version
                MyHttp.DownLoad(Config.url_version, Config.newVersionFile);
                //版本号一致
                string md5_1 = MyUtil.MD5_File(Config.versionFile);
                string md5_2 = MyUtil.MD5_File(Config.newVersionFile);
                if (md5_1 == md5_2 && md5_1.Length > 0)
                {
                    Console.WriteLine("Your files are already up-to-date.");
                    return;
                }
                Console.WriteLine("New Version Discovered... ...");
                //删除旧文件
                Delete();
                //重命名文件
                Rename();
            }
            Console.Clear();
            //filelist
            Update(ignore_sound);
            if (File.Exists(Config.newVersionFile))
            {
                File.Delete(Config.versionFile);
                File.Move(Config.newVersionFile, Config.versionFile);
            }
            Console.WriteLine("UPDATE COMPLETE!! You can safely close this window, press any key to quit.");
        }
Пример #3
0
        bool Download(string name, string md5, bool isHide, bool ignore_sound)
        {
            string file = Config.GetPath(name);

            if (ignore_sound && (name.EndsWith(".mp3", StringComparison.OrdinalIgnoreCase) || name.EndsWith(".ogg", StringComparison.OrdinalIgnoreCase) || name.EndsWith(".wav", StringComparison.OrdinalIgnoreCase)))          //ignores sound
            {
                Console.WriteLine("SOUND IGNORED:" + name);
                showProcess(num++, all_num);
                return(true);
            }
            if (File.Exists(file))
            {
                if (md5 == MyUtil.MD5_File(file))              //一致
                {
                    Console.WriteLine("SKIPPED:" + name);
                    showProcess(num++, all_num);
                    return(true);
                }
                else if (MyUtil.checkList(Config.ignores, name))                 //忽略更新
                {
                    Console.WriteLine("IGNORED:" + name);
                    showProcess(num++, all_num);
                    return(true);
                }
            }
            //线程已满
            while (MyHttp.NUM >= MyHttp.MAX_NUM)
            {
                //System.Threading.Thread.Sleep(100);
            }
            //下载文件
            new MyHttp(Config.GetUrl(name), file, new fileinfo(name, md5)).Start();
            return(true);
            //return MyHttp.DownLoad(url_download+name,file);
        }
Пример #4
0
        bool Download(string name, string md5, bool isHide)
        {
            string file = Config.GetPath(name);

            if (File.Exists(file))
            {
                if (md5 == MyUtil.MD5_File(file))              //一致
                {
                    Console.WriteLine("SKIPPED:" + name);
                    showProcess(num++, all_num);
                    return(true);
                }
                else
                {
                    if (MyUtil.checkList(Config.ignores, name))                   //忽略更新
                    {
                        Console.WriteLine("IGNORED:" + name);
                        showProcess(num++, all_num);
                        return(true);
                    }
                }
            }
            //线程已满
            while (MyHttp.NUM >= MyHttp.MAX_NUM)
            {
                //System.Threading.Thread.Sleep(100);
            }
            //下载文件
            new MyHttp(Config.GetUrl(name), file, new fileinfo(name, md5)).Start();
            return(true);
            //return MyHttp.DownLoad(url_download+name,file);
        }
Пример #5
0
        public static bool DownLoad(string url, string filename, fileinfo ff)
        {
            if (myhttplistiner != null)
            {
                myhttplistiner.OnStart(url, filename);
            }
            bool isOK = false;

            try
            {
                if (File.Exists(filename))
                {
                    File.Delete(filename);
                }
                else
                {
                    MyUtil.createDir(filename);
                }
                HttpWebRequest Myrq = (HttpWebRequest)System.Net.HttpWebRequest.Create(url);
                Myrq.Timeout = 30000;
                //Myrq.UserAgent="Mozilla/5.0 (Windows NT 6.2; WOW64) "
                //	+"AppleWebKit/537.36 (KHTML, like Gecko) "
                //	+"Chrome/27.0.1453.94 Safari/537.36";
                if (MyHttp.isProxy)
                {
                    Myrq.Proxy = new WebProxy(MyHttp.proxyip, MyHttp.proxyport);
                }

                HttpWebResponse myrp       = (HttpWebResponse)Myrq.GetResponse();
                long            totalBytes = myrp.ContentLength;

                Stream st = myrp.GetResponseStream();
                Stream so = new System.IO.FileStream(filename + ".tmp", FileMode.Create);
                long   totalDownloadedByte = 0;
                byte[] by    = new byte[2048];
                int    osize = st.Read(by, 0, (int)by.Length);
                while (osize > 0)
                {
                    totalDownloadedByte = osize + totalDownloadedByte;
                    so.Write(by, 0, osize);
                    osize = st.Read(by, 0, (int)by.Length);
                }
                so.Close();
                st.Close();
                File.Delete(filename);
                File.Move(filename + ".tmp", filename);
            }
            catch (System.Exception)
            {
                isOK = false;
            }
            isOK = File.Exists(filename);
            if (myhttplistiner != null)
            {
                myhttplistiner.OnEnd(ff, isOK);
            }
            return(isOK);
        }
Пример #6
0
 public static void saveText(string file, string str)
 {
     if (File.Exists(file))
     {
         File.Delete(file);
     }
     else
     {
         MyUtil.createDir(file);
     }
     File.WriteAllText(file, str, Encoding.UTF8);
 }
Пример #7
0
        void AddFile(string file)
        {
            string filename = Path.GetFileName(file);
            string exename  = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

            if (filename.EndsWith("Thumbs.db", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith(".gitignore", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith("LICENSE", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith("appveyor.yml", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith(".travis.yml", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith("circle.yml", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith("README.md", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith("web.config", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith("update-server.bat", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith("desktop.ini", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith("start.htm", StringComparison.OrdinalIgnoreCase) ||
                filename.EndsWith("update.exe.config", StringComparison.OrdinalIgnoreCase) ||
                file == exename ||
                file == exename + ".config"
                )
            {
                return;
            }
            //处理名字
            string name = file.Replace(Config.workPath, "");

            name = name.Replace(Path.DirectorySeparatorChar, '/');

            if (name.IndexOf('/') == 0)
            {
                name = name.Substring(1);
            }

            if (MyUtil.checkList(Config.ignores, name))
            {
                return;
            }
            string md5 = MyUtil.MD5_File(file);

            if (!ci)
            {
                Console.WriteLine("FILE:	"+ name);
                Console.WriteLine("MD5:	" + md5);
            }
            list.Add(new fileinfo(name, md5));
        }
Пример #8
0
 void Update(bool ignore_sound)
 {
     if (!File.Exists(Config.errorFile))            //上一次下载是否失败
     {
         Console.WriteLine("Downloading Filelist... ...");
         if (!MyHttp.DownLoad(Config.url_filelist, Config.filelistFile))
         {
             return;
         }
         Console.WriteLine("Starting Update... ...");
     }
     else
     {
         File.Delete(Config.filelistFile);
         File.Move(Config.errorFile, Config.filelistFile);
         Console.WriteLine("Continuing Update... ...");
     }
     if (ignore_sound)
     {
         Console.WriteLine("The sound files will be ignored.");
     }
     string[] lines = File.ReadAllLines(Config.filelistFile, Encoding.UTF8);
     all_num = lines.Length;
     num     = 0;
     showProcess(num++, all_num);
     foreach (string line in lines)
     {
         if (!line.StartsWith("#"))
         {
             string[] words = line.Split('\t');
             if (words.Length >= 2)
             {
                 Download(words[0], words[1], false, ignore_sound);
             }
         }
     }
     while (!MyHttp.isOK())
     {
     }
     if (errorlist.Count > 0)
     {
         Console.WriteLine("Some of files failed to update... ...");
         MyUtil.saveList(Config.errorFile, errorlist.ToArray());
     }
 }
Пример #9
0
 public static void saveList(string file, fileinfo[] fileinfos)
 {
     if (File.Exists(file))
     {
         File.Delete(file);
     }
     else
     {
         MyUtil.createDir(file);
     }
     using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write)){
         StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
         if (fileinfos != null)
         {
             foreach (fileinfo ff in fileinfos)
             {
                 sw.WriteLine(ff.name + "\t" + ff.md5);
             }
         }
         sw.Close();
     }
 }