软件自动升级系统说明

目录

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

自动备份文件夹=

六、        备注事项

以下无正文。

转载于:https://www.cnblogs.com/HaiHong/p/11482054.html

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

  1. C# 实现在线软件自动升级自动下载更新文件

    1 前言 长期以来,广大程序员为到底是使用Client/Server,还是使用Browser/Server结构争论不休,在这些争论当中,C /S结构的程序可维护性差,布置困难,升级不方便,维护成本高就 ...

  2. 利用Web Services实现软件自动升级

    摘 要:软件维护升级工作是软件生命周期最重要的环节.为了解决以往C/S(Client/Server)模式下的客户端软件升级效率低的问题,设计了C/S应用系统自动升级处理程序.该程序利用Web Serv ...

  3. [转载]利用Web Services实现软件自动升级

    [---  资料是从免费网站上获取的,上载在这里,只为交流学习目的,文章原作者保留所有权力, 如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除.同时本人深表歉意,并致以崇高的谢意! ...

  4. WPF开发一款软件自动升级组件

    前几天介绍了WPF进行自定义窗口的开发,关注的朋友还挺多,超出本人意料,呵呵,那么我就再接再励,在上篇的基础上,讲述一下软件自动升级组件的开发原理,大家时间宝贵,不想搞太长的篇幅,所以尽可能拣重要的说 ...

  5. mate20html查看器,华为Mate20系列迎重大升级 系统支持方舟编译器

    近日,据华为官方消息称,华为P30系列及Mate 20系列将更新系统,而本次更新最大的亮点则是增加了DC调光模式,以及系统将新增支持方舟编译器和EROFS超级文件系统.这对花粉来说无疑是个好消息. 在 ...

  6. HTML5进阶(二)HBuilder实现软件自动升级

    HBuilder实现软件自动升级 前言 移动APP开发好后需要实现软件自动升级功能,经过一番搜索,发现HBuilder具有"App资源在线升级更新"的功能,遂研究之. 经过一番测试 ...

  7. python xy打不开、没有关联程序_绿茶XP系统下exe文件打不开提示没有关联程序如何解决...

    为了提升电脑运行速度,很多朋友都会对xp系统进行优化.不过,一位绿茶xp系统用户反馈自己在优化过程中误操作修改了注册表参数,导致一打开exe文件就提示"文件没有与之关联的程序来执行" ...

  8. 太阳能自动灌溉系统 利用spwm实现逆变正弦波,仿真,程序,dxp原理图

    太阳能自动灌溉系统 利用spwm实现逆变正弦波,仿真,程序,dxp原理图 :38200583640033384y***2

  9. 软件自动升级解决方案(一)

    作者在http://www.gvhsoftware.org/ 网站中不经意见发现了这个软件升级的程序.感觉它功能强大,基本上满足所有的CS或者BS的软件升级功能. 在闲余时间把它整理出来.提供给大家在 ...

最新文章

  1. 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法
  2. 在C#中,变量名前的@符号是什么意思? [重复]
  3. 【模糊数学】模糊逻辑,隶属度,模糊逻辑应用,模糊推理过程
  4. 模块讲解----shutil模块(copy、压缩、解压)
  5. 【JavaWeb】石家庄地铁搭乘系统——第一版(功能尚未完善)
  6. python去重复功能_消除Python列表重复的几种方法,python,去,一些
  7. OpenCV防止数据溢出saturate_cast
  8. bpython3 推送_python3对接聊天机器人API
  9. Citrix XenApp 6.5客户端自动下载(无需从官网下载)
  10. 《数据挖掘概念与技术》读书笔记(一)
  11. 华罗庚的《统筹方法》
  12. 十天学会php之第七天
  13. Trimble Sketchup Pro 2013 英文破解版
  14. stm32数据手册boot_stm32f103中文手册.pdf
  15. 测绘航空摄影、摄影测量与遥感资质办理
  16. logstash全量导入es
  17. 网页中提取SWF游戏文件及运行修改
  18. 如何区分PNP型和NPN型?
  19. Android内购+IM
  20. html5 视差地图,用HTML5构建高性能视差网站的图文代码详解

热门文章

  1. 人造细胞能模仿天然细胞感知环境
  2. pkg-config 工具的介绍与使用
  3. Spotify for Mac(流行音乐播放器)
  4. c语言过去硬盘序列号,[C]获取硬盘序列号
  5. springboot明文密码加密解密
  6. AutoCAD 2020快捷指令大全
  7. java 打印数组数字,Java数组打印出奇怪的数字和文本
  8. java file available方法的一些注意点
  9. 人工智能教育中的情感文明因素
  10. IT 人的纠结:去大公司还是去小公司?