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