简单的自动升级提示AutoUpdater
看过网上“圣殿骑士”和其他人的升级做法,感觉不太适合几十M的小型软件。
之前用的一直都是clickonce,但是3年下来感觉弊端太多,比如安装不能选择文件夹、打包不全、版本等问题,于是决定另辟捷径。
主要实现2个目的:
1、Winform打开会有提示,自动跳转下载网页。
2、网页下载。
工作步骤:
1、App.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Version" value="1.0.0.2"/> <add key="http" value="http://192.168.1.48/autoupdater/version.html"/> <add key="download" value="http://192.168.1.48/autoupdater/index.html"/> </appSettings> </configuration>
2、Login 界面
string version = ConfigurationManager.AppSettings["Version"].ToString();//获取当前版本 string http = ConfigurationManager.AppSettings["http"].ToString();//version版本地址 string download = ConfigurationManager.AppSettings["download"].ToString();//下载网址 WebClient MyWebClient = new WebClient(); private string get_new_version() { MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据 Byte[] pageData = MyWebClient.DownloadData(http); //从指定网站下载数据 string pageHtml = Encoding.UTF8.GetString(pageData); return pageHtml; }
Load事件:
try { if (version.Trim() != get_new_version().Trim()) { MessageBox.Show("本机版本: " + version + ",有新版本:" + get_new_version(),"升级提示"); System.Diagnostics.Process.Start(download); System.Environment.Exit(); } } catch(Exception ex) { MessageBox.Show(ex.Message); }
3、http 新版本网页,没看错,就一句
1.0.0.3
4、下载网页 index.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>软件下载</title> <style type="text/css"> body { margin:30px; width:800px; height:500px; padding:20px; } a:link {color: #FFCC66} /* 未访问的链接 */ a:visited {color: #FFCC66} /* 已访问的链接 */ a:hover {color: #FFCC66} /* 鼠标移动到链接上 */ a:active {color: #FFCC66} /* 选定的链接 */ </style> </head> <body> <div style="font-size:20px;"> <table align="center" cellpadding="5" cellspacing="0" style=" border:1px solid red; border-collapse: collapse;" > <caption><h3>软件说明</h3><div align="right">日期: 2016-11-01</div> </caption> <tr> <th>名称</th> <th>版本</th> <th>下载</th> <th>备注</th> </tr> <tr> <td> .net 框架</td> <td>4.0.30319.1</td> <td><a href="dotnetfx/dotNetFx40_Client_x86_x64.exe" ><button value="下载" type="button">下载</button></a></td> <td>仅限初次安装,必装。</td> </tr> <tr> <td>.net 框架中文语言包</td> <td></td> <td><a href="dotnetfx/dotNetFx40LP_Client_x86_x64zh-Hans.exe" ><button value="下载" type="button">下载</button></a></td> <td>选装</td> </tr> <tr> <td colspan="4"></td> </tr> <tr> <td><strong>系统</strong></td> <td> </td> <td><a href="XXX.exe" ><button value="下载" type="button">下载</button></a></td> <td>必装</td> </tr> </table> </div> </body> </html>
最后,国际惯例,上图:
点击确定后,
说明:
适用于几十M的小软件。
简单的自动升级提示AutoUpdater的更多相关文章
- JavaScript设置简单的自动时间
下面就是一段简单的JavaScript设置简单的自动时间,时间显示在一个输入框input里面. <html> <head> </head> <body> ...
- mysql安装简单教程(自动安装/配置安装)
mysql安装简单教程(自动安装/配置安装) 1.1前言: 由于特殊原因,在最近2-3个月里mysql真是安装了无数遍,每次安装都要上网找教程,每个教程基本都不一样,因此还是自己写下来比较好,毕竟自己 ...
- Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块
文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...
- Windows 下 MySQL 简单定时自动备份、删除过期备份
Windows 下 MySQL 简单定时自动备份.删除过期备份 MySQL Workbench 客户端虽然好用,但并不提供自动备份功能.手工备份,确实繁琐. 新建一个 数据库备份文件存放目录,本例为D ...
- Winform开发常用控件之DataGridView的简单数据绑定——自动绑定
DataGridView控件可谓是Winform开发的重点控件,对于数据的呈现和操作非常方便,DataGridView可谓是既简单又复杂.简单在于其已经集成了很多方法,复杂在于可以使用其实现复杂的数据 ...
- 【SSH】——Hibernate实现简单的自动建表
[与ORM] Object Relational Mapping,对象关系映射,将对象和关系联系了起来.面向对象是从耦合.聚合.封装等的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论 ...
- JSP(4)—Cookie创建及简单案例(自动登录)
Cookie的创建: 创建一个JSP页面,第一次访问时显示没有Cookie,正在创建,再次访问就会自动显示cookie的名称,并设置cookie过期时间 <% //在javaweb规范中使用Co ...
- 简单的 自动生成 二维码 PHP 方法
方法一:<style type="text/css">.eweima{ width:200px; height:200px; margin:auto;}</ ...
- WinForm通用自动更新AutoUpdater项目实战
目前我们做的上位机项目还是以Winform为主,在实际应用过程中,可能还会出现一些细节的修改.对于这种情况,如果上位机带有自动更新功能,我们只需要将更新后的应用程序打包放在指定的路径下,可以让用户自己 ...
随机推荐
- 【算法笔记】B1049 数列的片段和
1049 数列的片段和 (20 分) 给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, ...
- SpringCloud与Docker微服务架构实战笔记
一 微服务架构概述 1. 单体应用架构存在的问题 结合:https://www.cnblogs.com/jialanshun/p/10637454.html一起看,在该篇博客中搜索“单块架构的优缺点 ...
- 20190430-Bootstrapの组件
写在前面的乱七八糟:今天务必要把BT盘完~任重道远~ 目录 1.字体图标 2.下拉菜单 3.按钮组 4.输入框组 5.导航 5.1标签页 5.2胶囊式标签页 5.3路径导航/面包屑导航 6.导航条 7 ...
- WinForm GDI编程:Graphics画布类
命名空间: using System.Drawing;//提供对GDI+基本图形功能的访问 using System.Drawing.Drawing2D;//提供高级的二维和矢量图像功能 using ...
- APP高级抓包
1.fiddler的证书安装问题时密码问题 问题:我手机下载了fiddler证书 从设置里面安装证书 可是需要输入密码 我没有设置过密码 不知道密码是什么 请问有人遇到过这样的问题的?求解决方法 因为 ...
- 在浏览器中输入URL后,执行的全部过程。(一次完整的http请求过程)
整个流程如下: 域名解析 为了将消息从你的PC上传到服务器 上.需要用到1P协议.ARP协议和0SPF协议 发起TCP的3次握手 建立TCP连接后发起http请求 服务器响应htp请求 浏览器解析ht ...
- 3dsmax2016卸载/安装失败/如何彻底卸载清除干净3dsmax2016注册表和文件的方法
3dsmax2016提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dsmax2016失败提示3dsmax2016安装未完成,某些产品无法安装,也有时候想重新 ...
- 安装多个PHP环境会导致phpinfo和php -v中查看到的PHP版本不一致
以前在上一个公司用的是集成环境wamp,PHP版本是5.5.后面换了一个公司,项目用的是PHP版本是5.2.今天想打开以前的项目想优化一下,发现pdo_mysql.dll扩展无法加载,于是想看看是不是 ...
- unity对敏感词库处理的记录
string txt = Resources.Load<TextAsset>("minganci").ToString(); //string txt = " ...
- linux多线程同步
1. 互斥量是线程同步的一种机制,用来保护多线程的共享资源.同一时刻,只允许一个线程对临界区进行访问.互斥量的工作流程:创建一个互斥量,把这个互斥量的加锁调用放在临界区的开始位置,解锁调用放到临界区的 ...