百度网盘源码加文件:http://pan.baidu.com/s/1qYe2Vgg

功能:通过网站更新用户的软件,需要联网,也可以通过本地网站更新局域网用户软件。

根本实现:1.一个网站(本地就可以)然后运行update.exe->通过update.xml获取网址,然后查看当前版本号和网站的server.xml最高版本号对比。然后判断是否更新。

2.更新就下载zip文件,解压替换并删除。

3.更新update.xml文档版本信息,跟新结束。

代码:解析xml文件:

     /// <summary>
        /// 载入并解析XML
        /// </summary>
        private void LoadXml()
        {
            XmlDocument document = new XmlDocument();
            try
            {
                document.Load(updateurl + "Server.xml");
                XmlNode node = document.SelectSingleNode("//updates");

                //获取最新版本号
                version = Convert.ToInt32(node.Attributes["version"].Value);

                //所有需要升级文件大小,文件列表,sql列表
                XmlNodeList updateList = document.SelectNodes("//updates//update");
                foreach (XmlNode n in updateList)
                {
                    long tempVersion = Convert.ToInt32(n.Attributes["version"].Value);
                    long tempSize = Convert.ToInt64(n.Attributes["size"].Value);
                    if (tempVersion > localversion && tempVersion <= version)
                    {
                        allsize += tempSize;
                        versions.Add(tempVersion.ToString());
                        //获取升级文件列表
                        XmlNodeList fileList = n.SelectNodes("//update[@version='" + tempVersion + "']//files//file");
                        foreach (XmlNode n1 in fileList)
                        {
                            files.Add(n1.InnerText);
                        }
                        //获取执行的SQL语句列表
                        XmlNodeList sqlList = n.SelectNodes("//update[@version='" + tempVersion + "']//sqls//sql");
                        foreach (XmlNode n2 in sqlList)
                        {
                            sqls.Add(n2.InnerText);
                        }
                        //升级的提示信息
                        XmlNodeList msgList = n.SelectNodes("//update[@version='" + tempVersion + "']//msg");
                        foreach (XmlNode n3 in msgList)
                        {
                            msg += string.Format(CultureInfo.InvariantCulture, "版本【{0}】 {1}", new object[] { tempVersion, n3.InnerText.Replace("\r\n\t\t", "") }) + "\r\n";
                        }
                    }

                }

            }
            catch (Exception e)
            {
                //Console.WriteLine(e.Message);
                MessageBox.Show("连接升级服务器失败,请重试!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

解析xml网站

升级
   public void DownloadProgressChanged(object wcsender, DownloadProgressChangedEventArgs ex)
        {
            PBNow.Text = "正在下载:" + filename + "[ " + ConvertSize(ex.BytesReceived) + "/" + ConvertSize(ex.TotalBytesToReceive) + " ]";
            filesize = ex.TotalBytesToReceive;
            ftemp = ((float)(downedsize + ex.BytesReceived)) / ((float)allsize);
            PbAll.Value = Convert.ToInt32((float)(this.ftemp * 100f));
            PBNow.Value = ex.ProgressPercentage;
        }

进度条

跟新效果:

更新前:

更新后:

一些代码图解:本地update.xml

网站server.xml

新手:代码粗糙,只是一个简单的demo,只能简单参考一下,有问题及时联系我。源码和全部文件都在网盘里面。

.exe简单的更新软件demo的更多相关文章

  1. <转>exe & dll自我更新

    exe & dll自我更新 分类: c/c++ 2008-10-16 22:07 756人阅读 评论(1) 收藏 举报 exedlldelayapi游戏 exe与dll的自我更新     在改 ...

  2. Unity编程笔录--ulua+PureMVC框架简单热更新使用

    ulua+PureMVC框架简单热更新使用 前言: 1:作者官网论坛 首先介绍的是这个框架是一位大牛  骏擎[CP]  jarjin   写的,据说原本是"非常多人不知道怎么使用Ulua,所 ...

  3. 树莓派3B更新软件

    因为软件是要不断更新的,所以半个月或者一个月要升级一下软件 升级软件非常简单 在终端或者SSH里输入 sudo apt-get update && apt-get upgrade -y ...

  4. 2nd 简单四则运算更新

    简单四则运算更新 功能:由随机数决定出题为10个以内的数字,并确定是否出现括号(仅限一对),顺序输出表达式,并用栈的方式进行计算,判断正误.其他功能有待进一步实现. 头文件 #include < ...

  5. Homebrew 安装及更新软件

    brew brew install 安装 brew uninstall 卸载 brew update 更新 homebrew brew upgrade 安装已更新软件 brew cleanup 清理 ...

  6. 赫然:Windows Live Writer 批量博客更新软件使用教程

    http://www.wocaoseo.com/thread-144-1-1.html 推广人员需要使用多个博客,一个一个登陆更新是很麻烦的事情,网上的桌面批量更新博客软件也不少,今天在此推荐大家使用 ...

  7. 一个简单的webservice的demo(下)winform异步调用webservice

    绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单 ...

  8. 一个简单的Webservice的demo(中)_前端页面调用

    首先新建项目,这里有两种调用方式,为了能方便理解,新建页面WebserviceTest如下图: 先引用写好的服务,这里用上次写好的服务.见上次写的一个简单的Webservice的demo,简单模拟服务 ...

  9. ubuntu更新软件源

    更新源方法: 1. 打开终端.单击主菜单中的“应用程序 - 附件 - 终端”. 2. 修改更新服务器列表.请在终端中执行下面的两条命令: sudo cp /etc/apt/sources.list / ...

随机推荐

  1. MySQL · 引擎特性 · InnoDB IO子系统

    前言 InnoDB做为一款成熟的跨平台数据库引擎,其实现了一套高效易用的IO接口,包括同步异步IO,IO合并等.本文简单介绍一下其内部实现,主要的代码集中在os0file.cc这个文件中.本文的分析默 ...

  2. ViewPager基础入门

    效果图: 实现了三个view间的相互滑动 第一个VIEW向第二个VIEW滑动                       第二个VIEW向第三个VIEW滑动                       ...

  3. c#基础语句——循环语句(for、while、foreach)

    循环类型:for.while.foreach 循环四要素:初始条件-->循环条件-->循环体-->状态改变 1.for 格式: for(初始条件:循环条件:状态改变) {循环体(br ...

  4. 云服务器spark集群搭建

    ---恢复内容开始--- 1:去官网下载spark http://spark.apache.org 2:解压,然后在自己的机器上编译conf中的两个文件 mv slaves.template slav ...

  5. 【2017-03-09】SQL Server 数据库基础、四种约束

    一.数据库和内存的区别 数据库:一些存储在硬盘上的数据文件 内存:计算机临时存储的一些数据 二.常用数据库 .Net - SQL Server PHP - MySql Java - Oreacl 三. ...

  6. 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富

    1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 498  Sol ...

  7. CLR查找和加载程序集的方式(二) 流程图

    在前一篇文章<CLR查找和加载程序集的方式(一)>中详细介绍了CLR查找和加载程序的方式,分别介绍了配置与代码的实现方式. 本篇通过一个具体的流程图来帮助大家更加直观明了深入的掌握CLR查 ...

  8. ubuntu auto mount自动挂载硬盘

    Ubuntu 挂载的文章在网上也不少,推荐一个: http://wenku.baidu.com/link?url=N2c7axijp_KYaYkt2CrZFNZPzzS8xBHLQSTUcI2F85I ...

  9. struts2(四) ognl表达式、值栈、actionContext之间的关系

    今天来说说ognl表达式在struts2中的运用. --wh 一.什么是Ognl? 通过百度百科查询到的解释,其中详细的说明了OGNL的作用. 下面我们就对OGNL这5个作用进行讲解 1.存取对象的任 ...

  10. JS调用APP

    /* 500ms内,本机有应用程序能解析对应的协议并打开程序,调用该应用: 如果本机没有应用程序能解析该协议或者500ms内没有打开这个程序, 则执行setTimeout里面的function,跳转到 ...