Esempio n. 1
0
        private void CheckUpdate()
        {
            //检查是否有patchIndex文件,并读取内容
            var indexFile = UResources.ReqFile(INDEX_FILE_NAME);

            if (indexFile != null)
            {
                string fileJson = DESFileUtil.ReadAllText(indexFile.FullName, DESKey.DefaultKey, DESKey.DefaultIV);
                _patchIndexLocal = new PatchIndex(this.VersionCode, JObject.Parse(fileJson));
                if (_patchIndexLocal.Version != this.VersionCode)
                {
                    UpdaterLog.Log("发现patchIndex中的主版本不等于目前的主版本,说明刚经历过主包更新,清空补丁");
                    foreach (var file in ResManager.Ins.DownloadedFiles.Values)
                    {
                        File.Delete(file.FullName);
                    }
                    ResManager.Ins.ReadDownloadDir();
                    _patchIndexLocal = new PatchIndex();
                }
            }
            else
            {
                _patchIndexLocal = new PatchIndex();
                try {
                    //清空下载目录
                    Directory.Delete(ResManager.FullDownloadDir, true);
                } catch { }

                try {
                    // 重新创建目录,并写回PatchIndex
                    Directory.CreateDirectory(ResManager.FullDownloadDir);
                    _patchIndexLocal.WriteToFile();
                } catch (Exception e) {
                    Debug.LogException(e);
                }
            }

            //构建检查更新需要的表单
            JObject json = new JObject();

            json["Version"]      = this.VersionCode;
            json["PatchVersion"] = _patchIndexLocal.PatchVersion;
            if (CustomData != null)
            {
                foreach (var kv in CustomData)
                {
                    json[kv.Key.ToString()] = kv.Value.ToString();
                }
            }
            UpdaterLog.Log(json.ToFormatString());
            WWWForm form = new WWWForm();

            form.AddField("Data", json.ToString());

            HttpManager.Post(CheckUpdateUrl, form, (error, www) => {
                if (!string.IsNullOrEmpty(error))
                {
                    Listener.OnError(ErrorCode.NET_CONNECT_ERROR);
                    return;
                }
                UpdaterLog.Log(www.text);

                JObject responseJObj = JObject.Parse(www.text);
                int code             = responseJObj["code"].OptInt(ErrorCode.DEFAULT.Code);
                if (code == ErrorCode.SUCCESS.Code)
                {
                    _updateType = responseJObj["Type"].OptEnum <UpdateType>(UpdateType.NoUpdate);
                    switch (_updateType)
                    {
                    case UpdateType.NoUpdate:
                        _patchIndexNew = new PatchIndex(this.VersionCode, responseJObj);
                        //没有找到更新,验证文件
                        Listener.OnVerifyStart();
                        if (VerifyPatches())
                        {
                            Listener.OnVerifySuccess();
                            Listener.OnPassUpdate(responseJObj);
                        }
                        else
                        {
                            Listener.OnVerifyFail();
                        }
                        break;

                    case UpdateType.MainPak:
                        _mainPakIndexFromServer = new MainPakIndex(this.VersionCode, responseJObj);
                        Listener.OnFindMainUpdate(_mainPakIndexFromServer.Info);
                        break;

                    case UpdateType.Patch:
                        _patchIndexNew = new PatchIndex(this.VersionCode, responseJObj);
                        if (Listener != null)
                        {
                            Listener.OnFindPatchUpdate(_patchIndexNew.PatchInfo, _patchIndexNew.TotalPatchSize);
                        }
                        break;
                    }
                }
                else
                {
                    Listener.OnError(new ErrorCode(code, responseJObj["error"].OptObject()));
                }
            }, null, 15);
        }
Esempio n. 2
0
        private void CheckUpdate()
        {
            //检查是否有patchIndex文件,并读取内容
            Init(this.VersionCode);

            //构建检查更新需要的表单
            JObject json = new JObject();

            json["version"]      = this.VersionCode;
            json["patchVersion"] = _patchIndexLocal.PatchVersion;
            if (CustomData != null)
            {
                foreach (var kv in CustomData)
                {
                    json[kv.Name] = kv;
                }
            }
            WWWForm form = new WWWForm();

            form.AddField("P", json.ToString());

            HttpManager.Post(CheckUpdateUrl, form, (error, www) => {
                if (!string.IsNullOrEmpty(error))
                {
                    Listener.OnError(error);
                    return;
                }
                UpdaterLog.Log(www.text);

                JObject responseJObj = JObject.Parse(www.text);
                if (responseJObj["E"].GetString() != null)
                {
                    Listener?.OnError(responseJObj["E"].AsString());
                    return;
                }
                responseJObj = responseJObj["P"].OptObject();
                _updateType  = (UpdateType)(responseJObj["Type"].OptInt(0));

                switch (_updateType)
                {
                case UpdateType.NoUpdate:
                    _patchIndexNew = new PatchIndex(this.VersionCode, responseJObj);
                    //没有找到更新,验证文件
                    Listener.OnVerifyStart();
                    if (VerifyPatches())
                    {
                        Listener.OnVerifySuccess();
                        Listener.OnPassUpdate();
                    }
                    else
                    {
                        Listener.OnVerifyFail();
                    }
                    break;

                case UpdateType.MainPak:
                    _mainPakIndexFromServer = new MainPakIndex(this.VersionCode, responseJObj);
                    Listener.OnFindMainUpdate(_mainPakIndexFromServer.Info);
                    break;

                case UpdateType.Patch:
                    _patchIndexNew = new PatchIndex(this.VersionCode, responseJObj);
                    if (Listener != null)
                    {
                        Listener.OnFindPatchUpdate(_patchIndexNew.PatchInfo, _patchIndexNew.TotalPatchSize);
                    }
                    break;
                }
            });
        }
Esempio n. 3
0
        private void CheckUpdate()
        {
            //检查是否有patchIndex文件,并读取内容
            var indexFile = UResources.ReqFile(INDEX_FILE_NAME);

            if (indexFile != null)
            {
                string fileJson = DESFileUtil.ReadAllText(indexFile.FullName, DESKey.DefaultKey, DESKey.DefaultIV);
                _patchIndexLocal = new PatchIndex(this.VersionCode, JObject.Parse(fileJson));
                if (_patchIndexLocal.Version != this.VersionCode)
                {
                    UpdaterLog.Log("发现patchIndex中的主版本不等于目前的主版本,说明刚经历过主包更新,清空补丁");
                    foreach (var file in ResManager.Ins.DownloadedFiles.Values)
                    {
                        File.Delete(file.FullName);
                    }
                    ResManager.Ins.ReadDownloadDir();
                    _patchIndexLocal = new PatchIndex();
                }
            }
            else
            {
                _patchIndexLocal = new PatchIndex();
            }

            //构建检查更新需要的表单
            JObject json = new JObject();

            json["Version"]      = this.VersionCode;
            json["PatchVersion"] = _patchIndexLocal.PatchVersion;
            if (CustomData != null)
            {
                foreach (var kv in CustomData)
                {
                    json[kv.Key.ToString()] = kv.Value.ToString();
                }
            }
            WWWForm form = new WWWForm();

            form.AddField("Data", json.ToString());

            HttpManager.Post(CheckUpdateUrl, form, (error, www) => {
                if (!string.IsNullOrEmpty(error))
                {
                    Listener.OnError(error);
                    return;
                }
                UpdaterLog.Log(www.text);

                JObject responseJObj = JObject.Parse(www.text);
                _updateType          = (UpdateType)(responseJObj["Type"].OptInt(0));

                switch (_updateType)
                {
                case UpdateType.NoUpdate:
                    _patchIndexNew = new PatchIndex(this.VersionCode, responseJObj);
                    //没有找到更新,验证文件
                    Listener.OnVerifyStart();
                    if (VerifyPatches())
                    {
                        Listener.OnVerifySuccess();
                        Listener.OnPassUpdate();
                    }
                    else
                    {
                        Listener.OnVerifyFail();
                    }
                    break;

                case UpdateType.MainPak:
                    _mainPakIndexFromServer = new MainPakIndex(this.VersionCode, responseJObj);
                    Listener.OnFindMainUpdate(_mainPakIndexFromServer.Info);
                    break;

                case UpdateType.Patch:
                    _patchIndexNew = new PatchIndex(this.VersionCode, responseJObj);
                    if (Listener != null)
                    {
                        Listener.OnFindPatchUpdate(_patchIndexNew.PatchInfo, _patchIndexNew.TotalPatchSize);
                    }
                    break;
                }
            });
        }