C/S架构系统的自动更新功能设计与实现(五)

c++实现程序自动更新(附完整源码) 阅读详情

更新程序的自我升级

上一章节讲到客户端的更新。现在面临一个新的问题,就是更新程序本身要实现更新,该怎么办呢?

思路

我们当然知道,更新程序无法在运行期间实现自我更新,要对其实现更新,必须先关闭程序,再进行更新。于是我们想到,在更新程序关闭后,在其回调启动的主程序中,实现对更新程序的自我升级。
简单来说,就是A调用B,来更新B,更新完成后,A关闭,并回调B,在B启动时,来更新A。对A的更新,通过脚本实现。
下载B的更新程序时,多下载一个文件,即A的更新包,我们将其命名为upgrade.bak,以及一段脚本upgrade.bat,在脚本中实现将bak更名为A,同时执行其他清理操作。
在这里插入图片描述

代码

脚本

@echo off   
if "%1" == "h" goto begin 
    mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
:begin
COPY /B upgrade.bak 某某质检软件.exe /Y
RD /S /Q UpgradeCache
DEL /Q upgrade.bak

调用

/// <summary>
/// 以静默方式更新升级程序执行文件
/// </summary>
private static void SelfUpgrade()
{
	var sSelfUpgradeBatRunPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "upgrade.bat");
	if (File.Exists(sSelfUpgradeBatRunPath))
	{
		var selfUpgradeStartInfo = new ProcessStartInfo()
		{
			CreateNoWindow = true,
			UseShellExecute = false,
			FileName = sSelfUpgradeBatRunPath,
			RedirectStandardInput = false,
			RedirectStandardOutput = false
		};
		var processInfo = Process.Start(selfUpgradeStartInfo);
		processInfo.WaitForExit();
		processInfo.Close();
	}
}
C/S架构Winform客户端自动更新技术实现 htmltable {th, td {th {pre {简介:本项目重点在于开发C/S架构下Winform客户端的自动更新机制,以.NET框架为基础,简化更新流程,减少用户手动操作。通过服务端FTP服务器存储更新包,客户端在运行时检查版本并提示更新。用户同意后,客户端通过网络协议下载、解压缩新版本包,并替换旧文件,最终刷新应用以应用更新。过程中还需要处理版本控制、文件完整性校验及数据库迁移等技术要点。 阅读详情

相关推荐

构建完整的C/S架构软件在线升级系统

本文还有配套的精品资源,点击获取 简介:该项目是一个为客户端软件提供自动更新功能的C/S架构应用程序升级解决方案。它包含一套用于实现在线更新机制的完整代码框架,并涵盖了从源码分析到部署发布的全部关键技术和组件。开发者可以学习如何设计和实现软件版本检查、文件下载、错误处理等环节,以及如何提供良好的用户体验。 1. C/S架构概述 C/S架构,即客户端/服务器架...

weixin_31974443的博客 2351

C/S架构系统的自动更新功能设计与实现(一)

文章目录需求背景功能设计服务器端版本库目录服务器端版本更新服务接口客户端与服务器通信机制客户端更新机制 需求背景 项目上要开发一个C/S架构的系统,在客户单位的内网上使用。客户要求,系统上线后,有版本更新时,要能够自动检测新版本并获取更新,而不需要每次使用U盘等介质拷贝安装新版本。基于此需求,我们需要设计一套可以在线更新的C/S架构,在系统启动时,检测服务器有无更新版本,如果有的话,就自动下载新版...

a_dev的专栏 3076

构建C/S程序的自动版本控制与更新系统

htmltable {th, td {th {pre {简介:C/S架构程序依赖客户端和服务器端的协同工作,保持版本同步对于确保用户获得最新的功能和安全更新至关重要。本文介绍了一款自动更新工具,其通过HTTP协议实现客户端的自动升级,包括检测更新、下载安装包、验证更新文件完整性、安装更新以及启动新版本等步骤。开发者需要考虑安全性措施如加密通信和防止篡改,以确保更新过程的安全。这种工具对于简化软件维护和提升用户体验至关重要,并是企业信息化建设的关键。

weixin_30205153的博客 670

C++实现软件自动更新功能

本文固定链接: http://yanxin8.com/3766.html 文章来自yanxin8.com 软件时常需要更新,如果通过在线通知用户肯定会更方便,所以4月底为noteCard软件增加了自动检测更新功能,实现原理也很简单,通过获取服务器文件中版本号与软件自身版本号对比,给出提示。下面把实现的代码(C++)贴出来,供大家参考。 0.用到的头文件

路楷的专栏 1万+

B/S架构系统通用客户端实现与应用

B/S架构(Browser/Server,浏览器/服务器模式),是一种将数据处理和业务逻辑集中在服务器端,而用户界面则通过Web浏览器呈现给用户的软件架构模式。在当今信息化时代,B/S架构凭借其众多优点,如易于部署、跨平台性强、便于维护与升级等,在企业信息系统建设中占据着主导地位。JavaScript是构建动态网页和开发富交互式应用程序的核心技术之一。它是一种轻量级的编程语言,可以直接在浏览器中运行,支持事件驱动、对象导向和函数式编程等多种编程范式。

weixin_35949153的博客 1392

B/S与C/S架构深度解析与对比实战

使用OpenAPI(Swagger)定义API契约:paths:/users:get:summary: 获取用户列表in: queryresponses:'200':description: 成功返回用户列表content:schema:支持自动生成文档与客户端SDK,降低沟通成本。

weixin_26854475的博客 627

一种电子病历系统软件框架思想——B/S与C/S混合架构

电子病历系统到底采用B/S还是C/S架构,是一个长期争论的话题。而在业界,两种架构的应用范围谁也不占有显著优势。在此,笔者提出一种B/S和C/S混合的架构,以下是其原理图。 B/S和C/S混合架构原理图 在该架构中,主要包括如下几个部分: 1.Web服务器 这是系统的核心。大多数的业务流程运行在Web服务器中。采用ASP.NET开发,直连数据库。 Web服务器包含系统功能 API集合...

lnc2003的专栏 4542

self-updater:用C ++ Win32编写的安全自我更新软件框架

自我更新 用C ++编写的自我更新程序演示。 包括加载程序,客户端,服务器和签名工具,可安全地为Win32桌面应用程序提供自动更新。 背景 本机Win32桌面应用程序没有系统集成的程序包管理器来处理自动更新。 该框架提供了有关如何安全有效地交付和处理更新的有效演示。 安全 自我更新系统应满足完整性和真实性安全目标。 该框架使用4096位RSA密钥来签名和验证更新数据的SHA-256签名。 公钥是嵌入到客户端二进制文件中进行验证的。 假设软件的初始交付是在受信任的源上完成的,则唯一有效的更新发行者是有权访问私钥的发行者。 更新数据通过UDP传输。 该决定的主要因素是减少TCP连接的服务器内存开销(减少CPU负载作为奖励)。 预期的内存开销大致为: (Update File Size) + (Max Connections) * 80 bytes 更新数据直接存储在内存中,以避免访问磁盘

智能客户端:C/S与B/S的融合

智能客户端:C/S与B/S的融合■ 娄激扬 C/S架构与B/S架构都存在不可避免的局限,而智能客户端恰好能克服它们存在的问题,提高用户满意度,降低总体拥有成本。 人们对智能客户端的关注开始于微软。事实上,自微软推出.NET战略以来,其最令人关注的技术新动向之一就是对智能客户

娟子博客专栏 欢迎您的加入 为我们的IT之路共同努力 1985

C/S程序版本控制(自动更新)工具

C/S客户端版本自动升级工具,使用http协议,详细请看附件中的说明文档。

C++实现软件自动更新(update)

C++编写,实现软件版本与服务器端版本库比较,如果有新版本则自动更新。压缩包包括服务器端示例。

实现C/S程序的自动更新

最近在做一个.Net C/S的系统,需要实现自动更新。MS已经提供了ClickOnce,很方便,但是用起来不太习惯,还是决定自己写一个简单的。自动更新无非文件比较、下载、启动程序几个步骤,其中文件比较可以通过手动在配置文件中维护版本号,也可以比较文件的MD5值,或者在.Net里还可以用Assembly或文件的版本号。因为怕麻烦,手动维护不考虑,剩下两者各有所长,都提供了以供选择。下载就比较简单

danjiewu的专栏 1万+

C++ 软件自动更新源码

一份用于软件自动更新的源代码。可以与瑞星的升级机制一比

C/S与B/S架构深度解析:从核心原理到实战选型指南

客户端/服务器(C/S)和浏览器/服务器(B/S)架构是软件工程中两种基础且核心的系统设计模式。C/S架构基于专用客户端与服务器通过高效二进制协议(如gRPC)通信,强调本地计算、强状态管理和离线能力,适用于对性能与实时性要求极高的场景。B/S架构则以浏览器为统一客户端,基于HTTP/HTTPS等标准Web协议实现跨平台访问与无缝更新,降低了部署和维护成本。从技术价值看,C/S在复杂图形处理、高频交易等专业领域性能优势明显,而B/S在快速迭代、跨平台兼容和用户体验一致性方面更具优势。随着WebAssembl

weixin_34007886的博客 1689

AFSim 2.9中文手册实战指南:从安装到高级功能详解(附B站视频链接)

本文详细介绍了AFSim 2.9的安装配置、基础功能操作和高级功能应用,帮助用户快速掌握这款强大的仿真平台。从系统要求检查到多体动力学仿真,再到性能优化技巧,全面解析AFSim 2.9的使用方法,适合初学者和进阶用户参考。

weixin_30892037的博客 564

解决 Clawdbot 对接 Minimax 出现 401 (Token is unusable) 的问题排查与修复

即便确认 API Key 有效且余额充足,该问题仍可能在 Clawdbot 中持续出现,而在其他工具(如 curl 或 Postman)中测试正常。

hampeter的博客 3075

C/S与B/S架构深度解析:从原理到实战选型指南

在软件工程领域,客户端/服务器(C/S)和浏览器/服务器(B/S)是两种最基础且核心的软件架构模型。C/S架构通过预先安装的客户端应用分担计算,能充分利用本地资源,提供出色的交互体验和离线能力,常见于对性能和系统集成要求高的专业软件与游戏。B/S架构则以浏览器为统一入口,实现了零部署、跨平台和集中式管理,成为互联网应用的主流,其技术栈涵盖丰富的前端框架与后端服务。理解两者的工作原理、技术价值与适用场景,是进行技术选型、平衡用户体验与运维成本的关键。本文通过对比分析与实战场景,深入探讨了包括Electron、

weixin_34224941的博客 353

Python自然语言处理 NLTK 库用法入门教程【经典】

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 本文实例讲述了Python自然语言处理 NLTK 库用法。分享给大家供大家参考,具体如下: 在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP)。本教程将会使用 Python NLTK 库。NLTK 是一个当下流行的,用于自然语言处理的 Python 库。 那么 NLP 到底是什么?学习 NLP 能带来什么好处? ...

python函数基础教程 1万+

C/S架构系统的自动更新功能设计与实现(六)

文章目录自定义启动画面需求原理实现服务器端图片加载的服务接口客户端加载最新启动图片的方法 自定义启动画面 需求 临近新中国成立70周年,项目团队计划发布一个以“70周年”为主题的版本。其中,能体现这一主题的,是系统的自动升级启动界面。该界面需要加载一张固定大小的图片。通过图片的修改和重新编译打包自动升级文件,来修改启动风格。 扩展一下这个需求,可以变成像很多常见的手机App或C/S客户端软件那样,...

a_dev的专栏 486

基于live555实现一个rtsp客户端程序

本文介绍了基于live555流媒体库实现的RTSP客户端程序,能够通过RTSP地址获取H.264/H.265裸码流或TS流数据并存入本地文件。详细阐述了使用CLion搭建工程的代码架构和CMake配置,重点分析了TS流解析模块的实现,包括TS包结构解析、PES包提取和ES裸流获取的完整流程。文章提供了TS/PES/ES三种数据包的协议说明,并给出了从TS流中提取视频帧的具体方法,最后附有工程代码下载链接。该方案实现了RTSP流媒体接收、解析和存储的完整功能链。

kk821521286的博客 789

自然语言处理NLP星空智能对话机器人系列:Gavin大咖 Transformer 101问答集 第一问

自然语言处理NLP星空智能对话机器人系列:Transformer 101问答 [让天下没有难学的Transformer] 你问我答系列之一 Gavin大咖第一问: Transformer中的可训练Queries、Keys和Values矩阵从哪儿来? 以上是智华解答,供同学们参考。 星空智能对话机器人系列博客 NLP星空智能对话机器人系列:第二次星空智能对话机器人Zoom线上演示安排 NLP星空智能对话机器人系列:StarSpace: Embed All The Things NLP星空智能对

大模型与Agent智能体 991
上一篇: C/S架构系统的自动更新功能设计与实现(四)
下一篇: C#判断文件是否被占用
acngiser
博客等级 码龄15年 118粉丝 214原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值