下载升级文件需要用update.exe,然后处理这些升级文件,也需要update.exe,
一般的升级,比如拷贝,当检测到要被覆盖的文件有程序在占用的时候,先结束这个程序,然后将其覆盖,
但update.exe如果有新版本,要被覆盖,怎么办?

解决方案 »

  1.   

    这个情况我们就实际使用过,需要让UPdate.exe重启,可以写个脚本让Update.exe进程先退出,然后过多少秒后,再启动它。当然这个脚本肯定是要外部执行的,不能是通过Update.exe来执行。
      

  2.   

    做两个升级程序A.exe、B.exeA只负责升级B
    B负责升级整个软件
      

  3.   

    update.exe要升级至少有两种办法:
    1.不需要其它文件协助:先把待升级的文件copy到旁边,用MoveFileEx,加上重启时拷贝的参数,等重启的时候进行替换
    2.需要其它exe协助:需要另外一个Copy的程序,可以是exe、bat之类的,结束自己,再copy update.exe,最后启动我倾向于后者,毕竟升级很及时,
    我的做法:update.exe一般会升级很多文件,包括exe文件,那么只要在被升级的某个exe里面实现这个替换逻辑,就不愁update.exe不能替换了总得来说,只要由两个exe,那理论上exe都可以升级了,二生万物,哈哈
      

  4.   

    把新的Updata.exe写入系统注册表让其启动启动,覆盖掉老的文件,再删除注册表中相关信息
      

  5.   

    MoveFileEx(),MOVEFILE_DELAY_UNTIL_REBOOT,重启机器以后覆盖