예제 #1
0
        protected override void HandleProcedure()
        {
            if (UpdateUtils.IsNewerVersion((string)UpdateSharedData.Instance.LocalVersion["version"], (string)UpdateSharedData.Instance.RemoteVersion["version"]))
            {
                Next = Siblings[0];
            }
            else
            {
                Next = Siblings[1];
            }

            PostProcedure();
        }
예제 #2
0
        private void AddToDownloadList(IEnumerable <string> assetKeys)
        {
            foreach (var item in assetKeys)
            {
                // update catalog 中的MD5值
                string assetRemoteMD5 = (string)UpdateSharedData.Instance.RemoteCatalog["assets"][item]["md5"];
                // current catalog 中的MD5值
                string assetLocalMD5 = UpdateSharedData.Instance.LocalCatalog["assets"].Keys.Contains(item) ? (string)UpdateSharedData.Instance.LocalCatalog["assets"][item]["md5"] : null;

                // 添加进更新数组中的文件,1个条件:
                // 1.本地文件的MD5值与update catalog列表中不同。因为MD5相同的话,可能的情况是该文件已经下载但是整个更新流程并未完成。因此不用重复下载
                // 取消ver比较的原因在于,可能出现某个在中间某个版本删除,然后原文件又被加回来的情况。这样就会导致ver号升高但是MD5不变,等同于下载完成但是更新未完成,因此ver号失去校验意义
                string fileAbsPath = Path.Combine(EnvironmentVariables.ExportAssetsRoot, item);
                if (assetRemoteMD5.Equals(assetLocalMD5))      // 不需要更新
                {
                    continue;
                }
                else if ((File.Exists(fileAbsPath) &&                                              // 文件存在
                          UpdateUtils.MD5Hash(File.OpenRead(fileAbsPath)).Equals(assetRemoteMD5))) //已下载完成
                {
                    Debug.Log("the asset has been downloaded@" + fileAbsPath);
                    continue;
                }
                else
                {
                    AssetDownloadData data = new AssetDownloadData();
                    data.localPath = item;
                    Uri result;
                    if (Uri.TryCreate(new Uri((string)UpdateSharedData.Instance.RemoteVersion["cdn1"]), item, out result))
                    {
                        data.uri1 = result.ToString();
                    }
                    if (Uri.TryCreate(new Uri((string)UpdateSharedData.Instance.RemoteVersion["cdn2"]), item, out result))
                    {
                        data.uri2 = result.ToString();
                    }
                    data.size             = ((int)UpdateSharedData.Instance.RemoteCatalog["assets"][item]["size"]);
                    RequiredDownloadSize += ((int)UpdateSharedData.Instance.RemoteCatalog["assets"][item]["size"]);
                    UpdateSharedData.Instance.DownloadList.Add(data);
                }
            }
        }