Exemple #1
0
        private bool FetchVersionInfo()
        {
            string versionInfoXML = comms.DownloadManager.DownloadTextFromURL(versionInfoURL);

            if (versionInfoXML == null)
            {
                FailReason  = PatchFailReason.DownloadError;
                FailDetails = Localization.Get(StringId.E_VersionInfoCouldNotBeDownloaded);

                return(false);
            }

            if (VersionInfoVerifier != null && !VersionInfoVerifier(ref versionInfoXML))
            {
                FailReason  = PatchFailReason.CantVerifyVersionInfo;
                FailDetails = Localization.Get(StringId.E_VersionInfoCouldNotBeVerified);

                return(false);
            }

            try
            {
                comms.VersionInfo = PatchUtils.DeserializeXMLToVersionInfo(versionInfoXML);
            }
            catch
            {
                FailReason  = PatchFailReason.XmlDeserializeError;
                FailDetails = Localization.Get(StringId.E_VersionInfoInvalid);

                return(false);
            }

            if (comms.Cancel)
            {
                return(false);
            }

            if (!comms.VersionInfo.Version.IsValid)
            {
                FailReason  = PatchFailReason.InvalidVersionCode;
                FailDetails = Localization.Get(StringId.E_VersionInfoInvalid);

                return(false);
            }

            incrementalPatches.Clear();
            incrementalPatchesInfo.Clear();
            filesInVersion.Clear();

            List <VersionItem> versionInfoFiles = comms.VersionInfo.Files;

            for (int i = 0; i < versionInfoFiles.Count; i++)
            {
                filesInVersion.Add(versionInfoFiles[i].Path);
            }

            currentVersion = PatchUtils.GetVersion(comms.RootPath, comms.VersionInfo.Name);
            return(true);
        }