Пример #1
0
    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;
        }
    }
Пример #2
0
    /// <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;
        }
    }
Пример #3
0
    /// <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);
        }
    }