自动升级程序要关掉正在运行的主程序,怎么根据路径关掉
自动升级程序要关掉正在运行的主程序,如何根据路径关掉
我在做自动升级程序,自动升级程序要关掉正在运行的主程序,但我照往上的资料做了不行,比较郁闷.分不够再加
------解决方案--------------------
我前几天刚这么做...
思路(也是****网友提供):在主程序退出前创建bat(批处理文件),然后运行它。
如:
我的主程序放在C:\test\app.exe
需要更新的放在C:\app.exe
app.exe内放一个timer,定时确认C:\是否存在文件app.exe,若不存在直接跳过,若存在则
1,创建bat文件
2,执行bat文件
'在模块中输入如下代码
public flag as integer
Public Sub MakeAutoUpdateBatFile()
Dim s As String
s = "@echo off " & vbCrLf & _
":l " & vbCrLf & _
"del " "C:\test\app.exe " " " & vbCrLf & _
"if exist " "C:\test\app.exe " " goto l " & vbCrLf & _
"copy " "C:\app.exe " " " "C:\test\app.exe " " " & vbCrLf & _
"del " "C:\app.exe " " " & vbCrLf & _
" " "C:\test\app.exe " " " & vbCrLf
CreateTxtfile "C:\test\UPDATE.bat ", s, True
End Sub
'在住窗体中加入如下代码
Private Sub Form_Load()
flag=0
timerAutoUpdate.interval=60000 '每分钟查询
timerAutoUpdate.enabled=true
end sub
Private Sub Form_Unload(Cancel As Integer)
If flag=1 Then
MakeAutoUpdateBatFile '创建自动更新批处理文件
Shell "C:\test\UPDATE.bat ", vbHide
End If
End Sub
Private Sub timerAutoUpdate_Timer() '自动更新
If FileExist( "C:\app.EXE ") = True Then
flag = 1
Unload Me
End
End If
End Sub
------解决方案--------------------
我的做法:
设计一个“升级EXE”,一个“主程序EXE”,每次运行“升级EXE”(更新主程序后再运行)。
在主程序中设置定时扫描模块(判断ftp目录中最新主程序的属性),如发现有新版本,则提示升级并退出。
------解决方案--------------------
我也来提供一个思路,代码如果你搞不到,只能晚上给.
条件:
进程文件名已知
过程:
列举进程
取得所有同名进程的路径(就拿svchost.exe来举例吧,比如你的是D:\svchost.exe)
对路径进行判断,然后结束进程...
以前我好象有一个代码的,晚上来看看
------解决方案--------------------
杀进程应该主要是针对其他程序和软件. 用于自己产品的升级,应该以进程间通讯的方式做更好.即主程序调用升级程序,升级程序发现新版本则通知主程序退出,主程序收到通知自行退出(此时还可检测是否有什么工作需要保留以提醒用户保存工作),升级程序完成下载更新后,再启动主程序.
我在做自动升级程序,自动升级程序要关掉正在运行的主程序,但我照往上的资料做了不行,比较郁闷.分不够再加
------解决方案--------------------
我前几天刚这么做...
思路(也是****网友提供):在主程序退出前创建bat(批处理文件),然后运行它。
如:
我的主程序放在C:\test\app.exe
需要更新的放在C:\app.exe
app.exe内放一个timer,定时确认C:\是否存在文件app.exe,若不存在直接跳过,若存在则
1,创建bat文件
2,执行bat文件
'在模块中输入如下代码
public flag as integer
Public Sub MakeAutoUpdateBatFile()
Dim s As String
s = "@echo off " & vbCrLf & _
":l " & vbCrLf & _
"del " "C:\test\app.exe " " " & vbCrLf & _
"if exist " "C:\test\app.exe " " goto l " & vbCrLf & _
"copy " "C:\app.exe " " " "C:\test\app.exe " " " & vbCrLf & _
"del " "C:\app.exe " " " & vbCrLf & _
" " "C:\test\app.exe " " " & vbCrLf
CreateTxtfile "C:\test\UPDATE.bat ", s, True
End Sub
'在住窗体中加入如下代码
Private Sub Form_Load()
flag=0
timerAutoUpdate.interval=60000 '每分钟查询
timerAutoUpdate.enabled=true
end sub
Private Sub Form_Unload(Cancel As Integer)
If flag=1 Then
MakeAutoUpdateBatFile '创建自动更新批处理文件
Shell "C:\test\UPDATE.bat ", vbHide
End If
End Sub
Private Sub timerAutoUpdate_Timer() '自动更新
If FileExist( "C:\app.EXE ") = True Then
flag = 1
Unload Me
End
End If
End Sub
------解决方案--------------------
我的做法:
设计一个“升级EXE”,一个“主程序EXE”,每次运行“升级EXE”(更新主程序后再运行)。
在主程序中设置定时扫描模块(判断ftp目录中最新主程序的属性),如发现有新版本,则提示升级并退出。
------解决方案--------------------
我也来提供一个思路,代码如果你搞不到,只能晚上给.
条件:
进程文件名已知
过程:
列举进程
取得所有同名进程的路径(就拿svchost.exe来举例吧,比如你的是D:\svchost.exe)
对路径进行判断,然后结束进程...
以前我好象有一个代码的,晚上来看看
------解决方案--------------------
杀进程应该主要是针对其他程序和软件. 用于自己产品的升级,应该以进程间通讯的方式做更好.即主程序调用升级程序,升级程序发现新版本则通知主程序退出,主程序收到通知自行退出(此时还可检测是否有什么工作需要保留以提醒用户保存工作),升级程序完成下载更新后,再启动主程序.