访问最新源代码及更新历史:http://git.oschina.net/xcong/CheckUpdate.Net

DownLoad

更新历史

version 1.2

  • [新增]添加UpdateFileClient.exe.config文件,修改UpdateFileClient.exe依赖的.Net Framwork 2.0版本与主程序兼容问题
  • [修改]修改更新程序,下载文件不存在时提示文件出错。

version 1.1

  • 【修改】修改窗体文件丢失
  • 【新增】新增服务端配置项添加安装包位置和版本
  • 【新增】新增UpdateCommon中VersionHelper下载安装包方法GetNewVersionToDownloadSetup。如果需要下载,弹窗提醒,并调用浏览器下载,同时返回True。

介绍

CheckUpdate.Net是.Net C/S下一个检查更新程序。现有的检查更新方式多种多样,更新程序也大不相同。有个比较出名的OSAU(参考了他的界面),但是有10个链接限制。微软也有比较方便的ClickOnce。自己也尝试了其他的,发现没有合适的就决定自己写一个。

考虑到复用,在.Net Framework2.0下开发。主要就是利用WebClient下载服务器网站目录下的文件,安全性暂没有考虑,比较适用于小型项目。

UpdateFileClient.exe/UpdateFile.xml/UpdateFileCommon.dll/UpdateFileClient.exe.config[可选] 为客户端需要用到的文件

UpdateFileServer.exe/UpdateServer.xml/UpdateFileCommon.dll 为服务端需要用到的文件

注意事项:

1.UpdateFileClient.exe依赖于.Net Framwork 2.0,如果主程序的.Net Framwork版本高于2.0,需要添加UpdateFileClient.exe.config文件(默认是兼容4.0)。

如果主程序的.Net Framwork版本为2.0,请删除UpdateFileClient.exe.config文件。

.Net Framwork 4.0是新的CLR,无法兼容旧版CLR。该方案主要兼容在Windows Xp下单独安装了.Net Framework 4.0 版本。

Windows Vista/Win7 已经分别安装.Net Framework 2.0与3.5,具有CLR 2.0特性,需要删除App.config。

主要功能

  • 支持单个或多个文件更新

    读取服务端XML配置文件,获取需要修改或新增的文件,然后进行下载,下载完成之后,更新本地版本。
  • 支持更新更新程序本身

    通过配置本地的XML文件,放置更新程序的目录。主程序启动时,进行检查,处理。
  • 服务端支持程序更改配置文件,无需手动更改XML

使用方式

  • 配置服务端,需要能够通过正常访问XML和文件。一般采用新建一个web站点,发布到IIS的方式。

    将UpdateFileServer.exe/UpdateServer.xml/UpdateFileCommon.dll 拷贝到服务端,通过UpdateFileServer.exe配置XML。



  • 将主程序运行需要的文件通过XML配置起来

    将Update.xml、UpdateFileClient.exe、UpdateFileCommon.dll添加到启动程序相同目录,主程序需要引用UpdateFileCommon.dll。

    将启动程序需要更新的文件通过XML进行配置,放在File节点下,初始版本为1。

    配置服务端XML所在路径,当前版本、版本对应的值、临时文件夹、更新程序名称可以采用默认值。

  • 实现更新程序的更新

    需要在主程序中添加一行代码,进行检查临时文件夹是否包含更新程序,如果有,进行剪切操作。

using UpdateFileCommon;
//发现新的更新程序,进行剪切到根目录
VersionHelper.CutNewUpdateEXE();
  • 按需添加检查更新代码

    可以在程序启动时或者点击按钮进行检查更新操作。

    检查更新是弹窗进行提醒,需要传两个参数,一个更新描述,一个是否强制更新。对应XML节点是服务端XML的ReleaseNote和IsMustUpdate。

    NextShowEvent 事件是点击按钮下次提醒需要执行的操作。

    Winform

    //默认的LoginView为登陆窗体
ApplicationContext context = new ApplicationContext(new LoginView());
//发现设定的目录存在新的更新程序,进行剪切到根目录
VersionHelper.CutNewUpdateEXE(); //检查是否需要下载安装包,不需要下载返回False
if (!VersionHelper.GetNewVersionToDownloadSetup())
{
//检查版本更新
if (VersionHelper.IsRequiredUpdate())
{
string xmlPath = System.AppDomain.CurrentDomain.BaseDirectory + "UpdateFile.xml";
if (File.Exists(xmlPath))
{
//加载XML路径
XmlDocument doc = new XmlDocument();
doc.Load(VersionHelper.GetLoaclServerConfigURL(xmlPath));
//获取值
var releaseNote = VersionHelper.GetServiceReleaseNote(doc);
var isMustUpdate = VersionHelper.GetServiceIsMustUpdate(doc);
PromptingForm form = new PromptingForm(releaseNote, isMustUpdate);
//赋值委托,点击下次提醒的按钮执行的操作
form.NextShowEvent += delegate
{
//执行xxx
};
context = new ApplicationContext(form);
}
}
} //do something
Application.Run(context);

WPF

WPF中需要特殊处理,在WPF项目中添加Program.cs文件,添加Main方法,项目右键属性,设置Program为启动对象。

[STAThread]
static void Main()
{
//发现设定的目录存在新的更新程序,进行剪切到根目录
VersionHelper.CutNewUpdateEXE(); //检查是否需要下载安装包,不需要下载返回False
if (!VersionHelper.GetNewVersionToDownloadSetup())
{
//检查版本更新
if (VersionHelper.IsRequiredUpdate())
{
string xmlPath = System.AppDomain.CurrentDomain.BaseDirectory + "UpdateFile.xml";
if (File.Exists(xmlPath))
{
//加载XML路径
XmlDocument doc = new XmlDocument();
doc.Load(VersionHelper.GetLoaclServerConfigURL(xmlPath));
//获取值
var releaseNote = VersionHelper.GetServiceReleaseNote(doc);
var isMustUpdate = VersionHelper.GetServiceIsMustUpdate(doc);
PromptingForm form = new PromptingForm(releaseNote, isMustUpdate);
//赋值委托,点击下次提醒的按钮执行的操作
form.NextShowEvent += delegate
{
//执行xxx
};
//这里启动PromptingForm窗体
form.ShowDialog();
}
}
}
//不需要更新时,默认启动登陆窗体
else
{
LoginView view = new LoginView();
view.ShowDialog();
}
}

联系我们

CheckUpdate.Net交流群 137867517 [点击加群]

【开源】检查更新程序 CheckUpdate.Net 的实现的更多相关文章

  1. 开源小程序CMS网站, JeeWx-App-CMS 1.1 版本升级发布,持续更新!

    JeeWx-App-CMS开源小程序CMS网站,持续更新ing~ JeeWx-App-CMS 是jeewx开发的小程序网站开源项目,基于小程序wepy语言,具备cms网站的基本功能,能够打造简单易用的 ...

  2. [开源]JSON文本格式化工具(简码万能助手开源扩展程序)

    现在的网站大多都是使用json进行API式前后端数据交互, 有时抓包得到的是一串没格式化的JSON文本, 不太方便分析, 所以我自行写了个开源扩展程序, 可以方便地格式化JSON文本.   当然,你也 ...

  3. wordpress开源小程序

    wordpress多端开源小程序正式发布了,目前支持微信/QQ/百度/今日头条. 目前我们的开源小程序,已经建立了微信QQ交流群,需要的可以加下,微信添加hackdex(备注开源拉你入群),QQ群:7 ...

  4. 推荐一个非常COOL的开源相册程序!

    不知道大家有没想过有一个完全属于自己的网络相册?现在网上的相册程序已可以说多不胜数,那么到底要使用哪个会比较好呢? 之前我也在为此事烦恼过,在网上找了很多个程序试了,但都没达到我的要求,后来发终于功夫 ...

  5. TP5框架,开源小程序商城源码,前端+后台完整版

    CRMEB微信公众号商城小程序商城数据同步,带积分.优惠券.秒杀.砍价.分销等功能,更是一套方便二次开发的框架 开源地址:https://github.crmeb.net/u/crmeb 商城演示后台 ...

  6. 开源小程序CMS网站, JeeWx-App-CMS 1.0 首版本发布

    JeeWx-App-CMS 是jeewx开发的小程序网站开源项目,基于小程序wepy语言,具备cms网站的基本功能,能够打造简单易用的小程序公司官网.项目结构简单,逻辑清晰,代码规范,非常适合作为小程 ...

  7. 各开源 bbs 程序比较

    主要是集中在 php 开源轻巧的程序. 搜索到一个逼乎的一个帖子:https://www.zhihu.com/question/20655704 ,顺藤摸瓜 下. carbon forum 第一个测试 ...

  8. 【Web技术】281- 滴滴开源小程序框架 Mpx2.0

    滴滴Mpx框架负责人@hiyuki,滴滴出行网约车webapp乘客团队的负责人,也是滴滴开源的小程序框架Mpx的负责人和核心作者 Mpx是一款致力于提高小程序开发体验和效率的增强型小程序框架,目前在滴 ...

  9. Xdebug开源PHP程序调试器

    Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况. 本文为大家讲解的是在linux下xdebug的安装和配置方法,感兴趣的同学参考下 ...

随机推荐

  1. Discuz! X2验证码的产生及验证

    http://www.mcqyy.com/wenku/jiaocheng/jzjc/cjc/106729.html http://blog.sina.com.cn/s/blog_4acbd39c010 ...

  2. MyEclipse10配置PyDev进行Python开发

    MyEclipse10配置PyDev进行Python开发 1.下载PyDev 2.7.1  链接如下:    http://jaist.dl.sourceforge.net/project/pydev ...

  3. php应该在何时调用mysql_close() ,可能和中断请求有关

    关于php应该在何时调用mysql_close()以及pconnect方式和传统方式有何种区别收藏 以前我一直认为,当php的页面执行结束时,会自动释放掉一切.相信很多人都跟我想的一样.但事实证明并不 ...

  4. python epoll实现异步socket

    一.同步和异步: 在程序执行中,同步运行意味着等待调用的函数.线程.子进程等的返回结果后继续处理:异步指不等待当下的返回结果,直接运行主进程下面的程序,等到有返回结果时,通知主进程处理.有点高效. 二 ...

  5. C# 判断远程文件是否存在

    /// <summary> /// 判断远程文件是否存在 /// </summary> /// <param name="url">url地址& ...

  6. 深入理解javascript原型和闭包 摘要

    一切(引用类型)都是对象,对象是属性的集合 对象都是通过函数创建的 隐式原型 Instanceof的判断队则是:沿着A的__proto__这条线来找,同时沿着B的prototype这条线来找,如果两条 ...

  7. python-social-auth with Django: ImportError: No module named 'social_django' 解决方法

    To use Django with python social auth, you need to install the Django app as well. You can specify t ...

  8. WebConfig配置详解大全

    <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual S ...

  9. UESTC 485 Game(康托展开,bfs打表)

    Game Time Limit: 4000/2000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status t ...

  10. 全面解析Oracle等待事件的分类、发现及优化

    一.等待事件由来 大家可能有些奇怪,为什么说等待事件,先谈到了指标体系.其实,正是因为指标体系的发展,才导致等待事件的引入.总结一下,Oracle的指标体系,大致经历了下面三个阶段: · 以命中率为主 ...