Diskuze: Progress bar u stahování
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 21 zpráv z 21.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Event DownloadProgressChanged u webclienta.
Ještě bych měl jednu otázku, zjistil jsem si pomocí
string cesta=System.Reflection.Assembly.GetExecutingAssembly().Location;
aktuální pozici souboru, ale když to zadám do
client.DownloadFileAsync(new Uri("http://neco.cz/app.exe"), cesta);
tak se to nezačne stahovat. (Potřebuji ho nahradit novějším)
Nemůžeš přehrát právě spuštěný soubor jiným. Většinou se to řeší tak, že je malá aplikace nebo skript, který to udělá za tebe.
To vím, ale je zajímaví že když zadám
string cesta = "cesta k souboru\\nazevprogramu.exe"
a pak použiju
client.DownloadFileAsync(new Uri("http://neco.cz/app.exe"), cesta);
tak to funguje
Jinak, kdybych po kliknutí na Aktualizovat zavřel tu hlavní app a otevřel "aktualizátor" který by to stáhnul a po dokončení stahování otevřel tu původní, aktualizovanou app, to by šlo ? A mohl bych nějak zjistit v "aktualizátoru" místo uložení hlavní app ?
A nevíš jak se dá zjistit v běžícím programu, místo uložení vypnutého programu.
Musíš si ho nějak předat (nebo prohledat všechny disky, ale to je prasárna a nemáš jistotu, jestli jsi našel tu verzi, kterou hledáš, když by to měl uživatel v PC vícekrát.
Lepší je to umístění programu mít uložené v registrech nebo si to umístění předat při spouštění aktualizační aplikace - třeba přes spouštěcí argumenty.
Mě napadlo uložit si tu cestu do texťáku a pokaždým spuštění ji
přepisovat, a uložení programu byych udělal tak, že bych načetl date z txt
a pak bych to stáhnul tam, ale nevím jestli to bude fungovat
Předej si to přes ty argumenty - když hlavní aplikace spouští tu updatovací, tak jí to předej v parametrech a pak v tý updatovací to v main() funkci je to pole strngů args .
S tímhle jsem ještě nedělal, jka bych to měl udělat ?
Kdyz spoustis ten updatovaci program, tak mu muzes predat parametry
Process.Start("app.exe", "parametr - v tvem pripade cesta k updatovanemu souboru");
a tom updateru pak jen prectes ty stringy v metode main(String[] args) v args.
Nevím jestli to dělám správně, ale nechce to fungovat.
V hlavní app je tohle :
string filename = System.Reflection.Assembly.GetExecutingAssembly().Location;
private void button1_Click(object sender, EventArgs e)
{
Process.Start("C:\\Program Files\\Updater.exe", filename);
}
a v updateru:
public Form1(String[] args)
{
InitializeComponent();
string text = args.ToString();
}
Kod vypada dobre, nechce to fungovat?
Tak to uz vim, co tomu je.
Je to rozbity.
EDIT: jo, uz to asi vidim, ta funkce main je v program.cs, uz tam si musis vythanout v tom updateru to jmeno souboru.
Snad už poslední otázka. První app spouštím s právy administrátora, ale pokud updater stahuje do program Files potřebuje taky administrátora, ale nevím jak to nastavit ( třeba aby před spuštěním updateru vyskočilo okno s volbou jestli to chce spustit jako admin, nebo ne)
Třeba takhle?
http://stackoverflow.com/…on-windows-7
Zobrazeno 21 zpráv z 21.