软件自动升级系统说明
目录
一、 自动升级需要需要实现些什么?... 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
自动备份文件夹=
六、 备注事项
以下无正文。