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

服务器上的共享盘里存放生成的可执行文件和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

在界面上添加了一个进度条。

转载于:https://www.cnblogs.com/lsdxiaoben/p/winform_update.html

VB winform自动更新 笔记相关推荐

  1. Winform自动更新组件分享

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

  2. winform自动更新之AutoUpdater.NET

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

  3. C# Winform自动更新

    目录 一.需求 二.更新文件列表生成器 三.软件启动器 1.判断是否需要更新 2.文件下载 3.执行 下载,覆盖,删除任务 4.执行结果 四.搭建更新服务器 1.启动服务器 2.新建项目本体 3.给启 ...

  4. PQ-多表合并自动更新(笔记)

    ----前情摘要---- 需求:每天都会更新相同表头的表到总表上 需求拆解:可通过设置PQ的自动合并,A文件夹中每新增一个表,B文件夹中的总表则自动将A文件夹中新增表的数据拿过来(简称自动刷新) 功能 ...

  5. Winform窗体应用程序的自动更新功能

    本文将演示一种桌面程序自动更新方案,其步骤比较多,但原理非常简单,通用性尚可,对于小型应用来说,直接拿去就可以用了. 原理 服务器端的结构是这样的: 其工作原理如下: Update.asmx 仅提供一 ...

  6. Winform 打包 混淆 自动更新

    路径: 最终的解决方案是,ConfuserEx+Installshield+AutoUpdater.NET,ConfuserEx做代码混淆工作,Installshield可以解决注册表的问题,Auto ...

  7. 使用 advanced installer 为 winform 做自动更新

    advanced installer 是一款打包程序,基于 windows installer 并扩展了一些功能,比如安装统计,自动更新,授权验证等,本文将介绍你如果使用 advanced insta ...

  8. winform发布(应用程序自动更新)、不允许跳过升级

    今天给大家分享一下winform利用visual studio进行发布程序进行自动更新,在日常开发工作中当程序新增功能之后我们需要对程序进行升级,那么怎么让程序自动检测自动升级呢,下边一块学习一下. ...

  9. python tkinter 表格_python学习笔记(Tkinter编程利用Treeview实现表格自动更新)

    博主今天总结这段时间抽空写的一个GUI编程项目 功能是查看本地打印机队列,可选择指定队列重新打印 直接上图 UI设计包括3个区域左上方,右上方和下方列表区域 使用网格grid方法来分配位置 下面是界面 ...

最新文章

  1. 关于进程间通信的学习心得
  2. 不使用fastreport自带的条码组件打印快递单(一款很不错的条码组件下载)
  3. 泛海精灵 Beta计划 (草案)
  4. rosserial_java_ros系统下通过pyserial模块实现串口通讯(Python)
  5. JSP分页技术的实现(利用当前页进行前后加减,并利用href进行当前页面传值,传值当然是那个当前值变量)...
  6. 前端之 BOM 和 DOM
  7. 日语输入法电脑版_日语轻松入门小百科
  8. Java Stream Collectors.groupingBy()实现分组(单字段分组,多字段分组)
  9. 送书 | 推荐一个可能是最全的Venn图一站式绘制工具
  10. 面试必会之HashMap源码分析
  11. VBA实战技巧精粹019:如何快速填充考场号及座号
  12. 学习笔记5-二层冗余链路
  13. 解决 java 程序中 CPU 占用率过高问题
  14. 7-4 疯狂星期四!!!!!
  15. 个人作业2——集大通APP案例分析
  16. virtualbox 创建桥接网络_VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通...
  17. 广义根轨迹 matlab,根轨迹心得体会
  18. 谷歌正式推出 “密钥登录”,逐步取代传统密码登录
  19. smalltalk 上手
  20. Python中的XOR异或符号^运用

热门文章

  1. mysql navicat编码保持一致不乱码
  2. android 照片拼接长图_我才发现,微信里面有一个功能,能将手机照片自动拼成长图...
  3. PostgreSQL数据库、表空间、角色及用户
  4. d3.js选择、插入、删除元素
  5. 5种网络IO模型:阻塞IO、非阻塞IO、异步IO、多路复用IO、信号驱动IO
  6. 详解三种主流分布式事务方案的优劣
  7. git clone remote: HTTP Basic: Access denied
  8. Maven plugins和pluginManagement的区别概述
  9. 最短路径问题:Dijkstra算法详解
  10. 深入理解ThreadLocal