using System;
using System.Windows.Forms;
using System.Net;
using System.Diagnostics;
using System.IO;
using System.ComponentModel;
namespace updater
{
public partial class Main : Form
{
WebClient webclient = new WebClient();
public Main()
{
InitializeComponent();
}
private void Main_Load(object sender, EventArgs e)
{
Download_new_version();
}
private void Download_new_version()
{
try
{
webclient.DownloadFileCompleted += new AsyncCompletedEventHandler(Download_Completed);
webclient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
webclient.DownloadFileAsync(new Uri(Uri.EscapeUriString("http://www.google.pl/plik.exe")),"plik_new.exe");
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar.Value = e.ProgressPercentage;
}
private void Download_Completed(object sender, AsyncCompletedEventArgs e)
{
if (!IsProcessOpen("Plik"))
{
try
{
File.Delete("plik.exe");
}
catch (SystemException systexc)
{
MessageBox.Show(systexc.ToString());
}
if (!File.Exists("plik.exe"))
{
try
{
File.Move("plik_new.exe", "plik.exe");
System.Diagnostics.Process.Start("plik.exe");
this.Close();
}
catch (SystemException systexc)
{
MessageBox.Show(systexc.ToString());
}
}
else { }
}
else { }
}
public bool IsProcessOpen(string name)
{
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains(name))
{
return true;
}
}
return false;
}
}
}
Taki mały programik który pobiera nowa wersje innego programu, usuwa stara i uruchamia nowa :). Problem z tym ze na progres barze nie wyświetla się postęp pobierania. Czy to wina tego ze pobierany program zajmuje tylko ok. 120kb, a łącze za szybkie?
ustawienia progressbar'u:
min: 0
max: 100
step: 10
style: blocks