private void CompareLocalResVer() { int result = VersionUtils.CompareVersion(UpdateMgr.PersistentResVer, UpdateMgr.StreamResVer); LogMgr.I("UnCompress", "CompareLocalResVer", " 沙盒版本:" + UpdateMgr.PersistentResVer + " 包内版本:" + UpdateMgr.StreamResVer + "比较结果:" + result, BeShowLog); switch (result) { case 0: //相同,不需要再次释放资源 case -1: //persistentResVer大,不需要释放资源 SetState(UnCompressState.unCompressComplete); break; case 1: //streamResVer大,释放资源 SetState(UnCompressState.readStreamResInfoList); break; } }
/// <summary> /// 比较沙盒与远程resVer /// </summary> private void CompareResVerPersist_Remote() { int result = VersionUtils.CompareVersion(UpdateMgr.PersistentResVer, UpdateMgr.RemoteResVer); switch (result) { case 0: //相同,不需要更新 case -1: //persistentResVer大,理论上不应该存在本地比server大的情况 LogMgr.I("DownloadRes", "CompareResVerPersist_Remote", "比较resVer persist:" + UpdateMgr.PersistentResVer + " remoteResVer" + UpdateMgr.RemoteResVer + " 不需要下载,准备进入复制流程", BeShowLog); SetState(DownloadResState.downloadComplete); break; case 1: //RemoteResVer,准备更新流程 LogMgr.I("DownloadRes", "CompareResVerPersist_Remote", "比较resVer persist:" + UpdateMgr.PersistentResVer + " remoteResVer" + UpdateMgr.RemoteResVer + " 需要下载,准备拉取remote resInfoList", BeShowLog); SetState(DownloadResState.pullRemoteResInfoList); break; } }
/// <summary> /// 检测本地(沙盒中)是否有上次未更新完的资源 /// </summary> private void CheckPersistDownloadingRes() { Utils.SB.Append(UnityUtil.PersistentPath); Utils.SB.Append(DownloadCachePath); string downloadingFolderPath = Utils.SB.ToString(); //下载中目录如果不存在就创建 FileHelper.CreateFolder(downloadingFolderPath); Utils.ClearSB(); Utils.SB.Append(UnityUtil.PersistentPath); Utils.SB.Append(DownloadCachePath); Utils.SB.Append("/resVer.txt"); string downloadingResver = Utils.SB.ToString(); Utils.ClearSB(); bool bDownloadingResVerExist = FileHelper.BeFileExist(downloadingResver); LogMgr.I("DownloadRes", "CheckPersistDownloadingRes", "开始检测是否存在更新一半的资源", BeShowLog); //本地有未更新完版本 if (bDownloadingResVerExist) { string downloadingResVer = FileHelper.ReadStringFromFile(downloadingResver); int result = VersionUtils.CompareVersion(downloadingResVer, UpdateMgr.PersistentResVer); //下载中版本与远程版本是否一致 if (result == 0) { LogMgr.I("DownloadRes", "CheckPersistDownloadingRes", "下载中目录存在resVer:" + downloadingResVer + "并且版本与沙盒resVer一致", BeShowLog); //一致 Utils.SB.Append(UnityUtil.PersistentPath); Utils.SB.Append("/"); Utils.SB.Append(DownloadOverFileName); string downloadOverFilePath = Utils.SB.ToString(); Utils.ClearSB(); //上一次下载完成了么 bool bDownloadOverFileExist = FileHelper.BeFileExist(downloadOverFilePath); if (bDownloadOverFileExist) { LogMgr.I("DownloadRes", "CheckPersistDownloadingRes", "下载中目录存在下载完成标志,说明下载已经完成,上次复制资源流程可能发生了中断,准备掠过下载流程,进入复制流程", BeShowLog); //下载已完成(此条件进入说明上次复制资源流程可能被打断),继续复制资源 SetState(DownloadResState.downloadComplete); } else { LogMgr.I("DownloadRes", "CheckPersistDownloadingRes", "下载中目录不存在下载完成标志,说明下载未完成,准备拉取remoteResInfoList", BeShowLog); //下载未完成 SetState(DownloadResState.pullRemoteResInfoList); } } else { LogMgr.I("DownloadRes", "CheckPersistDownloadingRes", "下载中目录resVer:" + downloadingResVer + "沙盒ResVer:" + UpdateMgr.PersistentResVer + "不一致,清理下载中目录,准备进行沙盒,remote resVer比较", BeShowLog); //不一致,清理下载中目录 FileHelper.DeleteFolder(downloadingFolderPath); SetState(DownloadResState.compareResVerPersist_Remote); } } else { LogMgr.I("DownloadRes", "CheckPersistDownloadingRes", "下载中目录不存在resVer,说明不存在更新一半的资源,准备进行沙盒,remote resVer比较", BeShowLog); //本地没有更新一半的资源 SetState(DownloadResState.compareResVerPersist_Remote); } }