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                     }

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

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

 


 

 

相关文章
|
2月前
|
开发者 索引 容器
【鸿蒙软件开发】Stage模型开发概述应用/组件级配置
【鸿蒙软件开发】Stage模型开发概述应用/组件级配置
【鸿蒙软件开发】Stage模型开发概述应用/组件级配置
|
7月前
|
前端开发 JavaScript UED
前端设计系统和UI组件库的搭建
前端设计系统和UI组件库的搭建
223 0
|
10月前
|
JavaScript 前端开发 数据库
Unity3d(webGL)构建数字孪生小案例(包含完整的数据交互体系)附赠完整代码
Unity3d(webGL)构建数字孪生小案例(包含完整的数据交互体系)附赠完整代码,请关注公众号:拼搏的小浣熊,获取简化版的代码!
|
vr&ar 图形学 Windows
CATIA等设计类软件实时渲染流化解决方案
**实时渲染技术可以实现在VR/AR眼镜中查看CATIA模型,其实不仅仅是VR和AR眼镜,还可以是手机、平板、电脑中直接打开网页就可以查看和浏览CATIA等3D模型。而VR/AR眼镜中通过实时渲染技术不仅仅可以查看CATIA模型,其他的比如BIM/Unreal/unity等模型也都是OK的。**那具体是怎么实现的呢?使用起来麻烦吗?能不能支持多人同时使用呢?关于这些对于实时渲染比较相关的问题,这里点量云小芹做统一解释说明。
150 0
CATIA等设计类软件实时渲染流化解决方案
|
XML 数据库 数据格式
嵌入式工作流程开发!工作流 Activiti 框架中子流程的使用指南
本篇文章对工作流Activiti框架中的子流程进行的详尽的分析和说明,在工作流Activiti集成到项目中开发时,可以嵌入子流程进行使用。子流程包括了事件子流程,事务子流程以及调用活动子流程。通过对内嵌子流程的方式的学习,可以帮助我们将工作流框架很好地应用在继承式建模的流程场景下。
851 0
嵌入式工作流程开发!工作流 Activiti 框架中子流程的使用指南
|
小程序 物联网 测试技术
HaaS UI小程序解决方案应用分发之三:应用和版本管理
应用创建和版本管理是应用分发的核心功能之一,新应用在开发完成上线前,需要到应用分发平台申请应用的唯一标识appId一起打包,然后将打包后的升级文件上传到应用分发平台,设备在开机或定时发起升级检测请求时,会将最新的应用版本信息下发到设备进行版本更新。
HaaS UI小程序解决方案应用分发之三:应用和版本管理
|
安全 Docker Windows
5个要点,告诉您为何要将旧版 Windows 应用程序进行现代化改造
在短短一年多的时间里,Microsoft 对 Windows Server 2008 的支持即将结束。如果没有做出适当的规划,连锁反应可能会影响您的业务。维护成本将急剧上升,而安全性和合规性风险将在没有定期补丁的情况下增加。
2249 0
|
存储 C#
WinForm基于插件开发实现多项配置存储
一、课程介绍和实例在线演示 明人不说暗话,跟着阿笨一起玩WinForm。本次分享课程属于《C#高级编程实战技能开发宝典课程系列》中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集、整理和完善此系列课程! 本次分享课程给大家带来一个W...
1806 0