Ero*_*ocM 2 .net vb.net updating
我有一个完全独立于我的主应用程序的更新程序.我运行update.exe来更新app.exe.要检查文件是否正在使用中,我将其移动到另一个文件并捕获错误(如果它正在使用中).如果没有问题,我将其重命名.至少那是我的计划......
主程序:app.exe
更新程序:update.exe
该程序通过网络使用,无需运行任何服务.因此,用户在他们的机器上通过网络运行exe.
我需要在update.exe运行时更新app.exe.要检查app.exe是否仍在使用中,我在try/catch中包含以下内容以查看它是否失败:
IO.File.Move(upddir&"\ app.exe",upddir&"\ app.exe.tst")
IO.File.Move(upddir&"\ app.exe.tst",upddir&"\ app.exe ")
有趣的是,即使app.exe正在运行,移动也可以将其重命名为app.exe.tst而不会出现任何错误.我甚至可以继续在应用程序中没有任何错误.
我以为我不在乎,所以我让另一位程序员看看这个,他验证了我上面所说的内容.
所以,我们尝试将其包裹在try catch中:
Dim readfile As New FileStream(upddir&"\ app.exe",FileMode.Open,FileAccess.Read,FileShare.None)
readfile.Dispose()
我把文件共享称为无,至少我认为它会显示文件中有人.
它仍然没有任何错误.
任何人都知道为什么我可以重命名正在使用的文件?另外,有没有比我现在做的更好的方法呢?
谢谢!Eroc
使用"使用"的相同代码:)
Public Function FileInUse(ByVal sFile As String) As Boolean
Dim thisFileInUse As Boolean = False
If System.IO.File.Exists(sFile) Then
Try
Using f As New IO.FileStream(sFile, FileMode.Open, FileAccess.ReadWrite, FileShare.None)
' thisFileInUse = False
End Using
Catch
thisFileInUse = True
End Try
End If
Return thisFileInUse
End Function
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33587 次 |
最近记录: |