Esempio n. 1
0
        public virtual void Reset()
        {
            mServerVersionData = null;
            mLocalVersionData  = null;
            mApkVersionData    = null;

            mBeginHandle  = null;
            mFailHandle   = null;
            mFinishHandle = null;

            if (null != mWebRequestAsync)
            {
                mWebRequestAsync.Dispose();
                mWebRequestAsync = null;
            }

            mTotalSize = 1;
        }
Esempio n. 2
0
        private static void LoadInnerRes()
        {
            TextAsset tmpTextAsset = Resources.Load <TextAsset>(FileHelper.ResVersionFileCRC.ToString());

            if (null == tmpTextAsset)
            {
                Logger.LogError($"加载文件版本信息文件 {FileHelper.ResVersionFileCRC} 失败!");
                return;
            }

            VersionData tmpResVersionData = VersionData.LoadVersionData(tmpTextAsset.bytes);

            tmpTextAsset = Resources.Load <TextAsset>(tmpResVersionData.ResDescCrc.ToString());

            if (null == tmpTextAsset)
            {
                Logger.LogError($"加载文件列表信息文件 {tmpResVersionData.ResDescCrc} 失败!");
                return;
            }

            mResKey2InfoFlagDict = LoadResDescInfo(tmpTextAsset.bytes);
        }
Esempio n. 3
0
        public static VersionData LoadVersionData(byte[] data)
        {
            VersionData returnData = new VersionData();

            if (data == null)
            {
                return(returnData);
            }

            MemoryStream ms = new MemoryStream(data);
            BinaryReader br = new BinaryReader(ms);

            returnData.major      = br.ReadByte();
            returnData.minor      = br.ReadByte();
            returnData.revision   = br.ReadInt32();
            returnData.ResDescCrc = br.ReadUInt32();
            returnData.initalize  = true;

            br.Close();
            ms.Close();

            return(returnData);
        }
Esempio n. 4
0
        //加载版本描述
        protected virtual void LoadVersionFile(byte[] data)
        {
            //服务器上的VersionData
            mServerVersionData = VersionData.LoadVersionData(data);

            //加载包内VersionData
            TextAsset tmpApkTextAsset = Resources.Load <TextAsset>(VersionFile);

            if (tmpApkTextAsset != null)
            {
                mApkVersionData = VersionData.LoadVersionData(tmpApkTextAsset.bytes);
            }

            //加载本地VersionData
            string tmpLocalVersionPath = $"{mLocalPath}/{VersionFile}";

            if (File.Exists(tmpLocalVersionPath))
            {
                byte[] localData = FileHelper.ReadFile(tmpLocalVersionPath);
                mLocalVersionData = VersionData.LoadVersionData(localData);
            }

            if (!mServerVersionData.initalize || !mApkVersionData.initalize)
            {
                Logger.LogError("加载code的Version:" + VersionFile + "失败");
                Failed();

                return;
            }

            //需要强更客户端
            if (mApkVersionData.major != mServerVersionData.major)
            {
                ForceUpdateClient();
                return;
            }

            do
            {
                //包内版本数据相同
                if (mApkVersionData.ResDescCrc == mServerVersionData.ResDescCrc)
                {
                    TextAsset tmpTextAsset = Resources.Load(mApkVersionData.ResDescCrc.ToString()) as TextAsset;

                    if (null != tmpTextAsset)
                    {
                        LoadDescribe(tmpTextAsset.bytes, EPosType.ApkInner);
                    }
                    else
                    {
                        Failed();
                    }

                    break;
                }

                string tmpFileListPath = $"{mLocalPath}/{mServerVersionData.ResDescCrc}";

                //本地版本数据相同且资源存在
                if (null != mLocalVersionData && mLocalVersionData.ResDescCrc == mServerVersionData.ResDescCrc && File.Exists(tmpFileListPath))
                {
                    byte[] tmpLocalDescData = FileHelper.ReadFile(tmpFileListPath);

                    if (null != tmpLocalDescData)
                    {
                        LoadDescribe(tmpLocalDescData, EPosType.Local);
                    }
                    else
                    {
                        Failed();
                    }

                    break;
                }

                Save(data, VersionFile);
                DownloadDescribeFileAsync();
            } while (false);
        }