/// <summary> /// 获得服务端更新版本列表,及最新的版本信息,同时去除比本地版本旧的版本信息 /// 修改升级策略,升级最近的全量包和最新的版本。不进行增量升级 /// 当UpdateFlag为2时,说明是全量升级包,之前的增量版本可以不升级 /// </summary> /// <returns>返回更新列表</returns> protected List <Version> GetServerVersions(ref string msg) { try { msg = string.Empty; _newVersion = null; Version fullVersion = null;//全量升级包 XmlFiles xmlserverfile = new XmlFiles(ServerUpdateFileClone); string serverUrl = xmlserverfile.GetNodeValue("//Updater/Url"); string entryPoint = xmlserverfile.GetNodeValue("//Application/EntryPoint"); XmlNodeList fileNodes = xmlserverfile.GetChildNodeList("//Dir"); if (fileNodes == null || fileNodes.Count < 1) { msg = "没有发现版本信息!"; LogHelper.WriteLog("服务端升级文件中没有包含升级版本信息!"); return(null); } _newVersion = new Version(); List <Version> serverVersions = new List <Version>(); int versionid = -1;//记录最新的版本标记 foreach (XmlNode node in fileNodes) { string sysifuse = node.Attributes["sysifuse"].InnerText.Trim(); if (sysifuse != "1") { continue; } string updateflag = "0"; try { updateflag = node.Attributes["updateflag"].InnerText.Trim(); } catch { updateflag = "0"; } int id = 0; int.TryParse(node.Attributes["value"].InnerText, out id); Version version = new Version(); string versionstr = string.Empty; try { versionstr = node.Attributes["ver"].InnerText; } catch { } version.StrVersion = versionstr; version.Ifuse = sysifuse; version.ValueVersion = id; version.Updateflag = updateflag; //比较版本,获得最新版本 if (versionid < id) { versionid = id; _newVersion.StrVersion = version.StrVersion; _newVersion.ValueVersion = version.ValueVersion; _newVersion.Ifuse = version.Ifuse; _newVersion.Updateflag = version.Updateflag; _newVersion.ServerUrl = serverUrl; _newVersion.EntryPoint = entryPoint; } //比较版本,去除老版本 if (id <= LocalVersion.ValueVersion) { continue; } //当当前版本是全量升级包时,记录最新的全量包 modify 2014.11.7 if (updateflag.Equals("2")) { if (fullVersion == null) { fullVersion = version; } else if (fullVersion.ValueVersion < id) { fullVersion = version; } } serverVersions.Add(version); //当 服务端版本配置文件 中有 必须升级标记则强制升级 if (version.Updateflag == "1") { _forceUpdate = true; } } //serverVersions.Clear(); //修改 保存 全量包的版本信息 modify 2014.11.7 if (fullVersion != null && fullVersion.ValueVersion > LocalVersion.ValueVersion && fullVersion.ValueVersion != versionid) { serverVersions.Clear(); serverVersions.Add(fullVersion); } //修改 保存 最新的版本信息 modify 2014.4.8 //if (versionid > LocalVersion.ValueVersion ) //{ // serverVersions.Add(_newVersion); //} return(serverVersions); } catch (Exception ex) { msg = "获得服务端版本信息时发生错误:" + ex.Message; LogHelper.WriteException(ex); return(null); } }