private void ThrowUpdateError(UpdateErrorType errorType) { _updateErrorType = errorType; Console_WriteLine("Update error: " + errorType.ToString()); }
/// <summary> /// 加载错误回调 /// </summary> /// <param name="type"></param> /// <param name="error"></param> /// <param name="loc"></param> public void OnError(UpdateErrorType type, string error = "", Loc loc = Loc.Persistent) { //CoroutineHelper.ins.QueueOnMainThread(() => //{ // UpdateError(GetErrorStr(type)); //}); }
/// <summary> /// 获取错误描述 /// </summary> /// <param name="type"></param> /// <returns></returns> private string GetErrorStr(UpdateErrorType type) { var msg = string.Empty; switch (type) { case UpdateErrorType.NetWorkErr: msg = Localization.Get("update_wangluoshibai"); break; case UpdateErrorType.NoSpace: msg = Localization.Get("update_kongjianbuzu"); break; case UpdateErrorType.ReadMd5Err: msg = Localization.Get("update_jianchawenjianshibai"); break; case UpdateErrorType.ReadVersionErr: msg = Localization.Get("update_jianchabanbenshibai"); break; case UpdateErrorType.DownloadMd5Err: msg = Localization.Get("update_xiazaiwenjianshibai"); break; case UpdateErrorType.DownloadVersionErr: msg = Localization.Get("update_xiazaibanbenshibai"); break; } return(msg); }
internal UpdateException(UpdateErrorType updateErrorType) { this.UpdateErrorType = updateErrorType; }
private void ResetUpdateError() { _updateErrorType = UpdateErrorType.None; _cancelDownload = false; }
IEnumerator StartUpdate() { //更新下载进度 var loadingPanel = UIModule.Instance.GetOrCreateUI <LoadingPanel>(); loadingPanel.DisPlay(true); var appDataPath = KResourceModule.AppDataPath; //TODO 是否所有资源都下载成功 var total = downloadFiles.Count; for (int i = 0; i < total; i++) { yield return(Game.Instance.StartCoroutine(DownloadItem(downloadFiles[i], appDataPath))); } Log.LogToFile(total > 0 ? "下载更新资源完成" : "本次无需下载新资源"); try { //更新filelist if (filelistBuilder.Length > 0) { var dirName = Path.GetDirectoryName(appDataPath + AppConfig.FilelistPath); if (Directory.Exists(dirName) == false) { Directory.CreateDirectory(dirName); } File.WriteAllText(appDataPath + AppConfig.FilelistPath, filelistBuilder.ToString()); Log.LogToFile("filelist更新完成"); } else { Log.LogToFile("本次filelist无需更新"); } //更新version if (versionBuilder.Length > 0) { if (filelistVersion == null) { Log.LogError("更新version.txt中的filelist.txt version 失败,data is null"); } if (filelistVersion != null) { versionBuilder.AppendLine(filelistVersion.ToFilelistFormat()); } var dirName = Path.GetDirectoryName(appDataPath + AppConfig.VersionTxtName); if (Directory.Exists(dirName) == false) { Directory.CreateDirectory(dirName); } File.WriteAllText(appDataPath + AppConfig.VersionTxtName, versionBuilder.ToString()); Log.LogToFile("version更新完成"); } else { Log.LogToFile("本次version无需更新"); } } catch (Exception e) { Log.LogError($"保存filelist出错,{e.Message}"); ErrorType = UpdateErrorType.DownloadError; } //解压可以放在多线程中 loadingPanel.SetProgress(I18N.Get("download_unpackzip")); bool waitLua = true, waitSetting = true; if (needUnpackLua) { KAsync.Start().Thread(() => UnpackZip(appDataPath + "/lua.zip", appDataPath + "/Lua/", () => waitLua = false)); } else { waitLua = false; } if (needUnpackSetting) { KAsync.Start().Thread(() => UnpackZip(appDataPath + "/setting.zip", appDataPath + "/Setting/", () => waitSetting = false)); } else { waitSetting = false; } loadingPanel = UIModule.Instance.GetExistUI <LoadingPanel>(); loadingPanel?.SetFixProgress(1 - zipPercent, 1.0f); WaitForSeconds wait = new WaitForSeconds(0.05f); while (waitLua || waitSetting) { loadingPanel?.UpdateFixedProgress(); yield return(wait); } DownloadFinish = true; if (needUnpackLua || needUnpackSetting) { Log.LogToFile("解压更新资源完成"); } ClearData(); }
public IEnumerator CheckDownload() { ClearData(); var loadingPanel = UIModule.Instance.GetOrCreateUI <LoadingPanel>(); loadingPanel.SetProgress(I18N.Get("download_check")); loadingPanel.DisPlay(true); string url = AppConfig.resUrl + AppConfig.VersionTxtName; Log.LogToFile($"读取远程version.txt:{url}"); var loader = KWWWLoader.Load(url); while (!loader.IsCompleted) { yield return(null); } if (!loader.IsError) { ParseText(loader.Www.text, remoteVersion); remoteVersion.TryGetValue("filelist.txt", out filelistVersion); } else { ErrorType = UpdateErrorType.RemoteVersionError; yield break; } url = KResourceModule.GetResourceFullPath(AppConfig.VersionTxtName, false); Log.LogToFile($"读取本地version.txt:{url}"); loader = KWWWLoader.Load(url); while (!loader.IsCompleted) { yield return(null); } if (!loader.IsError) { ParseText(loader.Www.text, localVersion); } else { ErrorType = UpdateErrorType.LocalVersionError; yield break; } loader.Dispose(); loader = null; CompareVersion("lua.zip"); CompareVersion("setting.zip"); bool filelistSame = CompareVersion("filelist.txt", false); if (filelistSame == false) { //对比ab列表 string remote_filelist = null; url = AppConfig.resUrl + AppConfig.FilelistPath; loader = KWWWLoader.Load(url); while (!loader.IsCompleted) { yield return(null); } if (!loader.IsError) { remote_filelist = loader.Www.text; } else { ErrorType = UpdateErrorType.FilelistnError; } url = KResourceModule.GetResourceFullPath(AppConfig.FilelistPath, false); loader = KWWWLoader.Load(url); while (!loader.IsCompleted) { yield return(null); } //开始对比两个filelist if (!loader.IsError) { GetDownloadFromFilelist(loader.Www.text, remote_filelist); } else { ErrorType = UpdateErrorType.LocalFilelistnError; } } if (downloadFiles.Count > 0) { var panel = UIModule.Instance.GetOrCreateUI <KUIMsgBox>(); UIMsgBoxInfo info = new UIMsgBoxInfo().GetDefalut(I18N.Get("download_msg", KTool.FormatFileSize(downloadTotalSize)), strCancel: I18N.Get("common_skip")); info.OkCallback = () => { Game.Instance.StartCoroutine(StartUpdate()); }; info.CancelCallback = IngoreDownload; panel.info = info; panel.DisPlay(true); } else { Log.LogToFile($"本次启动无资源更新,跳过下载"); ClearData(); DownloadFinish = true; } }