Example #1
0
        public override int Work()
        {
            if (!CheckLastFlowResult())
            {
                return(LastFlowResult);
            }

            int ret = CodeDefine.RET_INIT;

            if (!checkNeedTrans())
            {
                ret = CodeDefine.RET_SUCCESS;
            }
            else
            {
                //如果有老的xml,需要先保存数据
                LocalVersionXml oldXml = getOldXmlData(_storedLocalXmlPath);

                _transInstance.StartUnzipByThread();

                bool success = _transInstance.GetTransReslult();

                if (success)
                {
                    //将老数据:分段版本、补丁版本、app版本填充的新的xml中
                    updateLocalXmlData(oldXml, _storedLocalXmlPath, true);
                    ChangeLocalXmlPath(true);
                }

                ret = success ? CodeDefine.RET_SUCCESS : CodeDefine.RET_FAIL_TRANS_FAIL;
                _transInstance.CallFinish(success);
                _forceTrans = false;
            }
            return(ret);
        }
Example #2
0
 public override void OnEnter(BaseFlow oldFlow)
 {
     base.OnEnter(oldFlow);
     _localXml        = LocalXml;
     _currentData     = CurrentRemoteData;
     _mapFileDataList = MapFileDataListForDownload;
     UpdateSystem.Download.Download.MutiDownloadedSize = 0;
     _totalSize = 0;
 }
Example #3
0
 //是否已经转移过资源了
 public static bool HasTransedResource()
 {
     if (File.Exists(_storedLocalXmlPath))
     {
         var localXml = new LocalVersionXml();
         localXml.parseLocalVersionXml(_storedLocalXmlPath);
         return(localXml.HasCopy.ToLower() == _hasCopyTag);
     }
     return(false);
 }
Example #4
0
        //解析localversion
        public int parseLocalVersion(string localXmlPath)
        {
            int ret = CodeDefine.RET_SUCCESS;

            LocalXml = new LocalVersionXml();
            ret      = LocalXml.parseLocalVersionXml(localXmlPath);
            if (ret >= CodeDefine.RET_SUCCESS)
            {
                LocalBaseResVersion = LocalXml.BaseResVersion;
            }
            return(ret);
        }
Example #5
0
        private LocalVersionXml getOldXmlData(string oldXmlPath)
        {
            LocalVersionXml xml = null;

            if (File.Exists(oldXmlPath))
            {
                xml = new LocalVersionXml();
                xml.parseLocalVersionXml(oldXmlPath);
            }

            return(xml);
        }
Example #6
0
        //判断是否需要转移资源
        private bool checkNeedTrans()
        {
            UpdateLog.DEBUG_LOG("检查是否需要转移资源");
            bool            ret              = false;
            LocalVersionXml localXml         = getOldXmlData(_storedLocalXmlPath);
            string          storedAppVersion = localXml == null ? "" : localXml.LocalAppVersion;
            string          hasCopy          = localXml == null ? "" : localXml.HasCopy;

            //存储的app版本号不存在(没释放过资源, 本地LocalVersion.xml不存在)
            if (string.IsNullOrEmpty(storedAppVersion))
            {
                if (_inAppBaseVersion == "0")
                {
                    //同时包内分段号为0,则说明是下载器,需要强制释放资源
                    ret = true;
                    UpdateLog.DEBUG_LOG("inAppBaseVerson==0,需要强制转移资源");
                }
                else if (_platformType == PlatformType.IOS && !_forceTrans)
                {
                    string inAppXmlAppVer = getIOSAppVerInXml(_inAppLocalXmlPath);
                    if (!string.IsNullOrEmpty(inAppXmlAppVer) && _inAppClientVersion.CompareTo(inAppXmlAppVer) > 0)
                    {
                        ret = true;
                        UpdateLog.DEBUG_LOG("IOS平台,包内版本比包内xml中app版本更高,需要转移资源");
                    }
                    else
                    {
                        //没释放过资源,并且是ios平台,分段号又不为0,说明包内有资源可以运行,不做资源释放
                        ret = false;
                        UpdateLog.DEBUG_LOG("游戏启动,IOS平台,跳过转移资源");
                    }
                }
                else
                {
                    ret = true;
                    UpdateLog.DEBUG_LOG("需要转移资源");
                }
            }
            else if (_inAppClientVersion.CompareTo(storedAppVersion) > 0 || hasCopy.ToLower() != _hasCopyTag)
            {
                UpdateLog.DEBUG_LOG(string.Format("_inAppClientVersion={0} storedAppVersion={1} hasCopy={2}", _inAppClientVersion, storedAppVersion, hasCopy));
                //包内版本比本地版本要大,说明是新客户端,需要做新资源释放覆盖
                ret = true;
                UpdateLog.DEBUG_LOG("客户端更新或者上次转移失败,需要重新转移资源");
            }
            else
            {
                UpdateLog.DEBUG_LOG("不需要转移资源");
            }

            return(ret);
        }
Example #7
0
        private string getIOSAppVerInXml(string localXmlPath)
        {
            string appVer = "";

            if (!string.IsNullOrEmpty(localXmlPath) && File.Exists(localXmlPath))
            {
                var xml = new LocalVersionXml();
                xml.parseLocalVersionXml(localXmlPath);
                appVer = xml.LocalAppVersion;
            }

            return(appVer);
        }
Example #8
0
        public override int Work()
        {
            if (!CheckLastFlowResult())
            {
                return(LastFlowResult);
            }
            int ret = CodeDefine.RET_INIT;

            _localXml = LocalXml;
            if (_localXml == null)
            {
                return(ret);
            }

            //跳过更新
            if (_localXml.EnableDownload.Equals("false"))
            {
                ret = CodeDefine.RET_SKIP_BY_DISABLEDOWNLOAD;
                return(ret);
            }

            //有数据,则不重新下载xml了
            if (RemoteXml != null && _recentResult >= CodeDefine.RET_SUCCESS)
            {
                ret = _recentResult;
                return(ret);
            }

            _remoteXmlName = _localXml.ResourceVersionUrl.Substring(_localXml.ResourceVersionUrl.LastIndexOf("/") + 1);

            //1. 下载
            ret = downloadRemoteXml(_localXml.ResourceVersionUrl, _storeDir);
            if (ret >= CodeDefine.RET_SUCCESS)
            {
                string downloadedXmlPath = System.IO.Path.Combine(_storeDir, _remoteXmlName);
                //2. 解析
                ret = parseResourceXml(downloadedXmlPath);
            }
            if (ret >= CodeDefine.RET_SUCCESS)
            {
                //3. 判断使用正式流程还是测试流程
                CurrentRemoteData = useTestFlow() ? RemoteXml.TestFollow : RemoteXml.NormalFollow;
                sortBaseVersion();
            }

            return(ret);
        }
Example #9
0
        private void updateLocalXmlData(LocalVersionXml oldXml, string newXmlPath, bool transed)
        {
            if (File.Exists(newXmlPath))
            {
                LocalVersionXml newXml = new LocalVersionXml();
                newXml.parseLocalVersionXml(newXmlPath);
                if (oldXml != null)
                {
                    newXml.save(oldXml.BaseResVersion, oldXml.PatchResVersion, "", _inAppClientVersion);
                }

                if (transed)
                {
                    newXml.save("", "", _hasCopyTag);
                }
            }
        }
Example #10
0
        /// <summary>
        /// 做数据拷贝,将上一个流程的数据转到当前流程
        /// </summary>
        /// <param name="oldFlow"></param>
        public virtual void OnEnter(BaseFlow oldFlow)
        {
            if (!_initialized)
            {
                //Inititalize();
            }

            if (_perFlowActionCall != null)
            {
                _perFlowActionCall(null);
            }

            if (oldFlow == null)
            {
                return;
            }

            //数据拷贝
            if (oldFlow.LocalXml != null)
            {
                LocalXml = oldFlow.LocalXml;
            }
            if (oldFlow.RemoteXml != null)
            {
                RemoteXml = oldFlow.RemoteXml;
            }
            if (oldFlow.CurrentRemoteData != null)
            {
                CurrentRemoteData = oldFlow.CurrentRemoteData;
            }
            if (!string.IsNullOrEmpty(oldFlow.LocalBaseResVersion))
            {
                LocalBaseResVersion = oldFlow.LocalBaseResVersion;
            }
            if (oldFlow.MapFileDataListForDownload != null)
            {
                MapFileDataListForDownload = oldFlow.MapFileDataListForDownload;
            }
            if (oldFlow.ForceCheckMd5List != null)
            {
                ForceCheckMd5List = oldFlow.ForceCheckMd5List;
            }

            LastFlowResult = oldFlow.CurrentFlowResult;
        }
Example #11
0
 public override void OnEnter(BaseFlow oldFlow)
 {
     base.OnEnter(oldFlow);
     _localXml    = LocalXml;
     _currentData = CurrentRemoteData;
 }
Example #12
0
 public override void Uninitialize()
 {
     _currentData = null;
     _localXml    = null;
 }