看网上各种自动更新方法,最后自己找了个比较简单的,在此做个笔记。

服务器上的共享盘里存放生成的可执行文件和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自动更新 笔记的更多相关文章

  1. winform自动更新程序实现

    一.问题背景 本地程序在实际项目使用过程中,因为可以操作电脑本地的一些信息,并且对于串口.OPC.并口等数据可以方便的进行收发,虽然现在软件行业看着动不动都是互联网啊啥的,大有Web服务就是高大上的感 ...

  2. Winform自动更新组件分享

    作者:圣殿骑士 出处:http://www.cnblogs.com/KnightsWarrior/ 关于作者:专注于微软平台项目架构.管理和企业解决方案.自认在面向对象及面向服务领域有一定的造诣,熟悉 ...

  3. winform自动更新之AutoUpdater.NET

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhaobw831/article/details/82226291使用AutoUpdater.NET ...

  4. C# winform自动更新 (附 demo下载)

    随着需求的变化,如果Server每次更新出新的内容,Client都要重新安装的话. 太过于复杂化.  所以自动更新是很有必要的. 一..NET自带的更新方式    以服务器端为主  (自动更新,微软爸 ...

  5. winform自动更新并实现文件的批量异步下载

    public partial class update : Form    {        private WebClient client;        int downfilenum = 0; ...

  6. vb脚本自动更新版本信息

    使用的串口显示软件为secureCrt,支持脚本功能,今天写了一个简单的软件升级脚本(VB脚本). 如下: # $language = "VBScript" # $interfac ...

  7. WinForm应用程序中实现自动更新功能

    WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因 ...

  8. WinForm通用自动更新AutoUpdater项目实战

    目前我们做的上位机项目还是以Winform为主,在实际应用过程中,可能还会出现一些细节的修改.对于这种情况,如果上位机带有自动更新功能,我们只需要将更新后的应用程序打包放在指定的路径下,可以让用户自己 ...

  9. Winform(C#.NET)自动更新组件的使用及部分功能实现

    声明:核心功能的实现是由园子里圣殿骑士大哥写的,本人是基于他核心代码,按照自己需求进行修改的.   而AutoUpdaterService.xml文件生成工具是基于评论#215楼 ptangbao的代 ...

随机推荐

  1. codereview介绍

    1. 定义: Code review is systematic examination (often known as peer review) of computer source code. I ...

  2. Oracle建表实例

    建表一般来说是个挺简单的事情,但是Oracle的建表语句有很多可选的参数,有些我们可能平时不太用,用的时候又不知道怎么用,这里就写一个较完整的建表的例子: CREATE TABLE banping  ...

  3. Linux上在同一端口上共享SSH与HTTPS的工具:SSLH

    添加EPEL源 CentOS 6 # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rp ...

  4. myeclipse使用太卡问题

    最近写html文件,修改内容时,就会反应好长时间,太卡. 原因:没修改一次,它就会自动校验. 解决方法:window——preferences——Editors——Text Editors ——spe ...

  5. [转]ODBC连接ORACLE数据库的设置

    本文转自:http://www.cppblog.com/edog/articles/1420.html 首先安装Oracle,以Oracle 817为例,作为ODBC开发者的客户端,才能使用Oracl ...

  6. We~ˇsay~~ˇ

    拂弹每一个音符 与心相印 行走每一段风景 和路缠绵 花开的声音 只能用心倾听 无论曾经如何艰难 我依然在最初的起点 默念歌唱 等你 携手

  7. nargin函数的用法

    nargin是用来判断输入变量个数的函数,这样就可以针对不同的情况执行不同的功能.通常可以用他来设定一些默认值,如下面的函数. 函数文件examp.m:function fout=charray(a, ...

  8. C语言中 指针与结构体

    就像数组一样,指向结构体的指针存储了结构体第一个元素的内存地址.与数组指针一样,结构体的指针必须声明和结构体类型保持一致,或者声明为void类型. 1 2 3 4 5 6 7 8 9 10 11 12 ...

  9. 使用SQL循环打印'*'菱形

    菱形每一行都是由n个' ' + n 个'**' + 1个'*' 组成的 例如高度为9的菱形(共print 9次),*最多的一次print为第五次第五次就是0个' '  + 4个'**' + 1个'*' ...

  10. CMD/AMD

    AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMDCMD 规范在这里:https://github.com/seajs/seajs/issues ...