0

(たとえば)にあるフォルダー名を取得する方法を探していますhttp://example.com/download/"foldername here"

この理由は、まだ .zip を持っていない場合は常に .zip をダウンロードする ac# プログラムがあるためですが、現在は新しいバージョンをダウンロードしません。

例: 現在、 からダウンロードされ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 に答える