Winform小工具的自动更新功能实现

Winform 自动升级程序 作为winform 程序员都有一个C/S端程序绕不过的问题。那就是如何升级程序? 程序升级两种1.启动时强制更新 2.自动、手动获取更新,并确认是否升级。 今天咱们介绍,自动或者手动更新功能。 阅读详情


前言

自制的Winform小工具,不到1MB,局域网内多人使用。
在功能更新/修复bug时,如果挨个发新包,显得过于愚蠢。
所以制作了自动更新功能。
说白了就是自动执行【下载最新版,替换,打开】这套流程。

注意:大概率是取巧方式,只是凑巧能用


一、思路

  • 1、程序发布时,
    • 1.1、包名和版本号就已经确定了(写在代码里-_-||)。
    • 1.2、上传到更新服务器中,我这里用的是FTP,然后用TXT记录包名和对应的最新版本号。
  • 2、程序运行,
    • 2.1、获取当前程序进程id,用于后续更新时KILL。
    • 2.2、去FTP下载TXT,比对版本。
  • 3、点击更新,
    • 3.1、下载最新的EXE到TEMP,Path.GetTempFileName()
    • 3.2、运行cmd,执行:关闭自己,移动并覆盖文件,重新打开。
  • 完成更新。

之所以这么做,主要的一点,小工具的发布模式是单个文件。
常理来说,应该是另外有个update.exe,需要更新时去启动它。
我这里相当于用cmd.exe 代替了update.exe的工作。

二、功能实现

&是批处理命令的符号,表示前面一个命令不管是否执行成功都执行后面
&&,表示必须前一个命令执行成功才会执行后面的命令
||,表示必须前一个命令执行失败才会执行后面的命令
|,表示前一个命令输出结果作为后一个命令的参数使用
/C,执行字符串指定的命令,然后终止

string[] cmds = new string[]
{
    $"taskkill /pid {processId} /f&&",// /f 指定强制结束进程。成功继续
    $"timeout /t 2&",//等个2秒
    $"tasklist | findstr \"{processId}\"||",//找不到才继续
    $"move /y {sourcesFileName} {destFileName}&&",// /y 不提示覆盖。成功继续
    $"start {destFileName}&",
    $"timeout /t 3",//等个3秒,然后结束
};

Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = @$"/C {string.Join("", cmds)}";
p.StartInfo.UseShellExecute = false;//是否使用操作系统shell启动
p.StartInfo.CreateNoWindow = false;//显示程序窗口
p.Start();//启动程序
WinForm自动更新程序 WinForm自动更新程序WinForm自动更新程序思路代码结尾 WinForm自动更新程序 刚刚开始搞Winfrom开发的小伙伴经常遇到这样一个问题:程序在公司内部广泛使用,特别是在自动化的工厂内部,在需求频繁变更的时候每次更新都是一件心态爆炸的事情,这时候一个自动更新的程序就非常有必要。 在查找了网上众多资料后,发现不是收费的,就是代码没法使用,最终决定还是自己写一个。根据网上资料学习和自身业务,完成下述代码。 思路 在用户打开程序的时候,无法直接更新本体程序,那就需要新建一个小的更新程序来进行更新的 阅读详情

相关推荐

Winform程序自动更新

Winform程序自动更新我也是第一次做,网上找了自动更新的源码,后来又根据在网上看到的一些方法,自己试了很久,最终还是有写错误,所以花了钱让别人帮忙调试成功的,下面是我自己捣腾出来的,方便大家借鉴,如果有什么错误的地方欢迎指正. 1、由于我是通过服务器的IIS发布自动更新的,更新之前先手动把程序复制到IIS服务器的目录下面,做一些更改,客户端才能正常自动更新。所以第一步是不熟IIS服务器(本人

zhaozhimao的博客 5840

C# Winform自动更新

在Unity里面,有XLua,ILRuntime 这样的热更新框架,Unity和Winform不同之处是,Unity生成的项目,哪怕是Windows平台,根本不必关闭程序才能进行更新,但是Winform项目必须关闭程序才进行下载替换,在Winform平台目前还没看到什么好的开源框架,于是我自己动手写了一个效果如下:客户端自动更新方法大概如下面几条,最少需要做三个软件1.更新文件列表生成器2.软件启动器3.软件本体(只能由软件启动器 打开)软件启动入口可以加密码,防止用户随意打开我们知道,在原有基础上更新文件

熊思雨的博客 1万+

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

目前我们做的上位机项目还是以Winform为主,在实际应用过程中,可能还会出现一些细节的修改。对于这种情况,如果上位机带有自动更新功能,我们只需要将更新后的应用程序打包放在指定的路径下,可以让用户自己来进行更新使用,会大大增加项目的便捷性。 01.自动更新整体思路 今天给大家介绍一下如何基于C#实现WinForm自动更新的一种方式,这种方式长期应用在项目中,提供了很多帮助,也节约了大量的时间成本,并且也使用在CMSPro软件中,整体流程如下图所示: ...

xiketangAndy的博客 999

C# winForm 软件自动升级实现方式

对于C#winform开发者来说,软件自动升级功能是一个很重要的功能。作者根据自身经验,和大家分享一下软件升级的实现方式。 注意:本文主要介绍通过WebService升级软件。作者的另一篇通过FTP方式升级软件的介绍可在作者的另一篇文中查看https://jingyan.baidu.com/article/4dc4084842d8fec8d946f1ca.html。 第一步:首先建立一个Win...

shenjqiang的专栏 2万+

实现Winform应用的版本升级自动更新功能

在快速发展的软件行业,为了提供更好的用户体验和增加新功能,软件更新变得不可或缺。Winform应用程序,作为微软NET框架的一部分,通过自动更新功能,可以简化部署新版本的流程。这种方法不仅可以减少IT人员的工作负担,还可以确保最终用户能够及时获得产品改进和安全修复。

weixin_35705784的博客 994

C# WinForm应用的自动更新实现指南

在当今快速发展的软件行业,自动更新机制是保持应用稳定运行和快速迭代的关键技术之一。自动更新流程通常包括更新检测、版本比较、文件下载、更新文件安装以及应用重启和热更新策略等多个环节。首先,自动更新的流程需要一个高效的更新检测机制,确保能够及时准确地发现和获取可用的新版本信息。接下来,通过版本比较逻辑来判断新版本是否需要下载安装,以及是否满足兼容性要求。当确定更新时,文件下载与断点续传技术保证了更新文件的完整性和高效传输。安装更新文件时,需要确保更新过程的安全性和完整性验证。

weixin_42513209的博客 1411

Winform程序自动更新.rar

一、软件开发环境以及开发工具: 框架:.NET Framework 4.0 工具:Visual Studio 2017 插件:DevExpress 18.1.7 环境:IIS 7 二、实现步骤 (1)在项目中创建一个名为WinformAutoUpdate.APP的Winform窗体应用工程,并将默认的Form1.cs窗体文件重命名为MainFrm.cs作为主程序窗体 创建主程序窗体 (2)在项目中再创建一个名为AutoUpdateTask的Winform应用程序工程,并将默认的Form1.cs窗体文件重命名为AutoUpdateTaskFrm.cs作为更新程序窗体 创建更新程序窗体 (3)在更新程序窗体中放入图上所示的相关控件; 进度条控件用于显示更新进度,放入一个Button按钮控件用于用户根据提示进行操作! 实现思路: 1、将更新程序放入磁盘的目录下面,并将其放在已经发布了的IIS中 当用户在运行主程序窗体并点击左上角的更新按钮时,弹出程序更新窗体,并先自动从IIS中拉取updateList.xml文件,然后与本地程序作对比,检测是否需要升级软件; 如果有新版本发布,则点击“立即更新”按钮,程序将从IIS中拉取新发布的ZIP软件包,并自动解压到主程序目录中,覆盖主程序目录中的相关文件(这里值得注意的是,在解压程序之前,我们需要先结束主程序的进程,不然会因主程序进程正在使用而导致报错,另外,我们用到的插件是ICSharpCode.SharpZipLib.dll第三方动态链接库,网上有现成的,可以直接Down下来用);

C# WinForm自动更新解决方案

本文还有配套的精品资源,点击获取 简介:C# WinForm应用开发中实现自动更新功能能够增强用户体验并确保软件安全性。本项目通过创建一个WinForm应用程序,展示自动更新机制的实现,包括版本检测、下载、解压和安装新版本。涉及到的关键组件有自动检测更新、异步下载处理、安全验证、以及用户体验优化等,提供了一个基础框架供开发者进一步定制和扩展。 1. WinForm应用...

weixin_36431814的博客 1344

WinForm 程序自动更新

通过对比文件SHA1码来判断文件是否和我服务器程序相同,如果不同则启动更新程序, 程序分为2部分,网络服务端和客户端

Winform应用程序自动更新系统设计与实现

htmltable {th, td {th {pre {简介:Winform自动更新是提升桌面应用用户体验和软件安全性的关键功能。通过在应用程序中实现自动更新机制,可以确保用户始终使用最新版本,并减少维护工作量。

weixin_30789053的博客 1070

C# WinForm应用程序的自动更新实现方法

本文还有配套的精品资源,点击获取 简介:自动更新功能对于软件开发者来说至关重要,它允许应用程序在无需用户手动操作的情况下升级到新版本。本文将深入探讨如何在基于C# WinForm的应用程序中实现自动更新。关键实现包括网络通信、使用XML或JSON文件存储更新信息、版本号比较、下载更新包管理、安全安装更新、权限管理、异常处理以及用户界面设计。这些知识点将通过解析源代码来深入理...

weixin_36431145的博客 2938

winform版本自动升级C#

源码为解决独立开发人开发C/S模式版本升级问题,源码解决了通过检索本地版本与服务器版本是否有差异,如果有则进行版本升级,升级完成后自动打开主程序,大家一看就明白

C# Winform应用程序自动更新解决方案实现

在 Winform 应用程序中,程序集的版本信息被存储在 AssemblyInfo.cs 文件中,这对于自动更新机制而言是非常关键的。版本信息不仅帮助识别应用程序的当前状态,而且还用于决定是否需要触发更新流程。更新版本信息通常包含四个部分:主版本号、次版本号、构建号和修订号。主版本号和次版本号的变更通常表示较大的更新,而构建号和修订号则可以表示日常的维护更新。更新这些信息通常需要以下步骤:打开 AssemblyInfo.cs 文件。修改和属性值。

weixin_35754962的博客 1601

winform实现自动更新并动态调用form实现

    winform 应用系统的部署问题,一直是个令人苦恼的问题。在2.0下,我们可以通过clickonce方式部署,但是这里要说的,是利用文件的操作来对系统进行更新。    为了方便用户作业,把实际的系统打包成DLL存在,而设计一个自动更新的form来作为用户启动的入口。用户启动后,实现自动检测服务端和客户端系统文件版本,并把所有所需文件更新至最新版本。而后自动启动系统入口界面。   

JustLovePro的专栏 2314

Winform自动更新程序源码(支持增量更新,删除文件操作)

Winform自动更新程序源码(支持增量更新,删除文件操作)

Winform实用的自动在线更新升级功能

Winform实用的自动在线更新升级功能,是很多开发人员。

[ C#+Winform开发 ] 基于C#+Winform开发的串口通讯小工具

这是基于c#和winform的可视化串口小工具

wxf5522的博客 2524

c#开发winform程序自动更新

实现c#开发的winform程序根据程序版本号是否需要更新程序,启动更新程序从服务器下载新版本程序并解压覆盖主程序,运行主程序。

上一篇: C# 使用 NPOI 读取 Excel 转为 Entity
下一篇: 在 Unity 中使用 MQTTnet
wooderZ
博客等级 码龄9年 32粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值