/// <summary> /// 检测网络状况并对照版本信息是否一致 /// </summary> /// <param name="AsynResult">版本信息是否一致的处理委托</param> /// <param name="OnError">错误处理委托</param> public void BeforeCheck(Action <bool> AsynResult, Action OnError) { CheckTimeout checkTimeout = new CheckTimeout(); checkTimeout.AsynIsNetworkTimeout((success) => { //如果网络良好,开始下载服务器版本xml if (success) { DownloadMgr.Instance.AsynDownLoadHtml(SystemConfig.GetCfgInfoUrlByName("version"), (serverVersion) => { //如果本地存在服务端的版本信息文本,覆盖下载的服务器文本 if (File.Exists(SystemConfig.ServerVersionPath)) { serverVersion = UnityTools.LoadFileText(SystemConfig.ServerVersionPath); } //将文本转换成版本信息类 ServerVersion = GetVersionInXml(serverVersion); bool programVersion = ServerVersion.ProgramVersionCodeInfo.Compare(LocalVersion.ProgramVersionCodeInfo) > 0; bool resourceVersion = ServerVersion.ResourceVersionCodeInfo.Compare(LocalVersion.ResourceVersionCodeInfo) > 0; //执行是否更新的委托 AsynResult(programVersion || resourceVersion); }, OnError); } else { if (OnError != null) { OnError(); } } }); }
public void LoadLocalVersion() { #if !UNITY_WEBPLAYER if (File.Exists(SystemConfig.VersionPath)) { var ver = Utils.LoadFile(SystemConfig.VersionPath); LocalVersion = GetVersionInXML(ver); PlayerLogInfo.LocalSResVersion = LocalVersion.ResourceVersion; var programVer = Resources.Load(SystemConfig.VERSION_URL_KEY) as TextAsset; if (programVer && !String.IsNullOrEmpty(programVer.text)) { LocalVersion.ProgramVersionInfo = GetVersionInXML(programVer.text).ProgramVersionInfo; } LoggerHelper.Info("program version : " + LocalVersion.ProgramVersion + " resource version :" + LocalVersion.ResourceVersion + " first resource version : " + LocalVersion.FirstResourceVersion); } else { #endif LocalVersion = new VersionManagerInfo(); #if !UNITY_WEBPLAYER LoggerHelper.Info("cannot find local version"); //var ver = Resources.Load(SystemConfig.VERSION_URL_KEY) as TextAsset; //if (ver != null) // XMLParser.SaveText(SystemConfig.VersionPath, ver.text); } #endif }
public VersionManagerInfo GetVersionInXML(string xml) { SecurityElement element = XMLParser.LoadXML(xml); if (((element != null) && (element.Children != null)) && (element.Children.Count != 0)) { VersionManagerInfo info = new VersionManagerInfo(); PropertyInfo[] properties = typeof(VersionManagerInfo).GetProperties(); using (IEnumerator enumerator = element.Children.GetEnumerator()) { while (enumerator.MoveNext()) { Func <PropertyInfo, bool> predicate = null; SecurityElement item = (SecurityElement)enumerator.Current; if (predicate == null) { predicate = t => t.Name == item.Tag; } PropertyInfo info2 = properties.FirstOrDefault <PropertyInfo>(predicate); if (info2 != null) { info2.SetValue(info, item.Text, null); } } } return(info); } return(new VersionManagerInfo()); }
private void SaveVersion(VersionManagerInfo version) { var props = typeof(VersionManagerInfo).GetProperties(); var root = new System.Security.SecurityElement("root"); foreach (var item in props) { root.AddChild(new System.Security.SecurityElement(item.Name, item.GetGetMethod().Invoke(version, null) as String)); } XMLParser.SaveText(SystemConfig.VersionPath, root.ToString()); }
public void BeforeCheck(Action <UpdateType> AsynResult, Action OnError) { ServerVersion = new VersionManagerInfo(); var props = typeof(VersionManagerInfo).GetProperties(); try { foreach (var prop in props) { if (prop != null) { var target = SystemConfig.GetCfgInfoUrl(prop.Name); if (!string.IsNullOrEmpty(target)) { var value = Utils.GetValue(target, prop.PropertyType); if (value != null) { prop.SetValue(ServerVersion, value, null); } } } } } catch (Exception ex) { LoggerHelper.Error("Get ServerVersion error: " + ex.Message); } PlayerLogInfo.ServerResVersion = LocalVersion.ResourceVersionInfo.ToString(); Mogo.Util.LoggerHelper.Debug("服务器程序版本: " + ServerVersion.ProgramVersionInfo); Mogo.Util.LoggerHelper.Debug("服务器资源版本: " + ServerVersion.ResourceVersionInfo); Mogo.Util.LoggerHelper.Debug("服务器首包资源版本: " + ServerVersion.FirstResourceVersionInfo); Mogo.Util.LoggerHelper.Debug("服务器完整包资源版本: " + ServerVersion.FullResourceVersionInfo); Mogo.Util.LoggerHelper.Debug("服务器包地址: " + ServerVersion.PackageUrl); Mogo.Util.LoggerHelper.Debug("服务器Apk地址: " + ServerVersion.ApkUrl); Mogo.Util.LoggerHelper.Debug("服务器Small Apk地址: " + ServerVersion.FirstApkUrl); Mogo.Util.LoggerHelper.Debug("服务器md5地址: " + ServerVersion.PackageMd5List); Mogo.Util.LoggerHelper.Debug("导出开关: " + ServerVersion.ExportSwitch); Mogo.Util.LoggerHelper.Debug("平台更新开关: " + ServerVersion.IsPlatformUpdate); var compareFullProgramVersion = ServerVersion.FullResourceVersionInfo.Compare(LocalVersion.FullResourceVersionInfo) > 0; //服务首包资源版本号比本地版本号大 var compareProgramVersion = ServerVersion.ProgramVersionInfo.Compare(LocalVersion.ProgramVersionInfo) > 0; //服务程序版本号比本地版本号大 if (compareFullProgramVersion) { var compareFirstProgramVersion = ServerVersion.FirstResourceVersionInfo.Compare(LocalVersion.FirstResourceVersionInfo) > 0;//服务首包资源版本号比本地版本号大 AsynResult.BeginInvoke((compareProgramVersion || compareFirstProgramVersion) ? UpdateType.FirstRes : UpdateType.None, null, null); } else { var compareResourceVersion = ServerVersion.ResourceVersionInfo.Compare(LocalVersion.ResourceVersionInfo) > 0;//服务器资源版本比本地高 LoggerHelper.Debug("compareResourceVersion: " + compareResourceVersion); AsynResult.BeginInvoke((compareProgramVersion || compareResourceVersion) ? UpdateType.NormalRes : UpdateType.None, null, null); } }
private void SaveVersion(VersionManagerInfo version) { PropertyInfo[] properties = typeof(VersionManagerInfo).GetProperties(); SecurityElement element = new SecurityElement("root"); foreach (PropertyInfo info in properties) { element.AddChild(new SecurityElement(info.Name, info.GetGetMethod().Invoke(version, null) as string)); } XMLParser.SaveText(SystemConfig.VersionPath, element.ToString()); }
public VersionManagerInfo GetVersionInXML(string xml) { Exception exception; try { SecurityElement element = XMLParser.LoadXML(xml); if (((element != null) && (element.Children != null)) && (element.Children.Count != 0)) { VersionManagerInfo info = new VersionManagerInfo(); PropertyInfo[] properties = typeof(VersionManagerInfo).GetProperties(); foreach (SecurityElement element2 in element.Children) { try { foreach (PropertyInfo info2 in properties) { if (((info2 != null) && (info2.Name == element2.Tag)) && !string.IsNullOrEmpty(element2.Text)) { object obj2 = Utils.GetValue(element2.Text, info2.PropertyType); if (obj2 != null) { info2.SetValue(info, obj2, null); } } } } catch (Exception exception1) { exception = exception1; LoggerHelper.Error("GetVersionInXML error: " + element2.Tag + "\n" + exception.Message, true); } } return(info); } return(new VersionManagerInfo()); } catch (Exception exception2) { exception = exception2; LoggerHelper.Except(exception, null); return(new VersionManagerInfo()); } }
public VersionManagerInfo GetVersionInXML(string xml) { try { var children = XMLParser.LoadXML(xml); if (children != null && children.Children != null && children.Children.Count != 0) { var result = new VersionManagerInfo(); var props = typeof(VersionManagerInfo).GetProperties(); foreach (SecurityElement item in children.Children) { try { foreach (var prop in props) { if (prop != null && prop.Name == item.Tag && !string.IsNullOrEmpty(item.Text)) { var value = Utils.GetValue(item.Text, prop.PropertyType); if (value != null) { prop.SetValue(result, value, null); } } } } catch (Exception ex) { LoggerHelper.Error("GetVersionInXML error: " + item.Tag + "\n" + ex.Message); } } return(result); } else { return(new VersionManagerInfo()); } } catch (Exception ex) { LoggerHelper.Except(ex); return(new VersionManagerInfo()); } }
/// <summary> /// 保存版本信息到xml文件中 /// </summary> /// <param name="version"></param> private void SaveVersion(VersionManagerInfo version) { var props = typeof(VersionManagerInfo).GetProperties(); XmlDocument doc = new XmlDocument(); XmlDeclaration newChild = doc.CreateXmlDeclaration("1.0", "UTF-8", null); doc.AppendChild(newChild); XmlElement root = doc.CreateElement("root"); doc.AppendChild(root); foreach (var prop in props) { XmlElement e = doc.CreateElement(prop.Name); string value = prop.GetGetMethod().Invoke(version, null) as string; e.InnerText = value; root.AppendChild(e); } UnityTools.SaveText(SystemConfig.VersionPath, doc.InnerXml); }
public void LoadLocalVersion() { if (File.Exists(SystemConfig.VersionPath)) { string verXml = UnityTools.LoadFileText(SystemConfig.VersionPath); LocalVersion = GetVersionInXml(verXml); TextAsset programVer = Resources.Load("version") as TextAsset; if (programVer && !string.IsNullOrEmpty(programVer.text)) { LocalVersion.ProgramVersionCode = GetVersionInXml(programVer.text).ProgramVersionCode; } } else { LocalVersion = new VersionManagerInfo(); TextAsset ver = Resources.Load("version") as TextAsset; if (ver != null) { UnityTools.SaveText(SystemConfig.VersionPath, ver.text); } } }
public VersionManagerInfo GetVersionInXML(string xml) { var children = XMLParser.LoadXML(xml); if (children != null && children.Children != null && children.Children.Count != 0) { var result = new VersionManagerInfo(); var props = typeof(VersionManagerInfo).GetProperties(); foreach (SecurityElement item in children.Children) { var prop = props.FirstOrDefault(t => t.Name == item.Tag); if (prop != null) { prop.SetValue(result, item.Text, null); } } return(result); } else { return(new VersionManagerInfo()); } }
private VersionManagerInfo GetVersionInXml(string verXml) { XmlDocument doc = XmlResAdapter.GetXmlDocument(verXml); if (doc != null && doc.ChildNodes != null && doc.ChildNodes.Count != 0) { VersionManagerInfo version = new VersionManagerInfo(); var props = typeof(VersionManagerInfo).GetProperties(); foreach (XmlNode item in doc.SelectSingleNode("root").ChildNodes) { var prop = props.FirstOrDefault(t => t.Name == item.Name); if (prop != null) { prop.SetValue(version, item.InnerText, null); } } return(version); } else { return(new VersionManagerInfo()); } }
public void LoadLocalVersion() { if (File.Exists(SystemConfig.VersionPath)) { var ver = Utils.LoadFile(SystemConfig.VersionPath); LocalVersion = GetVersionInXML(ver); var programVer = Resources.Load(SystemConfig.VERSION_URL_KEY) as TextAsset; if (programVer && !String.IsNullOrEmpty(programVer.text)) { LocalVersion.ProgramVersionInfo = GetVersionInXML(programVer.text).ProgramVersionInfo; } LoggerHelper.Info("program version : " + LocalVersion.ProgramVersion + " resource version :" + LocalVersion.ResouceVersion); } else { LocalVersion = new VersionManagerInfo(); LoggerHelper.Info("cannot find local version,export from streaming assets"); var ver = Resources.Load(SystemConfig.VERSION_URL_KEY) as TextAsset; if (ver != null) { XMLParser.SaveText(SystemConfig.VersionPath, ver.text); } } }
public void LoadLocalVersion() { if (File.Exists(SystemConfig.VersionPath)) { var ver = Utils.LoadFile(SystemConfig.VersionPath); LocalVersion = GetVersionInXML(ver); var programVer = Resources.Load(SystemConfig.VERSION_URL_KEY) as TextAsset; if (programVer && !String.IsNullOrEmpty(programVer.text)) LocalVersion.ProgramVersionInfo = GetVersionInXML(programVer.text).ProgramVersionInfo; LoggerHelper.Info("program version : " + LocalVersion.ProgramVersion + " resource version :" + LocalVersion.ResouceVersion); } else { LocalVersion = new VersionManagerInfo(); LoggerHelper.Info("cannot find local version,export from streaming assets"); var ver = Resources.Load(SystemConfig.VERSION_URL_KEY) as TextAsset; if (ver != null) XMLParser.SaveText(SystemConfig.VersionPath, ver.text); } }
public VersionManagerInfo GetVersionInXML(string xml) { var children = XMLParser.LoadXML(xml); if (children != null && children.Children != null && children.Children.Count != 0) { var result = new VersionManagerInfo(); var props = typeof(VersionManagerInfo).GetProperties(); foreach (SecurityElement item in children.Children) { var prop = props.FirstOrDefault(t => t.Name == item.Tag); if (prop != null) prop.SetValue(result, item.Text, null); } return result; } else return new VersionManagerInfo(); }