Я надеюсь, что вы можете мне помочь.Я пытаюсь создать средство обновления программы, основанное на загрузке файлов XML с сервера.
Идея состоит в том, что файл XML сервера содержит текущий номер версии и расположение установщика.программа обновления либо выгружается в папку автозагрузки, либо устанавливается как служба и т. д.
Программа успешно читает и анализирует XML-файл текущей версии и успешно загружает XML-файл с сервера.Однако, когда я пытаюсь проанализировать только что загруженный файл с сервера, я получаю сообщение об ошибке:
'IOException is nothandled' 'Процесс не может получить доступ к файлу' C: \ Program Files (x86) \ Test \ ServerVersion.xml «потому что он используется другим процессом».
Насколько я знаю, это не относится к работе вне программы, и внутри программы, я думаю, я избавился от любых элементов, которые имели бы доступ кэто до его использования.Я сделал что-то глупое или неправильно распорядился?
код выглядит следующим образом с ошибкой, отмеченной комментарием в строке 52:
Imports System.IO
Imports System.Xml.XmlTextReader
Imports System.Net
Module Module1
Sub Main()
Dim currentreader As Xml.XmlTextReader
Dim serverreader As Xml.XmlTextReader
Dim download As New WebClient
Dim Version
Dim Versionlocation
Dim ServerVersion
Dim Serverlocation
Dim Failure As Boolean = False ' Will be used for retrys in the future'
download = New WebClient
Try
If Not (System.IO.File.Exists("C:\Program Files (x86)\Test\ServerVersion")) Then
download.DownloadFileAsync(New Uri("http://192.168.2.226/SampleApp_ServerSetup/UpdateVersion.xml"), "C:\Program Files (x86)\Test\ServerVersion.xml")
download.Dispose()
End If
Catch ex As Exception
Failure = True
Console.WriteLine("error" & ex.Message)
End Try
currentreader = New Xml.XmlTextReader("C:\Program Files (x86)\Test\Version.xml")
currentreader.WhitespaceHandling = Xml.WhitespaceHandling.None
currentreader.Read()
currentreader.Read()
While Not currentreader.EOF
currentreader.Read()
If Not currentreader.IsStartElement Then
Exit While
End If
Version = currentreader.ReadElementString("AvailableVersion")
Versionlocation = currentreader.ReadElementString("ApplicationUrl")
End While
currentreader.Close()
serverreader = New Xml.XmlTextReader("C:\Program Files (x86)\Test\ServerVersion.xml")
serverreader.WhitespaceHandling = Xml.WhitespaceHandling.None
Console.WriteLine("Current Version: " & Version & vbNewLine & "Version Url: " & Versionlocation)
'error here'
serverreader.Read()
serverreader.Read()
While Not serverreader.EOF
serverreader.Read()
If Not serverreader.IsStartElement Then
Exit While
End If
ServerVersion = currentreader.ReadElementString("AvailableVersion")
Serverlocation = currentreader.ReadElementString("ApplicationUrl")
End While
If ServerVersion > Version Then
Console.WriteLine("New version available : " & ServerVersion)
End If
serverreader.Close()
End Sub
End Module
Это все еще в процессе, но естьне стоит тратить время на написание кода для загрузки и запуска программы установки, если я не могу определить местоположение новой версии.
В случае, если он здесь используется, это XML:
<?xml version="1.0" encoding="UTF-8"?>
<VersionConfig>
<AvailableVersion>2.0.0.0</AvailableVersion>
<ApplicationUrl>http://192.168.2.226/EPI/2.0.0.0/</ApplicationUrl>
</VersionConfig>