• 软件自动升级系统:支持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

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

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

    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

    自动备份文件夹=

    六、        备注事项

    以下无正文。

  • 相关阅读:
    angularjs 每隔5秒重新加载一次数据
    博客已搬家
    Essential 安装备忘录
    安卓手机添加系统证书方法
    Linux 中的硬链接和符号链接
    最适合练习英语听力的15个网站
    Linux 中的文件权限
    EROFS vs F2FS vs Btrfs vs reiserFS vs EXT4 性能比对
    宇宙六种生命形态,碳基生命排第三,排名第一的硅基生命多可怕?
    什么是爬虫脑
  • 原文地址:https://www.cnblogs.com/HaiHong/p/11482054.html
Copyright © 2020-2023  润新知