Beispiel #1
0
    IEnumerator CheckHotUpdateAsync()
    {
        WWW www = new WWW(FormatUrl(serverUrl, GetRouteRoot() + "files.txt"));

        yield return(www);

        if (!string.IsNullOrEmpty(www.error))
        {
            hotUI.HOT_CheckHotUpdateError(www.error, this);

            www.Dispose();
            www = null;
        }
        else
        {
            //对比文件是否需要更新
            var serverFileInfos = VersionFile.ReadFileInfo(www.text);

            // 清空更新文件列表
            updateVersionFileList.Clear();
            updateVersionFileCount        = 0;
            currentUpdateVersionFileIndex = 0;

            for (int i = 0; i < serverFileInfos.Length; i++)
            {
                var fileInfo = serverFileInfos[i];
                // 本地文件路径
                var localFilePath = fileInfo.DataLocalPath;

                // 文件夹是否存在
                var localFileDir = Path.GetDirectoryName(localFilePath);
                if (!Directory.Exists(localFileDir))
                {
                    Directory.CreateDirectory(localFileDir);
                }

                // 文件服务器地址
                var fileUrl = FormatUrl(serverUrl, GetRouteRoot() + fileInfo.WebPath);

                if (!File.Exists(localFilePath))
                {
                    // 文件不存在,需要更新
                    updateVersionFileList.Add(fileInfo);

                    // 删除本地文件,等待更新
                    updateSize += fileInfo.Size;
                }
                else
                {
                    string serverFileHash = fileInfo.Hash.Trim();
                    string localMd5       = Util.md5file(localFilePath);
                    if (!serverFileHash.Equals(localMd5))
                    {
                        updateVersionFileList.Add(fileInfo);

                        updateSize += fileInfo.Size;

                        // 删除本地文件, 等待更新
                        File.Delete(localFilePath);
                    }
                }
            }
        }

        updateVersionFileCount        = updateVersionFileList.Count;
        currentUpdateVersionFileIndex = 0;

        if (updateVersionFileCount > 0)
        {
            // 需要更新
            hotUI.HOT_CheckUpdateSure(() =>
            {
                DownloadHot();
            }, () => {
                Application.Quit();
            },
                                      this);
        }
    }