0

如果您愿意,我正在尝试为我的程序制作补丁系统或更新程序。我想要它做的是下载文本文件中特定形式的补丁列表。

像这样:

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 文件中的最后一个补丁匹配。最后一个补丁是版本 3,目前的启动器版本是 0。

因此,如果它不匹配,那么它应该开始一一下载补丁。从补丁 1 到补丁 3。

我认为循环语句最适合它,所以我想出了这个主意:

让它下载 PatchList.txt,然后单独读取每一行。在它读取一行后,它将拆分选项卡所在的位置,因此将有两个变量 Version 和 PatchURL。

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

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

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

4

2 回答 2

0

你说的下载是什么意思?

我会尝试这里提到的解决方案。 如何从VB中的文本文件中读取特定行

否则,我会建议对版本文件使用 XML 并对其进行反序列化。

于 2013-07-23T18:58:24.923 回答
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

于 2013-07-24T12:12:47.047 回答