SimpleUpdater.NET
本类库+工具用于快速实现一个简单的自动更新程序,旨在快速简单地为现有的.Net应用程序添加上比较简单的自动更新功能。
本页包含以下内容
概述[导航]
本类库+工具用于快速实现一个简单的自动更新程序,可以简单地完成小型应用程序的快速更新。
整个工具分成两部分,一部分是供用户使用的类库,一部分是用于生成更新包的工具。
基于 .Net 3.5 开发,原则上最好安装有此版的 .netFramework。特殊情况下,可以仅安装 .Net Framework 2.0SP1,发布的时候附带上 System.Core.dll 即可正常运行。
整个自动升级工作的流程[导航]
更新包生成工具[导航]
作为一个简单的升级需求,不需要很复杂的设置。
需要填写如下信息:
- 应用程序名
- 当前的版本(也就是更新后的版本)
- 发布地址可选(如果填写了,在更新提示框上会有个链接可以链接到这个网址)
- 新程序目录(选择最新版本程序的发布目录,在版本 1.5.0.0 之后你可以直接从资源管理器中拖放目标文件夹到目录的文本框来快速选择了!)
- 升级包路径:选择一个路径用来保存升级包(*.zip),同时自动更新信息 *.xml 也会保存在这个目录下
- 更新前执行:在下载完成、即将安装更新前会执行这里选择的程序。这里有点BUG一旦选择了就不能取消,所以请注意下;
- 更新后执行:在安装完成后、即将退出前执行的操作。需要注意的BUG同上。通常选择需要运行的主程序。
- 执行时间限制:用于限制6中选择的程序的执行时间,超过设置的时间后进程将会被强行结束。
- 更新说明:用于提示更新的时候显示的文本消息内容。
- 创建:按照填写的信息生成升级包
- 打开:打开一个已有的升级信息文件,用于下次更新版本时直接修改信息即可,其它的不需要变化(在1.5.0.0之后,你可以通过直接拖放以前保存的升级XML文件到窗体上直接打开了!)。
选项页面
- 更新时删除原始文件:默认情况下仅覆盖新文件。但是你可以设置更新之前删除应用程序目录所有文件,或删除指定文件。
- 支持更新的最低版本:指定支持更新的最低版本,低于此版本的软件将会提示手动更新
- 升级文件包密码:可以设置一个密码,用来加密生成的压缩包
发布更新包[导航]
更新包应该发布到服务器上。生成的文件有两个,一个是压缩包(*.zip),一个是信息文件(*.xml),两个应该一起发布。这里假定通过网址 http://ls.com/update.xml 能访问到生成的 update.xml 文件。
为应用程序添加自动更新功能[导航]
注意:自动升级程序取当前程序文件的版本,是以当前运行的程序集版本作为识别依据的。
首先在VS中为当前的主程序项目添加引用,引用“客户端”中的“SimpleUpdater.exe”。
在VS中,点开“解决方案管理器”中相应项目的“属性”节点,打开 AssemblyInfo.cs 文件,在最下面添加上一行自动更新声明:
- //--添加这行标记表示支持自动更新, 后面的网址为自动更新的根目录.
- [assembly: FSLib.App.SimpleUpdater.Updateable("http://ls.com/update.xml")]
这步是必须的,否则请求检查更新时会抛出异常;代码中的网址即上面提到的能访问到xml文件的网址。
如果您希望更加简单的使用而不用去加这样的属性,或者您想程序运行的时候自定义,您可以通过下列方式的任何一种方式取代上面的属性声明:
- 使用 FSLib.App.SimpleUpdater.Updater.CheckUpdateSimple("升级网址") 的重载方法。这个重载方法允许你传入一个升级包的地址;
- 在检查前手动设置 FSLib.App.SimpleUpdater.Updater.UpdateUrl 属性。这是一个静态属性,也就是说,您并不需要创建 FSLib.App.SimpleUpdater.Updater.UpdateUrl 的对象实例就可以修改它。
无论使用哪种方式,请确保在检查更新前,地址已经设置。
到这里,准备工作即告完成,为代码添加上检查更新的操作即可。
- static class Program
- {
- /// <summary>
- /// 应用程序的主入口点。
- /// </summary>
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- var updater = FSLib.App.SimpleUpdater.Updater.Instance;
- //当检查发生错误时,这个事件会触发
- updater.Error += new EventHandler(updater_Error);
- //没有找到更新的事件
- updater.NoUpdatesFound += new EventHandler(updater_NoUpdatesFound);
- //找到更新的事件.但在此实例中,找到更新会自动进行处理,所以这里并不需要操作
- //updater.UpdatesFound += new EventHandler(updater_UpdatesFound);
- //开始检查更新-这是最简单的模式.请现在 assemblyInfo.cs 中配置更新地址,参见对应的文件.
- FSLib.App.SimpleUpdater.Updater.CheckUpdateSimple();
- /*
- * 如果您希望更加简单的使用而不用去加这样的属性,或者您想程序运行的时候自定义,您可以通过下列方式的任何一种方式取代上面的属性声明:
- * 使用Updater.CheckUpdateSimple 的重载方法。这个重载方法允许你传入一个升级包的地址;
- * 在检查前手动设置 FSLib.App.SimpleUpdater.Updater.UpdateUrl 属性。这是一个静态属性,也就是说,您并不需要创建 FSLib.App.SimpleUpdater.Updater.UpdateUrl 的对象实例就可以修改它。
- */
- FSLib.App.SimpleUpdater.Updater.CheckUpdateSimple("升级网址");
- Application.Run(new Form1());
- }
- static void updater_UpdatesFound(object sender, EventArgs e)
- {
- }
- static void updater_NoUpdatesFound(object sender, EventArgs e)
- {
- System.Windows.Forms.MessageBox.Show("没有找到更新");
- }
- static void updater_Error(object sender, EventArgs e)
- {
- var updater = sender as FSLib.App.SimpleUpdater.Updater;
- System.Windows.Forms.MessageBox.Show(updater.Exception.ToString());
- }
- }
结束[导航]
详细的代码请参考附带的示例项目。
检查到更新时窗口如下:
这之后的更新操作都是全自动执行的,不需要在主程序中有任何其它操作。
https://www.fishlee.net/soft/simple_autoupdater/usage.html
SimpleUpdater.NET的更多相关文章
- 使用SimpleUpdater实现现有程序升级功能
项目:https://github.com/iccfish/FSLib.App.SimpleUpdater C/S程式一般需要部署在多台机器上,如果程式有变动,需要一台一台重新安装,相当麻烦,如果我们 ...
- 分享一个客户端程序(winform)自动升级程序,思路+说明+源码
做winform的程序,不管用没用过自动更新,至少都想过自动更新是怎么实现的. 我这里共享一个自动更新的一套版本,给还没下手开始写的人一些帮助,也希望有大神来到,给指点优化意见. 本初我是通过sock ...
- 使用MSBUILD 构建时出错 error MSB3086: Task could not find "sgen.exe" using the SdkToolsPath的解决方法
如果项目有添加有WB引用,比如引用其它网站的WEB服务等,那么VS在编译时会自动生成个 [项目名称].Serializers.dll的文件,就是把引用服务中的相关对象信息生成硬编码的程序集,以提高效率 ...
- Spark Mllib逻辑回归算法分析
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3816289.html 本文以spark 1.0.0版本MLlib算法为准进行分析 一.代码结构 逻辑回归 ...
- Winfrom强大的自动更新程序
推荐一:.Net 小型软件自动更新库(SimpAutoUpdater) http://www.fishlee.net/soft/simple_autoupdater/usage.html 下载地址:h ...
- SparkMLlib分类算法之支持向量机
SparkMLlib分类算法之支持向量机 (一),概念 支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最 ...
- Spark MLib:梯度下降算法实现
声明:本文参考< 大数据:Spark mlib(三) GradientDescent梯度下降算法之Spark实现> 1. 什么是梯度下降? 梯度下降法(英语:Gradient descen ...
- MLlib之LR算法源码学习
/** * :: DeveloperApi :: * GeneralizedLinearModel (GLM) represents a model trained using * Generaliz ...
- GeneralizedLinearAlgorithm in Spark MLLib
GeneralizedLinearAlgorithm SparkMllib涉及到的算法 Classification Linear Support Vector Machines (SVMs) Log ...
随机推荐
- 洛谷 P1525 【关押罪犯】种类并查集
题解 P1525 [关押罪犯]:种类并查集 前言: 在数据结构并查集中,种类并查集属于扩展域并查集一类. 比较典型的题目就是:食物链(比本题难一些,有三个种类存在) 首先讲一下本题的贪心,这个是必须要 ...
- CSS marging相关
一.margin可以为负值 在盒模型中,内容区的width/height.padding.border都不能为负值,但是margin例外,它可以为负值. margin负值的本质,在于它改变了元素在普通 ...
- CSS absolute与relative不得不说的故事
写在开篇: absolute说:“relative,我这辈子都不想看见你!” 为什么呢?它们明明那么相亲相爱,形影不离,这之中到底发生了什么不为人知的故事,竟然让absolute如此讨厌relativ ...
- 使用/dev/uinput的简要介绍(含demo程序)【转】
转自:https://blog.csdn.net/zhongkunjia/article/details/75142699 uinput机制有2个很大的优点: 1) 不用自己写驱动(比如弄个红外遥控器 ...
- Ansible Tower系列 四(使用tower执行一个命令)【转】
在主机清单页面中,选择一个主机清单,进入后,选择hosts里的主机 Paste_Image.png 点击 RUN COMMANDS MODULE 选择 commandARGUMENTS 填写 ifco ...
- MVC Form验证 登陆和退出Cookies的设定和消除
红色部分为重点 1.webconfig配置 <system.web>节点下添加 <authentication mode="Forms"> <for ...
- phantomhs获取网页的高度
function heheda() { window.setTimeout(function () { console.log("---------------------Capture O ...
- 一个简单的Java程序
一个.NET技术还是很菜的水平的猿人现在要去学习Java不知道是坏是好,无从得知啊! 不过在网上看了好多Java方面的简单例子,感觉Java还是蛮不错的么!不管以后怎么样啦,先开始自己的Java菜鸟之 ...
- 查询orcale运行的SQL语句记录
select c.* from V$SQL c where c.MODULE='ukhis.exe' order by last_active_time desc
- 2011TG初赛
一.单项选择题(共20题,每题1.5分,共计30分,每题有且仅有一个正确选项.) 1. 在二进制下,1011001+( )=1100110. A.1011 B.1101 C.1010 D.1111 B ...