Automatická kontrola aktualizací programu v C#
Pokud máte vlastní program a řešíte problém s aktualizacemi - jak upozornit uživatele na novou verzi programu - Čtěte dál a dozvíte se jak na to.
Jasně, můžete si nastavit napevno datum a pak být nuceni do onoho soudného dne vydat novou verzi, ale je tu i snazší způsob -> zautomatizování.
Nejdříve si načteme aktuální verzi (informace z Assembly -> Version)
Assembly.GetExecutingAssembly().GetName().Version -> tímto dostaneme něco takového 1.0.0.0 -> formát Major, Minor, Build, Revision, ale my bychom raději něco takového -> 1.0 Usekneme zbytek pomocí ToString(2)
Celý kód poté bude vypadat takto:
Pozn.: CultureInfo udává informaci o decimálním
separátoru (prostě čárce) jestli bude "." nebo "," InvariantCulture
je standard -> "." jinak je v základě podle systémového nastavení (v
češtině) ","
using System.Reflection;//pro používání informací z assemblyinfo using System.Globalization;//pro culture info double CurrentVersion = double.Parse(Assembly.GetExecutingAssembly().GetName().Version.ToString(2), CultureInfo.InvariantCulture);
Pak si naparsujeme soubor, ve kterém budou dva řádky -> 1-> verze; 2-> link (pro přesměrování na soubor)
using System.Net;//pro načtení obsahu souboru z internetu using System.IO;//pro stream reader WebRequest request = WebRequest.Create("http://www.itnetwork.cz/scripts/programs_version.php?uniqid=xxxxx"); WebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream());
Php soubor vypadá takto:
Pozn.: stačí uložit textový soubor o dvou řádcích php použijte pokud
tyto informace ukládáte do databáze
<?php require_once('mysql.php'); $query = mysql_query('SELECT name, version FROM table WHERE application = "ClockWork" LIMIT 1') or die(mysql_error()); $data = mysql_fetch_assoc($query); echo( $data['version'] . "\nhttp://www.itnetwork.cz/" . $data['name'] ); ?>
Naparsujeme si ony dva řádky.
using System.Globalization;//pro cultureinfo double NewestVersion = double.Parse(reader.ReadLine(), CultureInfo.InvariantCulture);//první řádka je verze string Link = reader.ReadLine();//druhá řádka je link
A hodíme tam jednoduchou dotazovací podmínku.
using System.Diagnostics;//pro process.start if (NewestVersion > CurrentVersion) { if (MessageBox.Show("Ke stažení je dostupná nová verze programu! ("+ NewestVersion.ToString() +")\nPřejete si ji stáhnout?", "Je dostupná aktualizace", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) Process.Start(Link); } else MessageBox.Show("Používáte poslední verzi!", "Aktualizace nenalezena");
Ke stažení přikládám zdrojový kód ukázky se zkompilovaným výsledkem.
Jste redaktorem na ITnetwork?
Pak můžete využít následujícího odkazu:
http://www.itnetwork.cz/smallapps/programs_version.php?uniqid=
Kde za rovná se dosadíte uniqid vašeho programu/hry, který naleznete v
administrační sekci v editaci článku hned na začátku.
Výstupem je verze software, tak jak je ukázána v článku ->
verze\nodkaz
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 489x (41.76 kB)
Aplikace je včetně zdrojových kódů v jazyce C#