VB中的修补系统

时间:2013-07-23 18:51:37

标签: vb.net patch

如果您要参加我的计划,我正在尝试修补系统或更新程序。我想要它做的是下载文本文件中特定形式的补丁列表。

像这样:

1   http://127.0.0.1:8080/patches/test1.rar
2   http://127.0.0.1:8080/patches/test2.rar
3   http://127.0.0.1:8080/patches/test3.rar

这是1和链接之间的标签。

然后我希望它检查当前启动程序或程序的版本号是否与PatchList.txt文件中的LAST补丁相匹配。最后一个补丁是版本3,此时启动器版本为0。

所以如果它不匹配那么它应该开始逐个下载补丁。从补丁1到补丁3。

我认为循环语句最适合它所以我提出了这个想法:

让它下载PatchList.txt,然后分别读取每一行。在读取一行后,它将分割为tab,因此将有两个变量Version和PatchURL。

然后它将检查版本以查看它是否与启动器版本匹配,如果没有,则它将从PatchURL下载文件并应用它,然后将启动器版本设置为当前补丁的版本,然后再次检查,如果版本号和它匹配,那么将没有更新,所以它将完成。

我不确切知道如何将其放入代码中。我已经尝试了很多年能够下载txt文件并逐行阅读但我无法做到。我尝试了很多不同的东西,从StreamReader到StringReader以及其他一些东西。

我很感激任何帮助。这对我来说非常令人沮丧。

2 个答案:

答案 0 :(得分:0)

下载是什么意思?

我会尝试这里提到的解决方案。 How to read a specific line from a text file in VB

否则,我会建议在版本文件中使用XML并反序列化它。

答案 1 :(得分:0)

如果你只想下载文件并再次阅读,那就像

一样简单
My.Computer.Network.DownloadFile("http://your_url.txt", "local_tmp_path")

如果您不想将文件保存在磁盘上但在内存中读取,可以使用以下内容:

Dim httpRequest  = DirectCast(WebRequest.Create("http://your_url.txt"), HttpWebRequest)
Dim httpResponse = DirectCast(httpRequest.GetResponse(), HttpWebResponse)

Dim line As String
Using responseStream = httpResponse.GetResponseStream(), sr = New StreamReader(responseStream)
    Do
        line = sr.ReadLine()
        If line IsNot Nothing Then
            Dim s = line.Split(new String() {" "}, StringSplitOptions.RemoveEmptyEntries)
            Dim version = s(0)
            Dim path = s(1)
            'Do something'
        End If
    Loop Until line Is Nothing
End Using

如果您尝试为您的软件实施更新系统,最好首先查看ClickOnce