private void FormLoad() { this.btnFinish.Visible = false; string localXmlFile = string.Concat(Application.StartupPath, "\\UpdateList.xml"); string serverXmlFile = string.Empty; try { _UpdaterXmlFiles = new XmlFiles(localXmlFile); } catch (Exception e) { _tracing.Error(e, "the config xml is reading failed."); this.Close(); return; } //获取更新服务器地址 _UpdateUri = _UpdaterXmlFiles.GetNodeValue("//Url"); AppUpdater appupdater = AppUpdater.GetInstance(); appupdater.UpdaterUrl = _UpdateUri + "/UpdateList.xml"; //与服务器连接获取配置文件 try { _TempUpatePath = Environment.GetEnvironmentVariable("Temp") + "\\_" + _UpdaterXmlFiles.FindNode("//Application").Attributes["applicationId"].Value + "_y_x_m_\\"; appupdater.DownAutoUpdateFile(_TempUpatePath); } catch (Exception e) { _tracing.Error(e, "Connect to server failed"); Utils.ShowMessageBox(Messages.ConnectServerFailed, Messages.TitleNotification); this.Close(); return; } //获取文件列表 serverXmlFile = _TempUpatePath + "\\UpdateList.xml"; if (!File.Exists(serverXmlFile)) { return; } Hashtable htUpdateFile = new Hashtable(); availableUpdate = appupdater.CheckForUpdate(serverXmlFile, localXmlFile, out htUpdateFile); if (availableUpdate > 0) { for (int i = 0; i < htUpdateFile.Count; i++) { string[] fileArray = (string[])htUpdateFile[i]; //lvUpdateList.Items.Add(new ListViewItem(fileArray)); lvUpdateList.Items.Add(new ListViewItem(fileArray)); } } }
/// <summary> /// 检查更新文件 /// </summary> /// <param name="serverXmlFile"></param> /// <param name="localXmlFile"></param> /// <param name="updateFileList"></param> /// <returns></returns> public int CheckForUpdate(string serverXmlFile, string localXmlFile, out Hashtable updateFileList) { updateFileList = new Hashtable(); if (!File.Exists(localXmlFile) || !File.Exists(serverXmlFile)) { return(-1); } XmlFiles serverXmlFiles = new XmlFiles(serverXmlFile); XmlFiles localXmlFiles = new XmlFiles(localXmlFile); XmlNodeList newNodeList = serverXmlFiles.GetNodeList("AutoUpdater/Files"); XmlNodeList oldNodeList = localXmlFiles.GetNodeList("AutoUpdater/Files"); var newAppVersionNode = serverXmlFiles.GetElementsByTagName("Version"); string newAppVersion = string.Empty; var oldAppVersionNode = localXmlFiles.GetElementsByTagName("Version"); string oldAppVersion = string.Empty; if (newAppVersionNode != null && newAppVersionNode.Count > 0) { newAppVersion = newAppVersionNode[0].InnerText; } if (oldAppVersionNode != null && oldAppVersionNode.Count > 0) { oldAppVersion = oldAppVersionNode[0].InnerText; } int k = 0; for (int i = 0; i < newNodeList.Count; i++) { string[] fileList = new string[3]; string newFileName = newNodeList.Item(i).Attributes["Name"].Value.Trim(); string newVer = newNodeList.Item(i).Attributes["Ver"].Value.Trim(); List <string> oldFileAl = new List <string>(); for (int j = 0; j < oldNodeList.Count; j++) { string oldFileName = oldNodeList.Item(j).Attributes["Name"].Value.Trim(); string oldVer = oldNodeList.Item(j).Attributes["Ver"].Value.Trim(); oldFileAl.Add(oldFileName); oldFileAl.Add(oldVer); } int pos = oldFileAl.IndexOf(newFileName); if (pos == -1 && newAppVersion.CompareTo(oldAppVersion) > 0) { fileList[0] = newFileName; fileList[1] = newVer; updateFileList.Add(k, fileList); k++; } else if (pos > -1 && newVer.CompareTo(oldFileAl[pos + 1].ToString()) > 0) { fileList[0] = newFileName; fileList[1] = newVer; updateFileList.Add(k, fileList); k++; } } return(k); }
/// <summary> /// 检查更新文件 /// </summary> /// <param name="serverXmlFile"></param> /// <param name="localXmlFile"></param> /// <param name="updateFileList"></param> /// <returns></returns> public int CheckForUpdate() { string localXmlFile = Application.StartupPath + "\\UpdateList.xml"; if (!File.Exists(localXmlFile)) { return(-1); } XmlFiles updaterXmlFiles = new XmlFiles(localXmlFile); string tempUpdatePath = Environment.GetEnvironmentVariable("Temp") + "\\" + "_" + updaterXmlFiles.FindNode("//Application").Attributes["applicationId"].Value + "_" + "y" + "_" + "x" + "_" + "m" + "_" + "\\"; this.UpdaterUrl = updaterXmlFiles.GetNodeValue("//Url") + "/UpdateList.xml"; this.DownAutoUpdateFile(tempUpdatePath); string serverXmlFile = tempUpdatePath + "\\UpdateList.xml"; if (!File.Exists(serverXmlFile)) { return(-1); } XmlFiles serverXmlFiles = new XmlFiles(serverXmlFile); XmlFiles localXmlFiles = new XmlFiles(localXmlFile); XmlNodeList newNodeList = serverXmlFiles.GetNodeList("AutoUpdater/Files"); XmlNodeList oldNodeList = localXmlFiles.GetNodeList("AutoUpdater/Files"); int k = 0; for (int i = 0; i < newNodeList.Count; i++) { string[] fileList = new string[3]; string newFileName = newNodeList.Item(i).Attributes["Name"].Value.Trim(); string newVer = newNodeList.Item(i).Attributes["Ver"].Value.Trim(); List <string> oldFileAl = new List <string>(); for (int j = 0; j < oldNodeList.Count; j++) { string oldFileName = oldNodeList.Item(j).Attributes["Name"].Value.Trim(); string oldVer = oldNodeList.Item(j).Attributes["Ver"].Value.Trim(); oldFileAl.Add(oldFileName); oldFileAl.Add(oldVer); } int pos = oldFileAl.IndexOf(newFileName); if (pos == -1) { fileList[0] = newFileName; fileList[1] = newVer; k++; } else if (pos > -1 && newVer.CompareTo(oldFileAl[pos + 1].ToString()) > 0) { fileList[0] = newFileName; fileList[1] = newVer; k++; } } return(k); }