public bool Install(VersionInfo build, string targetDirectory) { var filesinfo = GetVersionInfo(build); Log("Install : Build " + build.Build + " to : " + targetDirectory, true); DownloadFile(_repository + "/Download/" + _platform + "/" + build.Build + "/Install", "Install"); bool res; using (var q = new ThreadedDownlads(Threads, _tempDirectory, false)) { foreach (var files in filesinfo.FileInfos) { var info = new DownloadFileInfo { FileSource = _platformUrl + @"/" + build.Build + @"/Files/" + files.FileHash + ".dat", FileDestination = targetDirectory + files.FilePath, FileHash = files.FileHash }; q.EnqueueTask(info); } res = q.WaitEnd(); } return(res); }
public bool Update(string directory, VersionInfo build) { if (!File.Exists(directory + @"\Yatse2.exe")) { return(false); } Tools.FindAndKillProcess("Yatse2"); var version = Tools.GetFileRevision(directory + @"\Yatse2.exe"); if (version == build.Build) { return(false); } var filesinfo = GetVersionInfo(new VersionInfo { Beta = true, Build = version }); if (filesinfo != null) { Log("Update : Checking current install against web build : " + version); foreach (var files in filesinfo.FileInfos) { if (!File.Exists(directory + files.FilePath)) { continue; } if (FileHash.CheckFileHashString(directory + files.FilePath, files.FileHash)) { continue; } if (File.Exists(directory + files.FilePath + ".bck")) { File.Delete(directory + files.FilePath + ".bck"); } File.Move(directory + files.FilePath, directory + files.FilePath + ".bck"); Log("Update : Backup modified file : " + files.FilePath, true); } } else { Log("Update : Current build no more on server : " + version, true); } DownloadFile(_repository + "/Download/" + _platform + "/" + build.Build + "/Update", "Update"); Log("Update : Updating to build : " + build.Build, true); filesinfo = GetVersionInfo(build); if (filesinfo != null) { bool res; using (var q = new ThreadedDownlads(Threads, _tempDirectory, false)) { foreach (var files in filesinfo.FileInfos) { var info = new DownloadFileInfo { FileSource = _platformUrl + @"/" + build.Build + @"/Files/" + files.FileHash + ".dat", FileDestination = directory + files.FilePath, FileHash = files.FileHash }; q.EnqueueTask(info); } res = q.WaitEnd(); } return(res); } Log("Update : New build no more on server : " + build.Build, true); return(false); }