делаем updater на С#

всем привет с вами Sergey_2000 сегодня я вам покажу/расскажу как написать Updater
на языке программирования C#</p><p>Для начала Зайдем в Microsoft Visual Studio 2010
(я использую Microsoft Visual Studio 2010 Ultimate)

Нажимаем:

1) Файл(если английская версия жмем File)(или же нажимаем сразу же не главной кнопку "Создать Проект"(Create Project)
2) Проект(Project)
3) Выбираем Visual C# -> Windows -> Приложение Windows Forms

на форму кидаем:
2 Кнопки(2 buttons)
1 Прогресс Бар(1 progress bar)
2 label
1 Групп Бокс(1 grup box)
1 Веб Браузер(1 Web Browser)
Нажимаем на форме: Правая Кнопка Мыши -> Перейти к исходному коду
после:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
Пишем:
using System.Net;
using System.IO;
После:
public partial class Form1 : Form
{
Пишем:
System.Net.WebClient webClient = new System.Net.WebClient();//Определяем&nbsp;
Нажимаем по кнопке "скачать" два раза
пишем такой код:

//Скачивание файла
Uri uri = new Uri("http://dark-soft.ru/фаилл.rar");//для примера ссылка на фаил))))))))
webClient.DownloadFileAsync(uri, "фаилл.rar");//сохраняем фаил под именем
//Следующей строчкой задаем заполнение и привязку к действию
webClient.DownloadProgressChanged += new System.Net.DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
webClient.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(webClient_DownloadFileCompleted);
Ниже:
//Ниже задаем заполнение progressBar и инфы о фаиле:
void webClient_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
{
label1.Text = String.Format("Загружено: {0} Кбайт / {1} Кбайт", e.BytesReceived / 1024, e.TotalBytesToReceive / 1024);//Выводим в лейбл информацию о процессе загрузки
progressBar1.Value = e.ProgressPercentage;// заполняем
}

//Теперь зададим действие при завершению загрузки фаила:
void webClient_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
MessageBox.Show("Файл скачан!");//по оканчанию загрузки выводим сообщение
progressBar1.Value = 0;//сброс progressBar2
label1.Text = "";// сброс лейбл
}
Проверка на обновление:

Стираем вот этот код:
class VersionChecker
{
}
место него вставляем вот этот:
class VersionChecker
{
public bool NewVersionExists(string localVersion, string versionFromServer)
{
Version verLocal = new Version(localVersion);
Version verWeb = new Version(versionFromServer);
return verLocal - verWeb;
}
}
--В Form_Load(двойной клик на форме) пишем:
/*------Определение обновлений-------*/
VersionChecker verChecker = new VersionChecker();
string ServerVersion = "http://dark-soft.ru/version.ini";
FileStream fs = new FileStream(@"version.ini", FileMode.Open);
StreamReader sr = new StreamReader(fs, Encoding.Default);
string localVersion = sr.ReadToEnd();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ServerVersion);// Веб запрос к нашему серверу
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Ответ сервера
using (StreamReader reader = new StreamReader(response.GetResponseStream()))// Используем чтение потока данных
{
ServerVersion = reader.ReadToEnd();// Пытаемся получить версию сервера, приобразуя в Int32
/*Сравниваем*/
if (verChecker.NewVersionExists(localVersion, ServerVersion))
label2.Text += "Доступна новая версия";//если версии отличаются
else
label2.Text += "У вас самая последняя версия";//если версии одинаковые
}
fs.Close();//закрываем фаил для перезаписи версий
--Теперь организуем перезапись version.ini
--В webClient_DownloadFileCompleted дописываем
////////////Перезаписываем version.ini//
string localVersionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "version.ini");
string ServerVersionFile = "http:\\dark-soft/version.ini";
if (File.Exists(localVersionFile))
{
string localVersion = null;
string ServerVersion = null;
using (StreamReader sr = File.OpenText(localVersionFile))
localVersion = sr.ReadLine(); //Предположим у тебя одна строка в файле
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ServerVersionFile);// Веб запрос к нашему серверу
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Ответ сервера
using (StreamReader reader = new StreamReader(response.GetResponseStream()) // Используем чтение потока данных
ServerVersion = reader.ReadToEnd();
if (!string.IsNullOrWhiteSpace(localVersion))
{
using (StreamWriter sw = new StreamWriter(localVersionFile))
sw.Write(ServerVersion);

вот и всё если вы всё делали как я то у вас должно получится
если не получилось то допустили ошибку
но тут всё подробно описано

исход выложу потом