[C] Patchowanie programu, jego nowa wersja

0

Witam,
Dzisiaj cos ciekawszego, chcialbym poruszyc kwestie patchowania programu gdy juz napisze sie jego nowa wersje a poprzednia juz funkcjonuje u klientow. Sprawa wyglada nastepujaco, klient pobiera aplikacje, ktora jest serwerem ona dziala sobie i kazdy jest zadowolony. Teraz przykladowo ja ulepszam program, wypuszczam nowa wersje a on ma nadal stara.

Moje pomysly:

  1. Sciagam i uruchamiam u niego plik, ktory niszczy poprzednia aplikacje, zabija ja, wymazuje z rejestru itp, a nastepnie na to miejsce z troche inna nazwa laduje nowa ulepszona aplikacja.

  2. Stara aplikacja nigdy sie niezmienia, a sciagane sa tylko nowe "moduly", ktore pomagaja jej lepiej funkcjonowac.

To tyle na ten moment wymyslilem, czekam na wasze pomysly.

Najlepiej by bylo to wygodne i pewne (!) wiec wystarczy uruchomic nowa wersje u klienta i tyle... po sprawie, starej NIE MA a nowa. Mozna to lepiej rozwiazac niz w punkcie pierwszym?

0

Wydaje mi się że można to robić w taki sposób iż, podmieniamy dll, na nowe, z nowymi, zoptymalizowanymi funkcjami. Zmieniamy exe, jakieś confy itp i td. Zmiana nie musi dotknąć wszystkich plików, wymieniamy tylko niektóre. Oczywiście możliwość upgredu aplikacji musimy założyć już na etapie projektowania, musi zachodzić zgodność wsteczna (?).

Co to ma do C? Bardziej do Inżynier... Oprogramowania pasuje...

0

No tez prawda, ale problem w tym ze program jest w 1 pliku. I tu pojawia sie problem z zabiciem samego siebie, dlatego nowy program musialby miec formulke zabicia starej wersji, ale zeby odpalala sie tylko za 1 razem dzialania programu.

Mozna to zrobic za pomoc pobrania aktualnej nazwy pliku, (tylko jak :P) i wtedy jesli nazwa nazywa sie instalka to instaluje i kasuje stara wersje a jak != instalka to po prostu odpala sie

0
Orbitron napisał(a)

No tez prawda, ale problem w tym ze program jest w 1 pliku. I tu pojawia sie problem z zabiciem samego siebie, dlatego nowy program musialby miec formulke zabicia starej wersji, ale zeby odpalala sie tylko za 1 razem dzialania programu.

Mozna to zrobic za pomoc pobrania aktualnej nazwy pliku, (tylko jak :P) i wtedy jesli nazwa nazywa sie instalka to instaluje i kasuje stara wersje a jak != instalka to po prostu odpala sie

Mógłby program odpalać ściągniętą aplikację z parametrem, który zawierał by uchwyt do aplikacji odpalającej.

0
abc napisał(a)

Mógłby program odpalać ściągniętą aplikację z parametrem, który zawierał by uchwyt do aplikacji odpalającej.

Troche niebardzo rozumiem, co tym zyskamy, o co chodzi.

0

zabic samego siebie i potem cos zrobic to sie nie da:) trzeba zrobic osobny mikroprogramik to tego celu. aplikacja ktora sciagnela swoj update odpala ten programik, on ja zabija i odpala update zamiast niej.

0
quetzalcoatl napisał(a)

zabic samego siebie i potem cos zrobic to sie nie da:) trzeba zrobic osobny mikroprogramik to tego celu. aplikacja ktora sciagnela swoj update odpala ten programik, on ja zabija i odpala update zamiast niej.

Dokładnie takie rozwiązanie jest stosowane bardzo często. Chodzi o to, że wraz ze swoim programem dajesz również dodatkowy mały programik (przeważnie o takiej samej nazwie jak główny plik exe tyle że z _ na początku)który nie służy do czego innego jak odpalania głównego programu i sprawdzania czy są dostępne aktualizacje. Użytkownik zawsze uruchamia program główny odpalając ten mały programik. Algorytm działania takiego programiku jest bardzo prosy:

  1. sprawdz czy są dostępne aktualizacje
  2. jeśli dostępne to sciągnij i zastąp wszystkie stare pliki nowymi (w tym np. główny exe)
  3. odpal główny exe.

Metoda jest prosta i łatwa do zaimplementowania.

0

Dokładnie takie rozwiązanie jest stosowane bardzo często.
Ciekawe bo raczej się z nim nie spotykałem. Najczęściej spotykane przeze mnie rozwiązania to:

  • oddzielny program do update'u - sprawdza czy są aktualizacje, zamyka wszystkie egzemplarze programu i podmienia.
  • program sam sprawdza czy są aktualizacje, jeżeli są to ściąga /albo w formie updatera albo samych podmienianych plików/, zamyka się uruchamiając program do aktualizacji, ten zaś po skończeniu roboty znów odpala właściwą aplikację.
0

ookeeej.. a czym to sie rozni w swojej idei od tego o czym pisalem ja i 'Gosc' ?:)

0

Ok a wiec:

Sciagam plik w konkretne miejsce na zdalny komp, ktory bedzie updaterem.
Teraz w programie glownym implementuje opcje odpalania komenda tego pliku.

Teraz updater, zabija proces glowny, sciaga nowa wersje zdalnie z netu, odczekuje 10.000 ms az sie sciagnie i go odpala.... i tyle? : D fajnie bedzie jatka

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