软件自动升级系统:支持exe程序覆盖更新、目录结构、更新更新程序自身、更新sql、执行bat批处理

软件自动升级系统说明 目录 一、 自动升级需要需要实现些什么? 1 二、 服务器安装 2 三、 客

软件自动升级系统说明

目录

一、         自动升级需要需要实现些什么?... 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

 

 

 

 

一、        自动升级需要需要实现些什么?

软件的自动升级,主要有以下功能点:

  1. 从服务器检索更新包,有就更新,没有就略过。
  2. 可以更新升级程序自身,对客户端环境要求低。
  3. 更新SQL数据库。
  4. 保留历史更新文件备份:暂未完成。
  5. 更新完成后,能够启动一个程序。
  6. 自动升级程序能够开机启动。
  7. 服务器支持多个项目。
  8. 服务器配置简单。

 

二、        服务器安装

服务器需要发布到IIS里,有新文件时,Rar压缩放到对应的项目文件夹里。

下面以ECStore项目为例说明。

  1. 配置IIS

IIS的配置不需赘述。

 

注意一点:打开【第三方组件】文件夹,里面有需要单独安装的程序,装完后重启电脑生效(Ajax在framework3.5之后不需要了,可以不装)。

 

熟悉iis的朋友,可以把【数据交换】文件夹挪到d盘\,【D:\数据交换】,这样以后好找文件。然后IIS建个虚拟目录【数据交换】指向【D:\数据交换】。

 

  1. 打包升级文件为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

自动备份文件夹=

六、        备注事项

以下无正文。