Co jakiś czas autorzy programów udostępniają ich nowe wersje. Jako ci autorzy, chcielibyśmy, aby użytkownicy mogli sprawdzić, czy ich programy są aktualne. W tym artykule opiszę jak to zrobić w C# dla platformy .NET, zakładając, iż gdzieś na jakimś serwerze możemy umieszczać informację na temat aktualnej wersji oprogramowania.
Aby program mógł sprawdzić, czy istnieje aktualna wersja oprogramowania trzeba gdzieś w internecie umieścić informację na jej temat. Dla potrzeb tego artykułu przyjmuję, iż informacja zawarta będzie w pliku tekstowym o nazwie "wersja.txt" umieszczonym na serwerze pod adresem : "http://www.miotk.eu/". W treści pliku "wersja.txt" umieszczamy aktualną wersję programu, np. "1.12".
Ponieważ sprawdzanie wersji mogłoby doprowadzić do chwilowego "zawieszenia" się naszego programu, całość wykonamy więc w oddzielnym wątku. Upewnijmy się, iż istnieje przestrzeń nazw "Threading" w naszym programie. Jeżeli nie to dopiszmy:
using System.Threading;
Ponieważ będziemy korzystali z sieci i internetu upewnijmy się, iż przestrzenie nazw "Net" oraz "IO" również będą używane:
using System.Net;
using System.IO;
Definiujemy stałą w której będziemy przechowywali aktualną wersję programu:
private const string wersja = "1.12";
Piszemy funkcję sprawdzającą wersję programu:
private void sprawdz_wersje() {
WebRequest rq = WebRequest.Create("http://www.miotk.eu/wersja.txt");
rq.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse rp = (HttpWebResponse)rq.GetResponse();
Stream st = rp.GetResponseStream();
StreamReader sr = new StreamReader(st);
string odpowiedz = sr.ReadToEnd();
if (wersja != odpowiedz)
MessageBox.Show("Nowsza wersja tego oprogramowania jest już dostępna.");
else
MessageBox.Show("Masz najnowszą wersję oprogramowania.");
}
Nie wdając się zbytnio w szczegóły, sięgamy tutaj do pliku "wersja.txt" umieszczonego na serwerze, odczytujemy jego zawartość i porównujemy do stałej "wersja". Jeżeli się zgadza, to wersja programu jest aktualna, jeżeli nie, to jest starsza (oczywiście przy założeniu, że będziemy dbali o wersję programu umieszczoną na serwerze).
Teraz aby wszystko zadziałało musimy jakoś funkcję naszą wywołać. Przykładowo, na wciśnięcie przycisku:
private void button1_Click(object sender, EventArgs e) {
Thread w_wersja = new Thread(new ThreadStart(this.sprawdz_wersje));
w_wersja.IsBackground = true;
w_wersja.Start();
}
w nowym wątku uruchamiamy nasz proces sprawdzania wersji.