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!!"); }
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."); }
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); }
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); }
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); }
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); }
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)); }
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()); } }
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(); } }