VB如何实现依次运行程序?

来源:百度知道 编辑:UC知道 时间:2024/05/12 04:23:52
我想写一个自动升级程序,下载部分已解决,接下来我想让旧程序结束后再运行新程序,新程序将删除旧程序。问题是如何让旧程序结束后再运行新程序?或者新程序如何等待旧程序结束后再删除它?如果回答可行的话追加30分!
为了方便流动,我希望这个程序只有一个exe文件,没有其它文件。并且希望当更新完成后立即删除旧版程序。
2楼,貌似不行
3楼,不要用固定延迟,万一有的电脑特别慢不就不行了?

给你个思路,假如老程序是old.exe 新程序是new.exe 升级部分的代码一样,你可以用command line来传递信息

old.exe里面更新的时候这样
shell "new.exe -update " & app.path & "\" & app.exename & ".exe" '启动新程序,传递两个参数过去,一个是-update告诉程序启动后执行更新代码,第二个是老程序的路径,新程序接受到以后覆盖,并且执行
end '结束老程序
exit sub '跳出老程序的过程

在formload或者submain里面判断 command <-vb内置变量,存储command line

if len(command)>0 then
tmp=split(command," ")
if tmp(0)="-update" then
frmUPdate.OldExePath=tmp(1) '在frmupdate窗口中加一个public变量,存放老exe路径
frmUpdate.show '如果第一参数是-update,打开frmupdate窗口,该窗口延时两秒后把自己复制到老程序的路径,然后shell,把自己end
end if

endif

那就在升级完成后。然后关闭旧程序前自动生成一个批处理。

再关闭批处理后程序隐藏调用打开批处理(API可以实现),用批处理删除旧程序,为新程序改名等操作。

不断监视进程中是否有这一项了,没有的话就删除
或者直接交给cmd.exe处理,假如你这个程序为放在c:\1.exe,那么可以用下面的命令:
Shell "cmd /c taskkill /f /im / 1.exe & del c:\1.exe", 0