主页 > 其他  > 

c#自动更新-源码

c#自动更新-源码
软件维护与升级

修复漏洞和缺陷:软件在使用过程中可能会发现各种漏洞和缺陷,自动更新可以及时推送修复程序,增强软件的稳定性和安全性,避免因漏洞被利用而导致数据泄露、系统崩溃等问题。提升性能:通过自动更新,可以对软件的算法、代码逻辑等进行优化,提高软件的运行效率,减少资源占用,让软件运行得更加流畅。添加新功能:随着业务的发展和用户需求的变化,软件需要不断添加新功能来满足用户。自动更新能够方便地将新功能推送给用户,无需用户手动下载和安装新版本,提升用户体验。 /// <summary> /// 检测更新 /// </summary> private void checkUpdate() { strUpdateURL = getConfigValue(strUpdateXmlPath, "Url"); //读取本地xml中配置的更新服务器的URL string strLastUpdateDate = getConfigValue(strUpdateXmlPath, "UpDate"); //读取本地xml中配置的最近一次更新日期 if (strUpdateURL.Substring(strUpdateURL.Length - 1) != "/") //如果配置的xml中URL没带最后一个反斜杠,则加一下,防止出错 strUpdateURL += "/"; strTheUpdateDate = getTheLastUpdateTime(strUpdateURL); //获得更新服务器端的此次更新日期 if (!String.IsNullOrEmpty(strTheUpdateDate) && !String.IsNullOrEmpty(strLastUpdateDate)) //日期都不为空 { if (DateTime.Compare( Convert.ToDateTime(strTheUpdateDate, CultureInfo.InvariantCulture), Convert.ToDateTime(strLastUpdateDate, CultureInfo.InvariantCulture)) > 0) //字符转日期,并比较日期大小 { //本次更新日期 大于 最近一次更新日期,开始更新 try { if (new K3SP.lib.ClassCheckProIsRun().checkProcess(strUpdaterProFileName, strUpdaterProPath)) { classMsg.messageInfoBox("更新程序" + strUpdaterProFileName + "已打开!"); } else { Process.Start(strUpdaterProPath); } } catch (Win32Exception ex) { classMsg.messageInfoBox(ex.Message); //主程序未更新成功或者被误删掉,再更新一遍 } Application.Exit(); //退出主程序 } } } /// <summary> /// 读取本地update.xml /// </summary> /// <param name="path">update.xml文件的路径</param> /// <param name="appKey">"key"的值</param> /// <returns>返回"value"的值</returns> internal static string getConfigValue(string path, string appKey) { XmlDocument xDoc = new XmlDocument(); XmlNode xNode; XmlElement xElem = null; try { xDoc.Load(path); xNode = xDoc.SelectSingleNode("//appSettings"); xElem = (XmlElement)xNode.SelectSingleNode("//add[@key=\"" + appKey + "\"]"); } catch (XmlException ex) { classMsg.messageInfoBox(ex.Message); } if (xElem != null) return xElem.GetAttribute("value"); else return ""; } /// <summary> /// 获取服务器端软件的更新日期 /// </summary> /// <param name="Dir">服务器地址</param> /// <returns>返回日期</returns> private static string getTheLastUpdateTime(string Dir) { string LastUpdateTime = ""; string AutoUpdaterFileName = Dir + strUpdateListXmlPath; try { WebClient wc = new WebClient(); Stream sm = wc.OpenRead(AutoUpdaterFileName); XmlTextReader xml = new XmlTextReader(sm); while (xml.Read()) { if (xml.Name == "UpdateTime") { LastUpdateTime = xml.GetAttribute("Date"); break; } } xml.Close(); sm.Close(); } catch (WebException ex) { classMsg.messageInfoBox(ex.Message); } return LastUpdateTime; } }  变量信息 /// <summary> /// 全局变量,用于存储更新服务器的URL /// </summary> private static string strUpdateURL; /// <summary> /// 本地update.xml的路径 /// </summary> private static string strUpdateXmlPath = Application.StartupPath + @"\update\conf\update.xml"; /// <summary> /// 服务端updatelist.xml的URL地址 /// </summary> private static string strUpdateListXmlPath = "UpdateServer/UpdateList.xml"; /// <summary> /// 全局变量,用于存储服务端updatelist.xml的更新日期 /// </summary> private static string strTheUpdateDate; /// <summary> /// 更新程序的文件名 /// </summary> private static string strUpdaterProFileName = "AutoUpdater"; /// <summary> /// 更新程序的路径 /// </summary> private static string strUpdaterProPath = Application.StartupPath + @"\update\AutoUpdater.exe"; 程序启动 private void FormLogin_Load(object sender, EventArgs e) { checkUpdate(); //检测更新 } /// <summary> /// 进入程序 /// </summary> private void button_Login_Click(object sender, EventArgs e) { FormMain form_Main = new FormMain(); form_Main.Show(); this.Hide(); }

标签:

c#自动更新-源码由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“c#自动更新-源码