现在程序在设计阶段,大概是通过比对程序的MD5值,如果发现和最新的不同就更新文件,现在其中有几个难点1,压缩目录为ZIP文件, 要能获取压缩解压进度,能从整个压缩包中单独解压一个文件。
前面的压缩解压缩很简单,但是想不整个解压,单独从中解压出一个需求的文件,应用采用DLL方式,这里现在完全没有思路2,通过编程方法实现断开sqlserver数据库中的连接
这里是想解决数据库占用的问题,能不能从升级程序中解开其他程序的占用3,从delphi中检查文件是否被使用
如果文件被使用,现在思考的方式是采取暂时不动文件,需要更新的文件更新名字的处理,在程序结束后替换这是我在设计后细节实现上遇到的一些问题

解决方案 »

  1.   

    楼主看来是个新手。自动升级这些问题很多人都遇到过,解决办法也不一而足。ZIP有专门的控件,或者你研究RAR命令行方式吧。升级判断一般是比较文件的MD5值或CRC值。文件占用很容易解决。强行删除一个正在运行的EXE的方法早就有人写好了。
      

  2.   


    嗯,我正是一个新手,第一个压缩的问题我用了一个带流操作的DLL解决了,但是效率可能还是不是很高,是挨个比对获得需要的文件然后保存出来,我还在研究有没有能给压包里的文件直接定位,然后解压出来的方法
    强行删除EXE这方法不错,SQL占用这个问题大侠有没有什么建议~谢谢大侠的解答了~
      

  3.   

    我的自动升级程序是通过数据库比对的,向本地下载dat文件,只要向数据库添加文件或者改动数据集就能升级,有个缺点就是当把本地的dat删除后,没记录文件,就要重新把全部文件下载
      

  4.   


    应该就是通过文件比对校验,应为文件一旦更改他的MD5和CRC32值必然发生改变,只有本地文件的校验值完全等于服务器更新文件的校验值,才能保证文件是最新的,所以没有记录,也可以进行校验值的比对
      

  5.   

    通过编程方法实现断开sqlserver数据库中的连接
    判断数据库是否被连接,如果被连接 强行断开这个连接 这个不知道怎样来做,以防止程序在升级时未断开数据库 升级数据出问题
      

  6.   

    楼主的问题:
    1、不建议从压缩包中解压一个文件,如果压缩包很大,夸张一点n个G,而你只需要其中一个报表文件几K,你就要从服务器下载这个包,不合算。建议,测试服务器的升级列表,对比后只下载需要升级的文件。
    2、客户端的升级如果不涉及数据库的更改不需要断开联接。升级数据库最好在服务器或主机上运行,由专用的程序来操作。
    3、建议在主程序中判断是否有升级操作,如果有则运行升级程序并关闭主程序。接下来由升级程序来更新主程序,及相关文件。这样的流程比较合理,并且容易实现。