软件自动升级系统:支持exe程序覆盖更新、目录结构、更新更新程序自身、更新sql、执行bat批处理...
软件自动升级系统说明
目录
一、 自动升级需要需要实现些什么?... 1
二、 服务器安装... 2
三、 客户端配置... 4
四、 【数据库升级】包的制作和错误处理... 8
1. 如何连接数据库?... 8
2. 更新哪个数据库?... 9
3. 更新包的文件如何制作?... 9
1) 首先得把需要更新的内容写成sql文件,建议按日期分批次... 9
2) SQL批处理的【GO】问题:不需要去掉GO.. 10
3) 新建一个【数据库升级】文件夹,把sql脚本都放进去... 11
4) 把这个数据库升级打包到rar文件中... 11
5) 发布到服务器上... 12
4. 数据库更新错误有什么影响?... 12
5. 如何处理更新错误?... 14
五、 配置文件Update.ini范本说明... 15
六、 备注事项... 15
一、 自动升级需要需要实现些什么?
软件的自动升级,主要有以下功能点:
- 从服务器检索更新包,有就更新,没有就略过。
- 可以更新升级程序自身,对客户端环境要求低。
- 更新SQL数据库。
- 保留历史更新文件备份:暂未完成。
- 更新完成后,能够启动一个程序。
- 自动升级程序能够开机启动。
- 服务器支持多个项目。
- 服务器配置简单。
二、 服务器安装
服务器需要发布到IIS里,有新文件时,Rar压缩放到对应的项目文件夹里。
下面以ECStore项目为例说明。
- 配置IIS
IIS的配置不需赘述。
注意一点:打开【第三方组件】文件夹,里面有需要单独安装的程序,装完后重启电脑生效(Ajax在framework3.5之后不需要了,可以不装)。
熟悉iis的朋友,可以把【数据交换】文件夹挪到d盘\,【D:\数据交换】,这样以后好找文件。然后IIS建个虚拟目录【数据交换】指向【D:\数据交换】。
- 打包升级文件为Rar,拷到服务器的项目文件夹
可以把需要用的文件(含子文件夹)整个打包成rar文件。
服务端总的文件夹是:数据交换\软件升级服务\项目名,例如上图。
数据交换\软件升级服务\ECStore
最好命名规范整齐,容易目读。文件的生成日期以电脑日期为准。
三、 客户端配置
客户端的配置,主要是ini文件。
用记事本打开update.ini:
[软件升级]
;updater.exe优先查找update.ini,再找sysConfig.ini
服务器地址=http://119.191.58.194:81/
项目=ECStore
升级完后执行=电商仓库.exe
最后更新日期=2016-04-25 10:06:21
目标文件夹=
运行顺序:
l update.exe启动时,会首先查找有无update.ini文件,没有再去找sysConfig.ini文件。
l 找到后,读取其中的服务器地址、项目名、日期,连到服务器查找比这个日期要新的文件。
l 找到后开始逐个按日期顺序下载到本地文件夹:D:\数据交换\软件升级
l 下载后逐个解压缩覆盖目标文件。
l 如需覆盖升级程序自身,系统会在注册表写一个启动批处理,并提示需要重新启动,当重新启动时覆盖自身。
l 覆盖完毕,会把以完成的文件移动到【已完成】文件夹。
l 更新完成后,ini文件内容就变成了rar文件的日期:
最后更新日期=2016-04-27 16:18:30
l 开机启动:
四、 【数据库升级】包的制作和错误处理
数据库升级牵涉下列方面:
1. 如何连接数据库?
优先读取ini配置文件,配置文件没有则读取SysData.MDB文件中GsConfig表的sNetConnectionString项,这个可以通过E3的数据访问配置进行设置。
一般不需要设置,空着即可,他会自动读取E3的设置。
E3的数据访问配置在SysData.mdb文件中。
2. 更新哪个数据库?
上面update.ini截图的【数据库升级->默认数据库】即是。
3. 更新包的文件如何制作?
1) 首先得把需要更新的内容写成sql文件,建议按日期分批次
注意,执行时按文件名顺序执行,所以建议这样命名:
01:表更新;
02:视图更新;
03:函数更新;
04:存储过程更新;
05:其他独立的脚本;
2) SQL批处理的【GO】问题:不需要去掉GO
SQL中习惯用【GO】告诉SQL现在执行,这一批脚本结束了。
不需要人工屏蔽掉GO,自动升级系统遇到Go会自动分批次执行,其关键代码如下图:
3) 新建一个【数据库升级】文件夹,把sql脚本都放进去
注意,必须叫【数据库升级】才会被客户端认为是数据库升级包。
4) 把这个数据库升级打包到rar文件中
5) 发布到服务器上
4. 数据库更新错误有什么影响?
因为客户数据库的不同,一个sql文件可能会在一店正常,在二店出错。
脚本是按批次开启事务执行的。上面的图中,一个更新包包含三个批次的文件夹。
如果一个批次文件夹执行出错,事务会回滚,相当于这个批次没执行,而整个更新也停下来。
开始执行sql脚本之前,系统会自动备份一个,默认 D:\数据交换\数据备份\ 下。
5. 如何处理更新错误?
没办法。
编写者得多考虑潜在问题,心量广大一点,最好更新前手工备个份,这是个细活。
如果遇到大问题,可以还原数据库,执行之前都会自动备份一个。
再就是,看一下提示的错误信息,写着哪个文件夹出错,找到那个文件夹,手工去处理。
五、 配置文件Update.ini范本说明
[本地数据配置]
SysMDBFile=
SysMDBPass=
[软件升级]
服务器地址=http://119.191.58.188:81/
项目=Easter3M
目标文件夹=
升级完后执行=pos.exe
最后更新日期=
显示下载网址=1
[数据库升级]
数据连接=
默认数据库=Easter3MAAA
自动备份文件夹=
六、 备注事项
以下无正文。
转载于:https://www.cnblogs.com/HaiHong/p/11482054.html
软件自动升级系统:支持exe程序覆盖更新、目录结构、更新更新程序自身、更新sql、执行bat批处理...相关推荐
- C# 实现在线软件自动升级自动下载更新文件
1 前言 长期以来,广大程序员为到底是使用Client/Server,还是使用Browser/Server结构争论不休,在这些争论当中,C /S结构的程序可维护性差,布置困难,升级不方便,维护成本高就 ...
- 利用Web Services实现软件自动升级
摘 要:软件维护升级工作是软件生命周期最重要的环节.为了解决以往C/S(Client/Server)模式下的客户端软件升级效率低的问题,设计了C/S应用系统自动升级处理程序.该程序利用Web Serv ...
- [转载]利用Web Services实现软件自动升级
[--- 资料是从免费网站上获取的,上载在这里,只为交流学习目的,文章原作者保留所有权力, 如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除.同时本人深表歉意,并致以崇高的谢意! ...
- WPF开发一款软件自动升级组件
前几天介绍了WPF进行自定义窗口的开发,关注的朋友还挺多,超出本人意料,呵呵,那么我就再接再励,在上篇的基础上,讲述一下软件自动升级组件的开发原理,大家时间宝贵,不想搞太长的篇幅,所以尽可能拣重要的说 ...
- mate20html查看器,华为Mate20系列迎重大升级 系统支持方舟编译器
近日,据华为官方消息称,华为P30系列及Mate 20系列将更新系统,而本次更新最大的亮点则是增加了DC调光模式,以及系统将新增支持方舟编译器和EROFS超级文件系统.这对花粉来说无疑是个好消息. 在 ...
- HTML5进阶(二)HBuilder实现软件自动升级
HBuilder实现软件自动升级 前言 移动APP开发好后需要实现软件自动升级功能,经过一番搜索,发现HBuilder具有"App资源在线升级更新"的功能,遂研究之. 经过一番测试 ...
- python xy打不开、没有关联程序_绿茶XP系统下exe文件打不开提示没有关联程序如何解决...
为了提升电脑运行速度,很多朋友都会对xp系统进行优化.不过,一位绿茶xp系统用户反馈自己在优化过程中误操作修改了注册表参数,导致一打开exe文件就提示"文件没有与之关联的程序来执行" ...
- 太阳能自动灌溉系统 利用spwm实现逆变正弦波,仿真,程序,dxp原理图
太阳能自动灌溉系统 利用spwm实现逆变正弦波,仿真,程序,dxp原理图 :38200583640033384y***2
- 软件自动升级解决方案(一)
作者在http://www.gvhsoftware.org/ 网站中不经意见发现了这个软件升级的程序.感觉它功能强大,基本上满足所有的CS或者BS的软件升级功能. 在闲余时间把它整理出来.提供给大家在 ...
最新文章
- 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法
- 在C#中,变量名前的@符号是什么意思? [重复]
- 【模糊数学】模糊逻辑,隶属度,模糊逻辑应用,模糊推理过程
- 模块讲解----shutil模块(copy、压缩、解压)
- 【JavaWeb】石家庄地铁搭乘系统——第一版(功能尚未完善)
- python去重复功能_消除Python列表重复的几种方法,python,去,一些
- OpenCV防止数据溢出saturate_cast
- bpython3 推送_python3对接聊天机器人API
- Citrix XenApp 6.5客户端自动下载(无需从官网下载)
- 《数据挖掘概念与技术》读书笔记(一)
- 华罗庚的《统筹方法》
- 十天学会php之第七天
- Trimble Sketchup Pro 2013 英文破解版
- stm32数据手册boot_stm32f103中文手册.pdf
- 测绘航空摄影、摄影测量与遥感资质办理
- logstash全量导入es
- 网页中提取SWF游戏文件及运行修改
- 如何区分PNP型和NPN型?
- Android内购+IM
- html5 视差地图,用HTML5构建高性能视差网站的图文代码详解