static bool CheckNeedUpdate() { string localXmlFile = Application.StartupPath + "\\UpdateList.xml"; string serverXmlFile = string.Empty; string updateUrl = string.Empty; string tempUpdatePath = string.Empty; XmlFiles updaterXmlFiles = null; try { //从本地读取更新配置文件信息 updaterXmlFiles = new XmlFiles(localXmlFile); } catch { return(false); } //获取服务器地址 updateUrl = updaterXmlFiles.GetNodeValue("//Url"); AppUpdater appUpdater = new AppUpdater(); appUpdater.UpdaterUrl = updateUrl + "UpdateList.xml"; //与服务器连接,下载更新配置文件 try { tempUpdatePath = Application.StartupPath + "\\update\\"; //tempUpdatePath = Environment.GetEnvironmentVariable("Temp") + "\\" + "_" + updaterXmlFiles.FindNode("//Application").Attributes["applicationId"].Value + "_" + "y" + "_" + "x" + "_" + "m" + "_" + "\\"; if (!appUpdater.DownAutoUpdateFile(tempUpdatePath)) { return(false); } } catch { return(false); } //获取更新文件列表 Hashtable htUpdateFile = new Hashtable(); serverXmlFile = tempUpdatePath + "UpdateList.xml"; if (!File.Exists(serverXmlFile)) { return(false); } int availableUpdate = 0; availableUpdate = appUpdater.CheckForUpdate(serverXmlFile, localXmlFile, out htUpdateFile); if (availableUpdate > 0) { return(true); } else { return(false); } }
public static bool IsNeedUpdate() { bool result = false; try { string FileName = Application.StartupPath + "\\UpdateList.xml"; XmlFiles xdoc = new XmlFiles(FileName); string version = xdoc.GetNodeValue("AutoUpdate/Application/Version"); result = systemMg.IsNeedUpdate(Models.SqlHelper.Session._SystemId, version); } catch (Exception ex) { clsPublic.ShowMessage(ex.Message); result = false; } return(result); }
/// <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(); ArrayList oldFileAl = new ArrayList(); 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); }
private void UpdateForm_Load(object sender, EventArgs e) { string localXmlFile = string.Empty; //商业版与免费版区分 if (Settings.Default.AuthorityUrl.Equals(@"\Template\Authority.XML")) { localXmlFile = Utils.installPath + "\\UpdateList_Ent.xml"; } else { localXmlFile = Utils.installPath + "\\UpdateList.xml"; } string serverXmlFile = string.Empty; try { //从本地读取更新配置文件信息 updaterXmlFiles = new XmlFiles(localXmlFile); } catch { MessageBox.Show("配置文件出错!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); return; } //获取服务器地址 AppUpdater appUpdater = new AppUpdater(); try { updateUrl = updaterXmlFiles.GetNodeValue("//Url"); //商业版与免费版区分 if (Settings.Default.AuthorityUrl.Equals(@"\Template\Authority.XML")) { appUpdater.UpdaterUrl = updateUrl + "/UpdateList_Ent.xml"; } else { appUpdater.UpdaterUrl = updateUrl + "/UpdateList.xml"; } } catch (System.Exception ex) { MessageBox.Show("获取服务器地址失败,失败原因为:" + ex.Message); this.Close(); return; } //与服务器连接,下载更新配置文件 try { string strTime = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff"); //tempUpdatePath = Environment.GetEnvironmentVariable("Temp") + "\\" + "_" + updaterXmlFiles.FindNode("//Application").Attributes["applicationId"].Value + "_" + strTime + "\\"; tempUpdatePath = String.Format("{0}\\TempUpdate\\_{1}_{2}\\", Directory.GetCurrentDirectory(), updaterXmlFiles.FindNode("//Application").Attributes["applicationId"].Value, strTime); appUpdater.DownAutoUpdateFile(tempUpdatePath); } catch { MessageBox.Show("与服务器连接失败,操作超时!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); return; } //获取更新文件列表 Hashtable htUpdateFile = new Hashtable(); try { //商业版与免费版区分 if (Settings.Default.AuthorityUrl.Equals(@"\Template\Authority.XML")) { serverXmlFile = tempUpdatePath + "\\UpdateList_Ent.xml"; } else { serverXmlFile = tempUpdatePath + "\\UpdateList.xml"; } if (!File.Exists(serverXmlFile)) { return; } 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)); } } else { System.IO.Directory.Delete(tempUpdatePath, true); } } catch (System.Exception ex) { MessageBox.Show("更新文件列表更新失败,失败原因为:" + ex.Message); } }
private void DownUpdateFile() { bool bRet = false; Invoke((MethodInvoker) delegate { try { this.Cursor = Cursors.WaitCursor; mainAppExe = updaterXmlFiles.GetNodeValue("//EntryPoint"); WebClient wcClient = new WebClient(); for (int i = 0; i < this.lvUpdateList.Items.Count; i++) { int readFileLength = 0; try { string UpdateFile = lvUpdateList.Items[i].Text.Trim(); string updateFileUrl = updateUrl + lvUpdateList.Items[i].Text.Trim(); long fileLength = 0; WebRequest webReq = WebRequest.Create(updateFileUrl); WebResponse webRes = webReq.GetResponse(); fileLength = webRes.ContentLength; lbState.Text = "正在下载更新文件,请稍后..."; pbDownFile.Value = 0; pbDownFile.Maximum = (int)fileLength; try { Stream srm = webRes.GetResponseStream(); StreamReader srmReader = new StreamReader(srm); byte[] bufferbyte = new byte[fileLength]; int allByte = (int)bufferbyte.Length; int startByte = 0; while (fileLength > 0) { Application.DoEvents(); int downByte = srm.Read(bufferbyte, startByte, allByte); if (downByte == 0) { break; } ; startByte += downByte; allByte -= downByte; pbDownFile.Value += downByte; readFileLength += downByte; float part = (float)startByte / 1024; float total = (float)bufferbyte.Length / 1024; int percent = Convert.ToInt32((part / total) * 100); this.lvUpdateList.Items[i].SubItems[2].Text = percent.ToString() + "%"; } if (readFileLength != fileLength) { throw new Exception("文件读取不完整"); } string tempPath = tempUpdatePath + UpdateFile.Replace("/", "\\"); CreateDirtory(tempPath); FileStream fs = new FileStream(tempPath, FileMode.OpenOrCreate, FileAccess.Write); fs.Write(bufferbyte, 0, bufferbyte.Length); srm.Close(); srmReader.Close(); fs.Close(); } catch (WebException ex) { MessageBox.Show("更新文件下载失败!" + ex.Message.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); bRet = true; break; } } catch (System.Exception ex) { MessageBox.Show("更新文件下载失败!" + ex.Message.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); bRet = true; break; } } this.Cursor = Cursors.Default; if (bRet) { System.IO.Directory.Delete(tempUpdatePath, true); lbState.Text = "更新文件下载失败,无法安装,请重新下载文件..."; } else { btnFinish.Visible = true; btnNext.Visible = false; lbState.Text = "下载文件完成,请点击安装更新文件..."; } } catch (System.Exception ex) { MessageBox.Show("下载更新失败,失败原因为:" + ex.Message); } }); }
private void FrmUpdate_Load(object sender, System.EventArgs e) { string currentDirectory =Environment.CurrentDirectory ; if(!AppConst.GetConfig()) { MessageBox.Show("配置文件读取失败!请确定配置文件放在"+currentDirectory+"该目录下"); return; } panel2.Visible = false; btnFinish.Visible = false; string localXmlFile = currentDirectory + "\\UpdateList.xml"; string serverXmlFile = string.Empty; try { //从本地读取更新配置文件信息 updaterXmlFiles = new XmlFiles(localXmlFile ); } catch { MessageBox.Show("配置文件出错!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); this.Close(); return; } //获取服务器地址 updateUrl = updaterXmlFiles.GetNodeValue("//Url"); AppUpdater appUpdater = new AppUpdater(); appUpdater.UpdaterUrl = updateUrl + "/UpdateList.xml" + url_postfix; //与服务器连接,下载更新配置文件 try { //临时更新文件目录 tempUpdatePath = currentDirectory+"\\"+AppConst.TempFilePath; appUpdater.DownAutoUpdateFile(tempUpdatePath); } catch { MessageBox.Show("与服务器连接失败,操作超时!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); this.Close(); return; } //获取更新文件列表 htUpdateFile = new Hashtable(); serverXmlFile = tempUpdatePath + "\\UpdateList.xml"; if(!File.Exists(serverXmlFile)) { return; } 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)); } } }
public bool IsUpdate() { string updateUrl = string.Empty; string tempUpdatePath = string.Empty; XmlFiles updaterXmlFiles = null; int availableUpdate = 0; string localXmlFile = AppDomain.CurrentDomain.BaseDirectory + "UpdateList.xml"; string serverXmlFile = string.Empty; if (!File.Exists(localXmlFile)) { MessageBox.Show("配置文件不存在!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } try { //从本地读取更新配置文件信息 updaterXmlFiles = new XmlFiles(localXmlFile); } catch { MessageBox.Show("配置文件出错!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); //this.Close(); return(false); } //获取服务器地址 updateUrl = updaterXmlFiles.GetNodeValue("//Url"); AppUpdater appUpdater = new AppUpdater(); appUpdater.UpdaterUrl = updateUrl + "/UpdateList.xml"; //与服务器连接,下载更新配置文件 try { tempUpdatePath = Environment.GetEnvironmentVariable("Temp") + "\\" + "_" + updaterXmlFiles.FindNode("//Application").Attributes["applicationId"].Value + "_" + "y" + "_" + "x" + "_" + "m" + "_" + "\\"; appUpdater.DownAutoUpdateFile(tempUpdatePath); } catch { MessageBox.Show("与更新服务器连接失败,操作超时!", "程序更新提示", MessageBoxButton.OK, MessageBoxImage.Information); //this.Close(); return(false); } //获取更新文件列表 Hashtable htUpdateFile = new Hashtable(); serverXmlFile = tempUpdatePath + "\\UpdateList.xml"; if (!File.Exists(serverXmlFile)) { return(false); } try { availableUpdate = appUpdater.CheckForUpdate(serverXmlFile, localXmlFile, out htUpdateFile); } catch { MessageBox.Show("服务器配置文件格式错误", "程序更新提示", MessageBoxButton.OK, MessageBoxImage.Information); return(false); } if (availableUpdate > 0) { return(true); } else { return(false); } }