Autoupdate w vb.net

0

Cześć!

Piszę sobie prosty autoupdate do swojej aplikacji.
Ogólnie pomysł wygląda tak: na serwerze mam plik wersja.txt a w nim numer wersji np. 4, w kodzie mam zmienną wersja którą aktualizuję za każdą zmianą w programie. I teraz w FormLoad za pomocą WebClienta i DownloadString ściągam numer wersji z pliku na serwerze.

wersja_na_kompie=WebClient.DownloadString("adres/wersja.txt")

Porównuję sobie ten ściągnięty numer z tym co jest w kodzie aktualnej wersji, jeśli jest wyższy to pojawią się komunikat, że jest do pobrania nowa wersja. Jeśli użytkownik zatwierdzi to aktualna nazwa programu (uruchomionego) jest zmieniana (a raczej rozszerzenie na .old)

File.Move(Application.StartupPath & "\" & "NazwaPliku.exe", Application.StartupPath & "\" & "NazwaPliku.old")

WebClientem za pomocą DownloadFile ściągam nową wersję i uruchamiam:

 System.Diagnostics.Process.Start(Application.StartupPath & "\" & "NazwaPliku.exe")

No i to wszystko działa, chciałbym jeszcze tylko usunąć plik .old i zamknąć starą aplikację.
W zdarzeniu WebClienta DownloadFileCompleted robię tak:

File.Delete(Application.StartupPath & "\" & "WindowsApplication1.old")
Close()           

No i wywala error przy próbie usunięcia pliku, że dostęp do niego jest wzbroniony. No i nic dziwnego, bo próbuję usunąć uruchomioną aplikację. Nie wiem czy jest jakiś sposób na autoupdate bez dodatkowych dll albo osobnych programów? Myślałem, żeby może w on Load sprawdzać czy są jakieś pliki .old i jak tak to usuwać, po prostu nowy program przy odpalaniu by je usuwał, ale to też coś nie idzie...

Ktoś coś podobnego może pisał? Jakieś rady?

0

Zrob w to w taki sposob: dodaj do nowe aplikacji parametr np /deleteOnly i zaraz po sciagnieciu nowej wersji aplikacji odpalaj ja z tym parametrem. W srodku oczywisci daj obsluge tego parametru by kasowal plik sciagajacy update'a i zamykal Od razu aplikacje :)

0

Dzięki wielkie! :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1