Aktualizowanie programu

0

Witam,
Nie wiem do jakiego działu wstawić ten temat więc umieściłem w C# i .NET. Pisze sobie program na potrzeby domowe, gdzie mam postawiony mały serwer. Do sieci natomiast podłączonych jest kilka komputerów. Piszę program i chciałbym aby na serwerze umieszczać najnowszą wersję programu, natomiast programy na komputerach po włączeniu miały opcję sprawdzenia aktualizacji oraz ewentualnie jej pobrania. Jak się zabrać do dodania takiej funkcjonalności? SVN raczej odpada?

0

Jak się zabrać do dodania takiej funkcjonalności?

Stawiasz sobie HTTP, prosty skrypt PHP który liczy MD5 dla pliku na serwerze, klient uruchamia ten PHP, porównuje ze swoim MD5 i jak jest inne to pobiera update i odpala.

2

Tak, i jak ktoś wrzuci na serwer starszą wersję to będzie zaktualizowany do starszej.

1

Do tego nie potrzeba http i php. Można to równie dobrze zrealizować na TCP. W C# możesz porównywać numer wersji Major i Minor. Te wartości możesz ustawiać w AssemblyInfo.

0

Ja tam myślałem aby informacje o wersji programu były pobierane z danych zawartych w pliku wykonywalnym (w końcu w jakimś celu można zmieniać zawartość AssembyInfo.sc). Natomiast nie wiem jak to oprogramować aby po sprawdzeniu i wykryciu nowszej wersji sam się zaktualizował. Nie wiem czy dodać najpierw okienko ładujące, które sprawdza dostępne nowe wersje, po czym ładuje główną formatkę programu albo własnie pobiera aktualizacje.

0

Z tym, że program nie może sam siebie podmienić. Przy wykryciu nowszej wersji powinieneś uruchomić program pomocniczy (który ma podmienić pliki), a sam program główny wyłączyć. Po aktualizacji program pomocniczy odpala już nową wersję programu, a sam się zamyka.

0

Tak, i jak ktoś wrzuci na serwer starszą wersję to będzie zaktualizowany do starszej.

A jak chcesz to przeskoczyć? Mogę zmienić wersję z 1.0 na 10.0 i wywalić coś i mimo że wersja będzie wyższa to jak patrzeć na ficzury to będzie zaktualizowane w dół.
Jak się chce to każdy system aktualizacji się oszuka, a ten mój akurat nie wymaga wygibasów z nazywaniem wersji etc. . Więc twoje minusowanie mojej wypowiedzi uważam za bezsensowne.
Dodatkowo zauważ że moje zabezpieczenie pozwala też na proste zabezpieczenie przed crackowaniem. Wiem że nie jest one zbyt potężne, ale paru cienkich crackerów rozwali.

Natomiast nie wiem jak to oprogramować aby po sprawdzeniu i wykryciu nowszej wersji sam się zaktualizował. Nie wiem czy dodać najpierw okienko ładujące, które sprawdza dostępne nowe wersje, po czym ładuje główną formatkę programu albo własnie pobiera aktualizacje.

No możesz to zrobić jak chcesz, generalnie to ma to sprawdzić z jakimś PHP skryptem czy jest nowsza, jak jest to pobrać ją obok siebie, uruchomić a samego siebie wyłączyć. Jak nowa wersja się włączy to powinna się przekopiować w miejsce starego programu i jeszcze raz włączyć oryginalny plik (teraz już podmieniony). Jak nowa wersja wykryje plik typu 'update.exe' to powinna go wywalić i aktualizacja gotowa...
A rozmyślania w stylu 'czy robić to na oddzielnej formie' są bezsensowne, bo to zależy od ciebie... Możesz to zrobić jak chcesz, większego znaczenia dla działania to nie ma. Ja w swoich programach które się aktualizują zazwyczaj sprawdzam w czasie gdy jest splashscreen i jeżeli jest update to wywalam 'downloading update' i aktualizuję. Szybkie, bezstresowe i użyszkodnik niczego nie zepsuje.

0

Do tego nie potrzeba http i php. Można to równie dobrze zrealizować na TCP.
Ja bym jednak użył normalnie HTTP.
Połączenia TCP na różnych dziwnych portach mogą być blokowane, filtrowane — a HTTP działa wszędzie.

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