CS 系统框架二[完善自动更新]

简介: 增加了程序自动更新版本的功能,实现方式如下: 后台数据库中用一张表来保存程序的版本信息,该表的字段很简单,如下: 开发文档 CREATE TABLE [dbo].[sys_AutoUpdate]( [UID] [int] IDENTITY(1,1) NOT NULL, [Syste...

增加了程序自动更新版本的功能,实现方式如下:

后台数据库中用一张表来保存程序的版本信息,该表的字段很简单,如下:

开发文档

CREATE TABLE [dbo].[sys_AutoUpdate](
 [UID] [int] IDENTITY(1,1) NOT NULL,
 [SystemName] [varchar](50) NULL,
 [SystemVersion] [varchar](10) NULL,
 [Remark] [text] NULL,
 [UpdateDate] [datetime] NULL,
 [UpdatePath] [varchar](500) NULL)

在之前的项目里面增加了一个新的项目,主要用来实现更新,通过"参数设置"界面维护必须要的信息,如更新的文件列表,
更新的路径,需要更新的程序名称,版本以及描述信息等等,如下图:

将需要更新的文件放置更新的目录中,这样客户端才可以得到最新的文件,程序里面会记录着每次的版本号,如下代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using Allen.Model;
 6 
 7 namespace Allen.Tools.Common
 8 {
 9     /// <summary>
10     /// 这个类很重要,主要用来保存 一些临时信息,可以在整个项目中使用
11     /// </summary>
12     public sealed class AllenSingleton
13     {         
14         private static volatile AllenSingleton instance;
15         private static object syncRoot = new Object();
16 
17         private AllenSingleton() { }
18         public static AllenSingleton Instance
19         {
20             get
21             {
22                 if (instance == null)
23                 {
24                     lock (syncRoot)
25                     {
26                         if (instance == null)
27                             instance = new AllenSingleton();
28                     }
29                 }
30                 return instance;
31             }
32         }
33 
34         public string strCon = Allen.Model.ConnectionModel.ConnectionString1;
35         public string UserID;
36         public string Password;
37         public string UserDep;
38         public string ServerID;
39         public string Lang;                
40         public FrmMain m_FrmMain;
41         public string Company;
42         public string AppConfigFile;
43         public Dictionary<string, string> DicLang;       
44         public string Role;
45         public string RoleName; 
46                 public string currentlyVersion = "1.001";
47         public string SystemName = "Allen.Tools";
48 
49      
50         public string AllowCreate;
51         public string AllowDelete;
52         public string AllowEdit;
53         public string AllowPrint;
54        
55 
56         //public static class GlobalData
57         //{
58         //    public static Dictionary<string, Action> dict = new Dictionary<string, Action>();
59         //}
60 
61 
62     }
63 }

客户端在登录的时候进行版本检查:

 1  double NewVer = Convert.ToDouble(new BLL.sys_AutoUpdateManager().GetSystemVersionInfo(allensingleton.SystemName).Rows[0]["SystemVersion"].ToString());
 2                     double CurrVer = Convert.ToDouble(allensingleton.currentlyVersion);
 3                     if (NewVer > CurrVer)
 4                     {
 5 
 6                         DialogResult dr = MessageBox.Show("发现新的版本,是否要更新该软件?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
 7                         if (dr == DialogResult.OK)
 8                         {
 9                             Process.Start(Application.StartupPath+"\\AutoUpdate.exe");
10                             Thread.Sleep(500);
11                             this.Dispose();
12                             this.Close();
13                         }
14                     }

如果版本低于服务器上面的版本,那么则启动更新程序:

待更新结束之后再重新打开最新版本的程序,主程序和更新程序放在同一目录里面。

 


 

 

相关文章
|
4月前
|
UED 开发者
哇塞!Uno Platform 数据绑定超全技巧大揭秘!从基础绑定到高级转换,优化性能让你的开发如虎添翼
【8月更文挑战第31天】在开发过程中,数据绑定是连接数据模型与用户界面的关键环节,可实现数据自动更新。Uno Platform 提供了简洁高效的数据绑定方式,使属性变化时 UI 自动同步更新。通过示例展示了基本绑定方法及使用 `Converter` 转换数据的高级技巧,如将年龄转换为格式化字符串。此外,还可利用 `BindingMode.OneTime` 提升性能。掌握这些技巧能显著提高开发效率并优化用户体验。
67 0
|
4月前
|
数据采集 前端开发 开发者
Angular表单控件详解:掌握模板驱动与响应式表单的精髓,让Web应用中的数据采集工作变得高效又简单,彻底告别繁琐的表单处理流程
【8月更文挑战第31天】表单是 Web 应用的关键组件,用于用户登录、注册及信息提交。Angular 作为成熟前端框架,提供了强大的表单处理功能,包括模板驱动与响应式表单。本文通过技术博客形式,详细介绍这两种表单控件,并提供示例代码,展示如何利用它们简化表单处理流程,提高开发效率。首先介绍简单的模板驱动表单,然后讲解基于 RxJS 的响应式表单,适用于复杂逻辑。通过本文,你将学会如何高效地使用 Angular 表单控件,提升应用的用户体验。
46 0
|
6月前
|
缓存 前端开发 算法
ProFlow 流程编辑器框架 1.0 发布
ProFlow 流程编辑器框架 1.0 发布
369 0
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的商业辅助决策系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的商业辅助决策系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
7月前
|
前端开发
基于jeecgboot流程管理平台的在线表单设计修改成formdesigner正式发布
基于jeecgboot流程管理平台的在线表单设计修改成formdesigner正式发布
47 0
|
XML 存储 前端开发
高级UI系列(一): 自定义UI理论篇(2)
简介: 自定义view是区分中级开发和初级开发的分水岭,虽说今年校招,工作三四年的老程序员一直在劝退客户端,作为职场打拼多年的老菜鸟,对android还是挺有信心的,虽说对view的知识也只是停留在纸上,很少真正落地做一些复杂高性能的ui控件,之前在akulaku确实见识了一群技术大牛,高级ui控件伸手就来,让我羡慕不已,这一次我也从基础到源码再到实战开始写几篇自定义view教程。大家有什么好的见解也欢迎到评论区多多交流。
162 0
高级UI系列(一): 自定义UI理论篇(2)
|
XML 程序员 Android开发
高级UI系列(一): 自定义UI理论篇(1)
自定义view是区分中级开发和初级开发的分水岭,虽说今年校招,工作三四年的老程序员一直在劝退客户端,作为职场打拼多年的老菜鸟,对android还是挺有信心的,虽说对view的知识也只是停留在纸上,很少真正落地做一些复杂高性能的ui控件,之前在akulaku确实见识了一群技术大牛,高级ui控件伸手就来,让我羡慕不已,这一次我也从基础到源码再到实战开始写几篇自定义view教程。大家有什么好的见解也欢迎到评论区多多交流。
160 0
高级UI系列(一): 自定义UI理论篇(1)
|
JSON 运维 前端开发
开发中遇到的问题&解决方案(十一)
前天不是开工嘛,然后刚刚到公司前端说测试环境好像挂了,开工就直接王炸了,找了运维,运维说服务器过年关机了回来发现有个配件坏了,暂时修不好。那我就本地部署一套当测试环境用,我同步了一份生产库到本地,然后问题就来了,之前好好的功能全部出现了问题,因为年前有需求改动,debug了好几遍代码也没有查出问题,然后突然想到MySQL版本不对。
145 0
开发中遇到的问题&解决方案(十一)
|
小程序 物联网 测试技术
HaaS UI小程序解决方案应用分发之三:应用和版本管理
应用创建和版本管理是应用分发的核心功能之一,新应用在开发完成上线前,需要到应用分发平台申请应用的唯一标识appId一起打包,然后将打包后的升级文件上传到应用分发平台,设备在开机或定时发起升级检测请求时,会将最新的应用版本信息下发到设备进行版本更新。
286 15
HaaS UI小程序解决方案应用分发之三:应用和版本管理
客观解析开发小程序该选择模板还是定制开发?
接收到很多关于小程序开发价格方面的咨询,大致可以分为两大类: · 模板类需求:标准模板的需求,通常的价格在几千块钱以内(画重点:几千块钱); · 定制类需求:市场上找不到通用的模板,需要进行定制开发,通常价格在上万到十几万不等(画重点:上万到十几万)。
1016 0