Aktualizace aplikace za běhu
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
ř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
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.
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.