Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

AutoUpdater - szybkie aktualizowanie programu


ArcheR.

Rekomendowane odpowiedzi

Opublikowano

955001442082799914647.png


 


Zapewne nie raz mieliście problem z tym, że nowe aktualizacje waszych aplikacji trzeba było pobierać ręcznie (też miałem z tym problem  xD), jednak to już przeszłość  :lenny: .


Stworzyłem Auto Updater, który sprawdza, czy nie wyszła nowa wersja.


 


Pewnie zastanawiacie się jak to działa.


Program po wskazanej ścieżce do pliku NewestVersion.xml (link) porówna wersję zapisaną w owym pliku, z wersją zapisaną w pliku na komputerze; jeśli wersja posiadanej aplikacji jest niższa, wtedy zostaną pobrane najnowsze pliki.


 


We własnej aplikacji należy wywołać proces AutoUpdater.exe (najlepiej na początku).


 


Download: https://mega.nz/#!6pdHXarA!9vExR0BmuQUpkTCDGvQ-DrZieuIjX3nwP8ZHDC-bezE


Skan: https://www.virustotal.com/pl/file/611896ffa31fb20f529b80d35e8e71c26e39577cde6252955a09ab1f0c4f6052/analysis/1442507692/


 


Wszelkie wątpliwości powinna rozwiać załączona instrukcja:


 




////PLIKI:
1)AUSetting.xml
Plik z wersją aktualnie posiadanej aplikacji, ADRESEM URL do pliku NewestVersion.txt i opcją wyświetlania konsoli.
Zawartość:
<?xml version="1.0" encoding="ISO-8859-2" standalone="true"?>
<AutoUpdater>
<version>Wersja programu</version>
<data_url>Ścieżka do pliku z najnowszą wersją programu</data_url>
<shut_console>Wyświetlanie konsoli: 1 = autowyłączanie, 0 = oczekiwanie na przycisk</shut_console>
</AutoUpdater>


3)NewestVersion.xml (na hostingu).
Plik zawierający numer najnowszej wersji i linki plików i folderów do pobrania.
Zawartość:
<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<AutoUpdater>
<version>Numer najnowszej wersji</version>
<folder>Nazwa folderu, który ma zostać stworzony</folder>
<plik>
    <url>Link do pliku</url>
    <nazwa>Nazwa pliku, pod którą zostanie zapisany nowy plik</nazwa>
</plik>
</AutoUpdater>


////INSTALACJA:
1)Plik AUSetting.xml umieszczamy w tym samym folderze co AutoUpdater.exe, natomiast plik NewestVersion.xml hostujemy na stronie www.
2)Pliki muszą zostać uzupełnione według powyższego schematu.
3)We własnej aplikacji uruchamiamy AutoUpdater.exe, a reszta wykona się sama .


////PRZYKŁADOWO UZUPEŁNIONE PLIKI:
1)AUSetting.xml
<?xml version="1.0" encoding="ISO-8859-2" standalone="true"?>
<AutoUpdater>
<version>1.1</version>
<data_url>http://www.mpcgenerator.cba.pl/NewestVersion.xml</data_url>
<shut_console>1</shut_console>
</AutoUpdater>


2)NewestVersion.xml (na hostingu)
<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<AutoUpdater>
<version>1.1</version>
<folder>TEST</folder>
<folder>TEST2</folder>
  <plik>
<url>http://www.mpcgenerator.cba.pl/test.txt</url>
<nazwa>TEST/test.txt</nazwa>
  </plik>
  <plik>
<url>http://www.mpcgenerator.cba.pl/test2.txt</url>
<nazwa>test2.txt</nazwa>
  </plik>
</AutoUpdater>


//FAQ
1.Jak zmienić najnowszą wersję?
Wystarczy w pliku NewestVersion.xml (online) zmienić numer wersji w pierwszym wierszu, a następnie podać link(i) do nowych plików .

2.Jak umieścić plik NewestVersion.xml w sieci?
Wystarczy stworzyć darmową stronę (np. na cba.pl) i załączyć na niej plik NewestVersion.txt.

3.Jak uruchomić proces Auto Update'ra w C#?
Wystarczy dodać linię kodu:
Process.Start("AutoUpdater.exe");


FAQ:


1.Jak zmienić najnowszą wersję?


Wystarczy w pliku NewestVersion.txt (online) zmienić numer wersji w pierwszym wierszu, a następnie podać link(i) do nowych plików ;).


 


2.Jak umieścić plik NewestVersion.txt w sieci?


Wystarczy stworzyć darmową stronę (np. na cba.pl) i załączyć na niej plik NewestVersion.txt.


 


3.Jak uruchomić proces Auto Update'ra w C#?


Wystarczy dodać linię kodu:



Process.Start("AutoUpdater.exe"):

Propozycję i błędy zgłaszajcie w postach.


Opublikowano

Zapomniałeś napisać w czym to zrobione (domyślam się, że c#). Przede wszystkim powinieneś udostępnić kod (zamiast potraktować obfuskatorem) - jak coś ma obsługiwać moja apkę, to muszę wiedzieć, że nie ma błędów i moi userzy są bezpieczni - bez tego nawet nie radziłbym odpalać. Jak coś operuje na moich plikach to musi być albo certyfikowana apką z zaufanego źródła albo open source.

 

Mam coś takiego w ahk (działa na podobnej zasadzie + robi folder z backupem), ale przy dużej ilości plików do podmiany robi się średnio wygodne. Jakby udało Ci się zrobić coś co nie wymaga listowania plików w NewestVersion.txt byłoby super (porównywanie katalogów). No i przydałby się jakiś system modyfikowania plików .ini / .cfg - bo ich raczej się nie podmienia bo user traci swoje ustawienia i musi konfigurować od początku.

 

Jeszcze pytania:

  • Czy updater zamyka i ponownie uruchamia po updacie wszystkie pliki, które są w momencie rozpoczęcia uruchomione?
  • Czy updater potrafi obsłużyć sytuację, gdy ktoś pominie któryś z updatów? Np user ma wersję 1.2 i uruchamia apkę jak już jest wersja 1.5 (wiadomo - zawsze można podmieniać z każdym updatem wszystkie pliki, ale nie o to chodzi ;) )?
  • Czy da się za pomocą updatera skasować niepotrzebne już pliki?
  • Jak program obsługuje błędy (np. przerwane połączenie, błąd przy pobieraniu itp)? Działa na zasadzie transakcji (ACID) czy na zasadzie - "a nuż się uda"? ;)

 

Bez wypisanych wyżej ficzerów apka nie nadaje się do wieloplikowych programów (przez to u siebie wróciłem póki co do ręcznych updatów - łatwo się pomylić i stracić integralność), choć do nieskomplikowanej struktury plików jest w miarę ok (ale trzeba mieć awaryjnie udostępniony zwykły download nowej wersji).

 

Ogólnie to czekam na udostępnienie kodu - bez tego ani rusz  ;) Temat trudniejszy niż się z pozoru wydaje, ale można się mnóstwo nauczyć.

 

PS

Linki w przykładach nie działają.

Btw - muszę kiedyś przejrzeć gotowe rozwiązania - pewnie jest już coś fajnego.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

Updater obsługuje wypakowywanie .zip, .rar, dodawanie folderów lub przynajmniej tworzenia pliku w którym zapisze przebieg akcji updatera?

Updater może zostać sam zaktualizowany? Pytam się z czystej ciekawości.

8LTfBGw.jpg

Opublikowano

Po jakiego ... robić te wszystkie pliki skoro można po prostu przekazać te dane przy starcie procesu?

 

Process.Start("AutoUpdater.exe", "wersja sciezkaurl")

 

 

Do tego popieram wszystkie uwagi poprzedników.

Opublikowano

Zapomniałeś napisać w czym to zrobione (domyślam się, że c#). Przede wszystkim powinieneś udostępnić kod (zamiast potraktować obfuskatorem) - jak coś ma obsługiwać moja apkę, to muszę wiedzieć, że nie ma błędów i moi userzy są bezpieczni - bez tego nawet nie radziłbym odpalać. Jak coś operuje na moich plikach to musi być albo certyfikowana apką z zaufanego źródła albo open source.

 

Mam coś takiego w ahk (działa na podobnej zasadzie + robi folder z backupem), ale przy dużej ilości plików do podmiany robi się średnio wygodne. Jakby udało Ci się zrobić coś co nie wymaga listowania plików w NewestVersion.txt byłoby super (porównywanie katalogów). No i przydałby się jakiś system modyfikowania plików .ini / .cfg - bo ich raczej się nie podmienia bo user traci swoje ustawienia i musi konfigurować od początku.

 

Jeszcze pytania:

  • Czy updater zamyka i ponownie uruchamia po updacie wszystkie pliki, które są w momencie rozpoczęcia uruchomione?
  • Czy updater potrafi obsłużyć sytuację, gdy ktoś pominie któryś z updatów? Np user ma wersję 1.2 i uruchamia apkę jak już jest wersja 1.5 (wiadomo - zawsze można podmieniać z każdym updatem wszystkie pliki, ale nie o to chodzi ;) )?
  • Czy da się za pomocą updatera skasować niepotrzebne już pliki?
  • Jak program obsługuje błędy (np. przerwane połączenie, błąd przy pobieraniu itp)? Działa na zasadzie transakcji (ACID) czy na zasadzie - "a nuż się uda"? ;)

 

Bez wypisanych wyżej ficzerów apka nie nadaje się do wieloplikowych programów (przez to u siebie wróciłem póki co do ręcznych updatów - łatwo się pomylić i stracić integralność), choć do nieskomplikowanej struktury plików jest w miarę ok (ale trzeba mieć awaryjnie udostępniony zwykły download nowej wersji).

 

Ogólnie to czekam na udostępnienie kodu - bez tego ani rusz  ;) Temat trudniejszy niż się z pozoru wydaje, ale można się mnóstwo nauczyć.

 

PS

Linki w przykładach nie działają.

Btw - muszę kiedyś przejrzeć gotowe rozwiązania - pewnie jest już coś fajnego.

Program został napisany w C#. Uznałem, że dawanie source jest zbędne, więc pozwoliłem sobie użyć obfuscatorka.

Aktualnie z powodu szkoły nie planuję robić aktualizacji, jednak możliwe, że w weekendy mógłbym analizować propozycje i wcielać je w życie.

Zaznaczam, iż program nie operuje na plikach, a jedynie je pobiera.

Program nie uruchamia nowych plików, ale wyświetla messageboxa, że została pobrana nowa wersja aplikacji i należy ją zrestartować.

Program porównuje aktualną wersję aplikacji z numerem podanym w pliku NewestVersion.txt, zatem pomija wcześniejsze update'y.

Aktualnie program nie posiada opcji usuwania plików. Nie wydaje mi się to zbyt bezpieczne, więc chyba tak zostanie.

W przypadku gdy np. zostanie przerwane połączenie, to program, przy kolejnym uruchomieniu rozpocznie pobieranie od nowa.

Linki są zmyślone, nie mają prawa działać :D.

 

Updater obsługuje wypakowywanie .zip, .rar, dodawanie folderów lub przynajmniej tworzenia pliku w którym zapisze przebieg akcji updatera?

Updater może zostać sam zaktualizowany? Pytam się z czystej ciekawości.

Aktualnie nie obsługuje rozpakowywania i tworzenia folderów, myślę jednak, że to tylko kwestia czasu.

Chodzi o logi? Oczywiście mogę je dodać.

Hahaha, zapomniałem o autoupdaterze autoupdatera lel xD.

 

Po jakiego ... robić te wszystkie pliki skoro można po prostu przekazać te dane przy starcie procesu?

 

Process.Start("AutoUpdater.exe", "wersja sciezkaurl")

 

 

Do tego popieram wszystkie uwagi poprzedników.

xD

Opublikowano

Nic nowego Szymek nie napisałeś, zero progresu  :((  .

Rozumiem, że pliki tekstowe nie dorównują xml, ale to wszystko dla ułatwienia.

Tak się spytam (nie odbieraj tego źle).

Co Ci ułatwia plik tekstowy? Wolniejszy dostęp czy cięższe pobieranie zmiennej? Naprawdę zastanów się nad czymś lepszym typu json czy xml.

No i wykonaj ten autoupdater autoupdatera :D.

8LTfBGw.jpg

Opublikowano

Tak się spytam (nie odbieraj tego źle).

Co Ci ułatwia plik tekstowy? Wolniejszy dostęp czy cięższe pobieranie zmiennej? Naprawdę zastanów się nad czymś lepszym typu json czy xml.

No i wykonaj ten autoupdater autoupdatera :D.

Nie ułatwia mi, a użytkownikom mojego programu, mogliby się z xml nie połapać xD.

Będzie autoupdater updatera :D.

Robię nową wersję, już mam dodawanie folderów.

Możliwe, że wieczorem dodam nową wersję.

 

 

@KrzywyJP dobrze wiedzieć, a gdzie ten spam niby??

Opublikowano

Bardzo proszę o zaprzestanie spamowania tym gównem w statusach i kasowania komentarzy z prośbą o to. Bardzo dziękuję i pozdrawiam.

Opublikowano

Przecież napisanie AutoUpdatera to nie więcej niż 50 linijek (pomijając pozycjonowanie menu, chociaż w c# i tak robi się to metodą WYSWIG).

Po co ktoś kto pisze projekt który wymaga auto-aktualizacji miał by korzystać z twojego "dzieła" skoro napisanie własnego AutoUpdater'a nie zajmie mu więcej niż 10 min. (Chyba że ktoś pisze pod C++)

 

Edit.

Zapewne nie raz mieliście problem z tym, że nowe aktualizacje waszych aplikacji trzeba było pobierać ręcznie (też miałem z tym problem  ), jednak to już przeszłość   .

najlepsze:)

Opublikowano

Program został napisany w C#. Uznałem, że dawanie source jest zbędne, więc pozwoliłem sobie użyć obfuscatorka.

Aktualnie z powodu szkoły nie planuję robić aktualizacji, jednak możliwe, że w weekendy mógłbym analizować propozycje i wcielać je w życie.

Zaznaczam, iż program nie operuje na plikach, a jedynie je pobiera.

Program nie uruchamia nowych plików, ale wyświetla messageboxa, że została pobrana nowa wersja aplikacji i należy ją zrestartować.

Program porównuje aktualną wersję aplikacji z numerem podanym w pliku NewestVersion.txt, zatem pomija wcześniejsze update'y.

Aktualnie program nie posiada opcji usuwania plików. Nie wydaje mi się to zbyt bezpieczne, więc chyba tak zostanie.

W przypadku gdy np. zostanie przerwane połączenie, to program, przy kolejnym uruchomieniu rozpocznie pobieranie od nowa.

Linki są zmyślone, nie mają prawa działać :D.

 

Czyli na kod nie ma co liczyć? To już M$ bardziej otwarty :D

Pobieranie i podmienianie plików to jakby nie patrzeć operowanie na plikach (nie mówię o modyfikacji) ;)

Co do ostatniego - aaa, czyli to są przykłady linków, a nie linki z przykładami :D W takim razie wrzuć je w <> żeby nie robić zmyłki.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

Przecież napisanie AutoUpdatera to nie więcej niż 50 linijek (pomijając pozycjonowanie menu, chociaż w c# i tak robi się to metodą WYSWIG).

Po co ktoś kto pisze projekt który wymaga auto-aktualizacji miał by korzystać z twojego "dzieła" skoro napisanie własnego AutoUpdater'a nie zajmie mu więcej niż 10 min. (Chyba że ktoś pisze pod C++)

 

Edit.

Zapewne nie raz mieliście problem z tym, że nowe aktualizacje waszych aplikacji trzeba było pobierać ręcznie (też miałem z tym problem  ), jednak to już przeszłość   .

najlepsze:)

Nie zmuszam nikogo do używania tego programu.

No tak, ten cytat to niezły ubaw.

 

Czyli na kod nie ma co liczyć? To już M$ bardziej otwarty :D

Pobieranie i podmienianie plików to jakby nie patrzeć operowanie na plikach (nie mówię o modyfikacji) ;)

Co do ostatniego - aaa, czyli to są przykłady linków, a nie linki z przykładami :D W takim razie wrzuć je w <> żeby nie robić zmyłki.

Napisałem w pierwszym poście :p.

 

Btw. odnoszę wrażenie, że zebrali się tu sami hejterzy mojej osoby, a nie programu, więc może ktoś inny się wypowie?

Opublikowano

@ArcheR.

Nie hejterzy tylko ludzie którzy mają jakieś pojecie o programowaniu i wiedzą że żeby pobrać z sieci i zapisać plik na komputerze wystarczy dokładnie jedna klasa (niekiedy 2) i do tak stworzonego programu wystarczy dodać ze jest to "AutoUpdater" i gotowe. Napisz coś co będzie reprezentowało jakiś poziom choćby na przykład Pasjansa a nie wstawiaj tu jakieś dziadostwo "byle coś wstawić".

 

Nie dziwię się że HansKlos cię jedzie, jak można powiedzieć ze odebrałeś mu tytul POTM.

Gościu się napracował i przegrał z jakimś bublem którego działanie można oprzeć na trzech zagnieżdżonych pętlach z kilkoma warunkami if.

 

 

 

No tak, ten cytat to niezły ubaw.

 

 

No jest niezły ubaw, jak napisałem rozwiązanie tego problemu można zawrzeć w kilku linijkach kodu wiec nikogo nie zbawiłeś tym programem wbrew temu co napisałeś na początku tego tematu.

Opublikowano

@bb166

Nie jadę ArcheR.a - wręcz staram się być miły  ;)

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

Nowa wersja:
Download: https://mega.nz/#!q01WBQjR!5_KfcbeEHko3Z83i0PqNl05KpyC50DDZ4XH9krgFGlE
Skan: https://www.virustotal.com/pl/file/7fd1ef2fd4c08a02ef80692e93179a4e720f2e5ad16e49ed6ed8a160e399d806/analysis/1442168344/
 
Dodałem: możliwość dodawania folderów, autoupdater autoupdatera, logi, przykładowe linki działają.
Aby dodać folder, w NewestVersion.txt trzeba dodać linię:

folder;nazwa folderu 

Przykładowe użycie:

1.1
folder;MPC
http://www.mpcgenerator.cba.pl/test.txt;MPC/text.txt
Opublikowano

Udało Ci się rozwiązać pierwszy etap łamigłówki. Gratulacje! Poniżej znajdziesz kolejną wskazówkę!

 

Ta metoda szyfrowania była używana już przed naszą erą przez jednego z najbardziej rozpoznawalnych rzymskich polityków, a jej nazwa pochodzi od imienia tejże osoby. Pozwoli ona na skorzystanie z szyfru Vigenère’a - a dwie z trzech uzyskanych liter wskażą Ci drogę do działu z kolejną wskazówką. 

 

Wskazówka 1a: Przyda Ci się znajmość kolejności liter w alfabecie łacińskim - pamiętaj NIE uwzględniaj w nim polskich znaków. 

Wskazówka 2b: Gdy uda Ci się już znaleźć dział i odpowiednią stronę z tematami zwracaj uwagę na daty, jedna z nich jest powiązana z dwutygodnikami. 

Wskazówka 3c: Jeśli masz problem z zastosowaniem szyfrun Vigenère'a to decryptor online znajdsziesz tu: https://cryptii.com/pipes/vigenere-cipher.

Opublikowano

Nowa wersja: (1.1)


Download: https://mega.nz/#!6pdHXarA!9vExR0BmuQUpkTCDGvQ-DrZieuIjX3nwP8ZHDC-bezE


Skan: https://www.virustotal.com/pl/file/611896ffa31fb20f529b80d35e8e71c26e39577cde6252955a09ab1f0c4f6052/analysis/1442507692/


 


Osoby, które mają wersję poprzednią, po uruchomieniu otrzymają automatyczną aktualizację do 1.1.



Format plików, które obsługuje AutoUpdater został zmieniony.
Zapoznaj się z instrukcją w pliku AUinfo.txt i odpowiednio zedytuj plik NewestVersion.xml i AUsetting.xml (np. za pomocą notatnika).

W paczce znajdują się prawidłowe pliki, ale trzeba je wyedytować wg własnych potrzeb.


 


Zmiany:


  • Pliki XML zamiast plików tekstowych
  • 2 pliki zastąpione jednym
  • Wyświetlanie wersji AutoUpdatera
Opublikowano

Ja updater do przeglądarki napisałem w 10 minut. I updater też się aktualizuje! Porównuję najnowszą wersję z wersją programu na dysku i kiedy jest nowa wersja w ftp, automatycznie uruchamia się updater, który pobiera .zip i rozpakowuje :) Po co tyle tych pierdół w XML? Komu to potrzebne?

.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...