Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Auto-Moto
Mobilní telefony
Notebooky  |  Tablety
Příslušenství
Wearables  |  Ostatní
Svět hardware  |  Digimanie  |   TV Freak

Aktualizace aplikace za běhu

Lokutus (6)|1.2.2009 22:00
Zdravím,
řeším zásadní problém jak aktualizovat běžící aplikaci. Aplikace si zjistí dostupné aktualizace, pokud jsou, stáhne si je. Potud OK. Ale co dál? Když zkusím spustit instalační cab a ukončit aplikaci, nestihne se ukončit a instalátor ohlásí, že se instalace nezdařila.
Napadlo mě použít druhou aplikaci, kterou spustí ta hlavní aplikace předtím než se ukončí. Ta druhá aplikace by počkala až se první korektně ukončí a spustila by instalátor.
Myslíte, že je to dobrý způsob?
A druhý dotaz, který s tím souvisí. Jak se dá detekovat, zda aplikace ještě běží nebo se již ukončila?

.NET Compact Framework 3.5 na Win Mobile 6.1.

Díky, Lokutus
RStein (2012)|2.2.2009 19:05
Zdravím,
přesne takto to mám v automativkém updateru řešeno: Aplikace (např. při replikaci) zjistí, zda je dostupná nová verze. Pokud ano (ještě rozlišuji, zda je update povinný), spustí další aplkaci updater.exe a updater.exe zahájí instalaci cabu po ukončení aplikace. K detekci běžící aplikace můžete použít např. mutex - pokud mutex existuje, vrátí se vám chyba ERROR_ALREADY_EXISTS v updateru. Dala by se použít i API funkce WaitForSingleObject a čekat na ukončení procesu aplikace, ale vím, že na WM 2003 nikdy nedošlo k signalizaci ukončení procesu na zařízení MDA II (v emulátoru ano).

Další možnost je použít setup dll (musí být napsána v C++], která bude součástí cabu - před instalací zkusíte najít okno vaší aplikace a ukončit ji.