简单的自动升级提示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为主,在实际应用过程中,可能还会出现一些细节的修改.对于这种情况,如果上位机带有自动更新功能,我们只需要将更新后的应用程序打包放在指定的路径下,可以让用户自己 ...
随机推荐
- 小蒟蒻的垃圾emacs配置
(global-set-key [f9] 'compile-file) (global-set-key [f10] 'gud-gdb) (global-set-key (kbd "C-s&q ...
- SQL数据库Replace的用法
关于数据库Replace的用法:Replace("字符串","要被替代的字符串","替代后的字符串")尝试过写法效果如下->修改前 效 ...
- Q678 有效的括号字符串
给定一个只包含三种字符的字符串:(,) 和 *,写一个函数来检验这个字符串是否为有效字符串.有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 ). 任何右括号 ) 必须有相应的左括号 ( ...
- json操作相关记录
json是javascript衍生的数据表示法,现在许多数据的处理都使用json. 平时用到的与json结构相似的有很多,如mongodb数据库,python的字典等.核心思想就是键值对. json的 ...
- js 面向对象 定时器 046
获取DOM对象补充 document.getElementsByTagName('div'); //获取的多个DOM对象 这种对象叫伪数组 如果想遍历此对象 通过for(var i=0; i < ...
- 《The One!团队》第一次作业:团队亮相
项目 内容 作业所属课程 http://www.cnblogs.com/nwnu-daizh/ 作业要求 https://www.cnblogs.com/nwnu-daizh/p/10687492.h ...
- 1-----Docker实例-安装Nginx
Docker 安装 Nginx 方法一.docker pull nginx(推荐) 查找 Docker Hub 上的 nginx 镜像 runoob@runoob:~/nginx$ docker se ...
- golang笔记
----------- golang打包和部署到centos7. 参考:https://blog.csdn.net/qq_33230584/article/details/81536572
- 《The Python Standard Library》——http模块阅读笔记3
http.cookies — HTTP state management http.cookies模块定义了一系列类来抽象cookies这个概念,一个HTTP状态管理机制.该模块支持string-on ...
- SpringCloud---分布式配置中心---Spring Cloud Config
1.概述 1.1 Spring Cloud Config是Spring Cloud的一个全新项目: 作用:为分布式系统中的基础设施.微服务应用提供集中化的外部配置支持: 分为服务端.客户端2个 ...