Example #1
0
    /// <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();
                }
            }
        });
    }
Example #2
0
    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
    }
Example #3
0
    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());
    }
Example #4
0
    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());
    }
Example #5
0
    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);
        }
    }
Example #6
0
    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());
    }
Example #7
0
    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());
        }
    }
Example #8
0
 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());
     }
 }
Example #9
0
    /// <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);
    }
Example #10
0
 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);
         }
     }
 }
Example #11
0
    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());
        }
    }
Example #12
0
    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());
        }
    }
Example #13
0
 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);
         }
     }
 }
Example #14
0
 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);
     }
 }
Example #15
0
 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());
 }
Example #16
0
 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();
 }