0

我正在寻找一种方法来获取位于(例如)上的文件夹名称http://example.com/download/"foldername here"

这样做的原因是因为我有一个 ac# 程序,如果你还没有它,它总是下载一个 .zip,但目前它不会下载新版本。

示例:当前它从 下载http://example.com/download/1.0/file.zip,如果您已经有它检查的文件夹,它不会下载它,但如果您有该文件夹,它不会从 下载http://example.com/download/2.0/file.zip,其中包含新版本。我制作了一个包含当前版本的文件,但是如何让我的程序根据最新版本所在的文件夹检查该文件?

编辑:我修改了我的代码,所以它version.txt首先下载一个文件并读取它的内容,其中包含最新版本的下载。

代码:

if (radUseFile.Checked)
{
//get latest version on website
WebClient modver = new WebClient();
modver.UseDefaultCredentials = true;
modver.DownloadFile("http://www.example.com/download/version.txt", tempdir _
+ "version.txt");
using (StreamReader ver = new StreamReader(tempdir + "version.txt"))
{
    siteversion = ver.ReadToEnd();
}
File.Delete(tempdir + "version.txt");
if (Directory.Exists(folder))
{
    if (File.Exists(folder + "\\version.txt"))
    {
        using (StreamReader sr = new StreamReader(folder + "\\version.txt"))
        {
            latestversion = sr.ReadToEnd();
        }
        if (latestversion != siteversion)
        {
            uptodate = false;
        }
        else
        {
            uptodate = true;
        }
    }
}
else
{
    uptodate = false;
}
if (!uptodate)
{
    //download and extract the files
    WebClient downloader = new WebClient();
    label4.Text = "Downloading full client. May take a while";
    this.Update();
    downloader.UseDefaultCredentials = true;
    downloader.DownloadFile("http://www.example.com/download" + siteversion _
+ "/zipfile.zip", templocation + "zipfile.zip");

    label4.Text = "Extracting...";
    Shell32.Shell sc = new Shell32.Shell();
    Directory.CreateDirectory(tempdir);
    Shell32.Folder output = sc.NameSpace(tempdir);
    Shell32.Folder input = sc.NameSpace(tempdir + "zipfile.zip");
    output.CopyHere(input.Items(), 4);

    label4.Text = "Cleaning up...";
    File.Delete(tempdir + "zipfile.zip");

    new Microsoft.VisualBasic.Devices.Computer().FileSystem.CopyDirectory(tempdir,_
folderlocation, true);

    Directory.Delete(tempdir, true);

    uptodate = true;
}
}
else
{
uptodate = true;
}

这暂时有效,但我很确定这段代码可以改进,或者关于如何采用最新版本的整个方法

4

1 回答 1

0

您可以有一个文本文件,其中包含最新版本号以及从何处下载它,位于永久位置,例如http://example.com/download/latestversion.txt. 然后使用WebClient.DownloadString检索该文件,并根据文件的内容采取适当的措施。

于 2013-08-31T22:22:03.940 回答