Univerzální updater

Univerzální updater

Zdravím všechny čtenáře,

na popud komentářů na mém předchozím článku "Galerie Efektů pro GM" (viz. zde) dnes tedy konečně posílám můj updater. Je to malá aplikace psaná v C#. I když se to nezdá, má docela hodně užitečných funkcí, takže vám stačí ji přibalit spolu s konfiguračním souborem do složky s vaší hrou/programem a máte vystaráno.

Co tedy umí?

  • Přirozeně, stahovat soubory.
  • Rozeznává verze a porovnává je s aktuálně dostupnou verzí.
  • Pokud je verze na PC starší, než ta na update serveru, stáhne soubor(y) bez ptaní. Pokud se verze shodují, zeptá se, přeje-li si uživatel update stáhnout, když má aktuální verzi. (což umožní např. opravení poškozeného exe)
  • Po ukončení updateru spustí aplikaci, která byla updatována.
  • Samozřejmně při updatování ukazuje celkový postup, postup stahování jednotlivých souborů, počet souborů stažených a jejich celkový počet a také zobrazuje rychlost downloadu.

Formát INI konfigurace

INI soubor, který určuje vlastnosti celého updateru obsahuje jedinou sekci - [info]. Jeho zápis je následující:

[info]
major=1
minor=0
build=0
revsn=0

progid=muj_program
update=http://www.example.com/update_handler.php
run=nazev_aplikace.exe

první bloček proměnných určuje verzi, kterou má užovatel právě v PC. Tak, jak jsem to napsal by byla verze 1.0.0.0. Updater je dělán tak, že už když by na serveru byla verze 1.0.0.1, bez ptaní by stahoval.

"progid" je ID vašeho programu/hry. Jsou 2 možnosti, jak budete updater obsluhovat. Buď přes PHP, což vám umožní jedním PHP scriptem vytvořit rozcestník pro updatery na třeba 10 vašich produktů. Právě díky progid je můžete takto rozčlenit. Druhá možnost obsluhy je pouhý plaintextový soubor na serveru. V tomto případě můžete do progid dát cokoliv. Více o obsluze updateru na straně serveru se dočtete níže ve článku.

"update" je URL adresa na script/soubor, který updateru poskytne informace o lokaci souborů, jejich verzi atd. Opět - více o obsluze na straně serveru se dočtete níže.

"run" je parametr, který určuje soubor, který má být spuštěn po dokončení updatu. Pokud ho necháte prázdný, neprovede se žádná akce, stejně jako když by soubor eventuelně neexistoval.

Obsluha updateru na straně serveru

Při updatování se updater připojí na adresu určenou parametrem update. Na této adrese by měl být váš script/soubor, který poskytne updateru potřebné informace. Updater se připojí na adresu ve formátu:

zadana_url?pro­gid=ID&major=X&mi­nor=X&build=X&rev­sn=X

V adrese URL se objeví ID vašeho programu (podle parametru progid v INI), také se tam objeví verze programu. (U vašich programů dbejte na to, aby jste každý z programů distribuovali s unikátním ID.)

PHP:

<?php
switch ($_GET["progid"]) {
  case "muj_program_1":
    echo "1 0 0 1 http://www.example.com/soubor1.exe http://www.example.com/soubor2.dll";
    break;

  case "muj_program_2":
    echo "3 1 4 8 http://www.example.com/program.exe";
    break;

  default:
    echo "error";
    break;
}
header("Content-Type:text/plain; charset=utf-8");
?>

Podle GET proměnné progid rozlišíte vaši aplikaci a vypíšete data k updatu v tomto formátu:

verze_major <mezera> verze_minor <mezera> verze_build <mezera> verze_revision <mezera> soubor_1 <mezera> soubor_2 <mezera> soubor_3 ...

Na konec stačí zadat typ obsahu na "text/plain" a ošéfovat kódování (používejte vždy UTF-8, updater zatím nerozlišuje jiná kódování). Zařídí to funkce header. Navíc tím, že nastavíte Content-Type na text/plain vám freehostingy jako Endora atd. přestanou do souboru vkládat reklamu, takže vám updater nevyhlásí chybu syntaxe. Vypadá to, že to nemá o moc víc výhod, než třeba složka s txt soubory, ale abych vás vyvedl z případného omylu, v PHP si můžete vést statistiky, můžete si udělat někde admin na správu updatů a data pro updater můžete načítat z DB. Taky můžete pro stejný program poskytovat různé updaty při různých verzích.

K funkčnosti vám ale stačí i txt soubor. Stačí, když do něj zadáte data ve stejném formátu jako jsem zmiňoval u PHP a updater nasměrujete na soubor.txt.

Tím by měl být updater funkční (samozřejmně za předpokladu, že soubory, na které updater odkážete existují.)

Varuji všechny, updater nemusí být blbuvzdorný ve všech směrech. Možná se někde může objevit nějaká ta neošetřená výjimka. Pokud by jste něco objevili, prosím napište, já je opravím ;)


Galerie

Program byl vytvořen v roce 2012.

 

Stáhnout

Staženo 322x (15.53 kB)

 

  Aktivity (1)

Program pro vás napsal Pelpet
Avatar
Autor se věnuje (web)designu a tvorbě softwaru pro průmyslové využití

Jak se ti líbí článek?
Celkem (2 hlasů) :
4.54.54.54.54.5


 



 

 

Komentáře

Avatar
dadko2911
Člen
Avatar
dadko2911:

Napis prosim zdrojovy kod :) Dik

 
Odpovědět 16.1.2013 14:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.