VB winform自动更新 笔记
看网上各种自动更新方法,最后自己找了个比较简单的,在此做个笔记。
服务器上的共享盘里存放生成的可执行文件和XML格式的配置:
<?xml version="1.0" encoding="utf-8"?>
<AutoUpdate>
<version>PackingBarcodeValidation2.0</version>
<downloadURL>//ip/PackingBarcodeValidation2.0.exe</downloadURL>
</AutoUpdate>
直接上代码:
'update revision
Dim updateXMLURL As String = "//ip/revision.xml"
Dim version As String = Nothing
Dim downloadURL As String = Nothing
If System.IO.File.Exists(updateXMLURL) Then
Dim xmldoc As New XmlDocument()
xmldoc.Load(updateXMLURL)
'获取节点列表
Dim topM As XmlNodeList = xmldoc.SelectNodes("//AutoUpdate")
For Each element As XmlElement In topM
version = element.GetElementsByTagName("version")(0).InnerText
downloadURL = element.GetElementsByTagName("downloadURL")(0).InnerText
Next
If version <> Me.Text And System.IO.File.Exists(downloadURL) Then
Me.DownloadFile(downloadURL, "./" & version & ".exe", Me.ProgressBar1)
MsgBox("系统升级成功,请使用新的系统" & version & ".exe")
Me.Close()
End If
End If
下载方法代码:
''' <summary>
''' c#,.net 下载文件
''' </summary>
''' <param name="URL">下载文件地址</param>
'''
''' <param name="Filename">下载后的存放地址</param>
''' <param name="Prog">用于显示的进度条</param>
'''
Public Sub DownloadFile(ByVal URL As String, ByVal filename As String, ByVal prog As System.Windows.Forms.ProgressBar)
Dim percent As Single = 0
Try
URL = "http:" & URL
Dim Myrq As System.Net.HttpWebRequest = DirectCast(System.Net.HttpWebRequest.Create(URL), System.Net.HttpWebRequest)
Dim myrp As System.Net.HttpWebResponse = DirectCast(Myrq.GetResponse(), System.Net.HttpWebResponse)
Dim totalBytes As Long = myrp.ContentLength
If prog IsNot Nothing Then
prog.Maximum = CInt(totalBytes)
End If
Dim st As System.IO.Stream = myrp.GetResponseStream()
Dim so As System.IO.Stream = New System.IO.FileStream(filename, System.IO.FileMode.Create)
Dim totalDownloadedByte As Long = 0
Dim by As Byte() = New Byte(1023) {}
Dim osize As Integer = st.Read(by, 0, CInt(by.Length))
While osize > 0
totalDownloadedByte = osize + totalDownloadedByte
System.Windows.Forms.Application.DoEvents()
so.Write(by, 0, osize)
If prog IsNot Nothing Then
prog.Value = CInt(totalDownloadedByte)
End If
osize = st.Read(by, 0, CInt(by.Length))
percent = CSng(totalDownloadedByte) / CSng(totalBytes) * 100
'label1.Text = "当前补丁下载进度" & percent.ToString() & "%"
'必须加注这句代码,否则label1将因为循环执行太快而来不及显示信息
System.Windows.Forms.Application.DoEvents()
End While
so.Close()
st.Close()
Catch generatedExceptionName As System.Exception
Throw
End Try
End Sub
在界面上添加了一个进度条。
VB winform自动更新 笔记的更多相关文章
- winform自动更新程序实现
一.问题背景 本地程序在实际项目使用过程中,因为可以操作电脑本地的一些信息,并且对于串口.OPC.并口等数据可以方便的进行收发,虽然现在软件行业看着动不动都是互联网啊啥的,大有Web服务就是高大上的感 ...
- Winform自动更新组件分享
作者:圣殿骑士 出处:http://www.cnblogs.com/KnightsWarrior/ 关于作者:专注于微软平台项目架构.管理和企业解决方案.自认在面向对象及面向服务领域有一定的造诣,熟悉 ...
- winform自动更新之AutoUpdater.NET
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhaobw831/article/details/82226291使用AutoUpdater.NET ...
- C# winform自动更新 (附 demo下载)
随着需求的变化,如果Server每次更新出新的内容,Client都要重新安装的话. 太过于复杂化. 所以自动更新是很有必要的. 一..NET自带的更新方式 以服务器端为主 (自动更新,微软爸 ...
- winform自动更新并实现文件的批量异步下载
public partial class update : Form { private WebClient client; int downfilenum = 0; ...
- vb脚本自动更新版本信息
使用的串口显示软件为secureCrt,支持脚本功能,今天写了一个简单的软件升级脚本(VB脚本). 如下: # $language = "VBScript" # $interfac ...
- WinForm应用程序中实现自动更新功能
WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因 ...
- WinForm通用自动更新AutoUpdater项目实战
目前我们做的上位机项目还是以Winform为主,在实际应用过程中,可能还会出现一些细节的修改.对于这种情况,如果上位机带有自动更新功能,我们只需要将更新后的应用程序打包放在指定的路径下,可以让用户自己 ...
- Winform(C#.NET)自动更新组件的使用及部分功能实现
声明:核心功能的实现是由园子里圣殿骑士大哥写的,本人是基于他核心代码,按照自己需求进行修改的. 而AutoUpdaterService.xml文件生成工具是基于评论#215楼 ptangbao的代 ...
随机推荐
- Centos中安装vim
Centos, 默认没有安装VIM, 所以要当然要安装了, 直接yum install vim是不行的, 首先: yum install vim* 会看到vim-enhanced这个包,没错, 我们要 ...
- android图片处理方法(不断收集中)
//压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArr ...
- jQuery Masonry构建pinterest网站布局注意要点(转)
在愚人码头的博客上看到有关于如何构建pinterest网站的文章,其实就是“图片瀑布流显示”,我试着在本地做了一个,没有什么问题,但是放到公司的网站上就问题多多.一是定位不准确,二是图片显示不完整.但 ...
- springMVC整合xStream
一. 简单介绍: xStream能够轻易的将Java对象转换成xml.JSON.本篇博客将使用springMVC整合利用xStream转换xml. 关于xStream使用的博文:http://blog ...
- 详解C中volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据.如果没有volatile关键字,则编译器可能优化读取和存储 ...
- combo参数配置_手册
combotree : 设置为多选框: $('#menu-combotree').combotree({multiple:true}).combotree('loadData', menuListJs ...
- IT软件开发 书籍汇总
数据库: MYSQL -> Effective MySQL 之 SQL 语句最优化 [美] Ronald Bradford 著 李雪锋 译 清华大学出版社 开发书籍 PHP核心技术与最佳实 ...
- 心跳之旅—💗—iOS用手机摄像头检测心率(PPG)
[前情提要] 光阴似箭,日月如梭,最近几年,支持心率检测的设备愈发常见了,大家都在各种测空气测雪碧的,如火如荼,于是我也来凑一凑热闹.[0]这段时间,我完成了一个基于iOS的心率检测Demo,只要稳定 ...
- Maven学习小结(一 初探)
1.下载Maven,解压并设置到环境变量中 https://maven.apache.org/download.cgi 需要先设置“JAVA_HOME”,否则报错: 之后查看Maven版本成功: 1. ...
- SQL Server 中添加用户
在对象资源管理器中点击安全性,选择登录名-新建登录名