2009-04-15 10 views
8

Mam aplikację .net Windows 3.5 Mobile., Której mój klient chce mieć funkcje automatycznej aktualizacji.Jak automatycznie aktualizować aplikację Windows Mobile

Oto co mam do tej pory:

  1. stworzyć CAB przy użyciu inteligentnego urządzenia CAB projektu (jest to wystarczająco dobre, czy powinienem robić coś innego tutaj)

2. Uzyskaj numer wersji aplikacji

Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
  1. połączeń serwis internetowy WCF dla zrobić kilka wersji patrzeć.
  2. Pobierz nową wersję pliku cab.
  3. ???
  4. Execute WCELoad.exe plik CAB
  5. Zysk

Odpowiedz

9

Twoje rozwiązanie jest ogólnie poprawne, ale ma kilka problemów.

  1. Nie można zaktualizować się. Musisz wyłączyć i zaktualizować aplikację, aby uniknąć problemu z udostępnianiem plików. Zazwyczaj jest to obsługiwane przez uruchomienie dedykowanej aplikacji "aktualizującej". Może to być cel ikony aplikacji i dlatego aktualizuje się przy każdym uruchomieniu lub może zostać uruchomiony za pomocą elementu menu "sprawdź dostępność aktualizacji". Niezależnie od tego musisz go uruchomić i upewnić się, że rzeczywista aplikacja nie działa.
  2. Zasadniczo dobrym rozwiązaniem jest zapewnienie pewnej kopii zapasowej w przypadku uszkodzonej, przerwanej instalacji. Aktualizacje CAB będą wymagać hurtowej aktualizacji wszystkiego. To może nie być to, czego chcesz na końcu (możesz chcieć zaktualizować tylko pojedynczy plik, zestaw lub cokolwiek innego), więc zaczynając od logiki ściągania pojedynczych plików, staniesz się bardziej rozciągliwy.

Starym, ale wciąż bardzo ważnym zasobem jest MSDN article on creating self-updating applications Alexa Feinmana.

2

zespole byłem na to realizowane poprzez stworzenie drugą aplikację mobilną (poza aplikacji, która jest aktualizowana) na urządzeniach mobilnych, które było odpowiedzialny za pobieranie i uruchamianie CAB.

  • W każdej stacji dokowania podstawowa aplikacja określała, czy konieczna jest aktualizacja za pośrednictwem usługi sieciowej.
  • Jeśli jego wersja była nieaktualna, to wywołać aplikację Updater z URI nowej wersji do zainstalowania, a następnie wyjść
  • Aplikacja Updater by pobrać nową kabiną i wykonać instalacje/restartów i modyfikacji rejestru jako właściwy.

To zadziałało dla nas całkiem dobrze.

4

Nie trzeba tworzyć dedykowanej aplikacji do aktualizacji, przynajmniej nie na WM 6 z .netcf 3.5. Pobierany plik .cab korzystam z usługi internetowej, a następnie rozpoczynam nowy proces i wywołuję pakiet wceload, aby wykonać cichą instalację kabiny.To dba o zamknięcie mojego biegu aplikacji, odinstalowanie go, a następnie wykonuje instalację jak stwierdzono w MSDN docs here

w Windows Mobile w wersji 5.0 i później, podczas korzystania Wceload.exe do instalowania pliku .cab, Wceload. exe odinstalowuje wcześniej zainstalowaną wersję pliku .cab przed zainstalowaniem nowej wersji. Podczas deinstalacji tego procesu Wceload.exe zamyka wszystkie aktualnie uruchomione pliki wykonywalne, które zostały zainstalowane na urządzeniu docelowym przy użyciu pliku .cab, w oparciu o ich nazwę. Wceload.exe zamyka również wszystkie pliki wykonywalne, które są celem operacji na plikach, takie jak ruch lub kopia. Aby zamknąć plik wykonywalny, Wceload.exe wysyła WM_CLOSE do wszystkich okien najwyższego poziomu będących własnością procesu. Jeśli proces nie zakończy się w odpowiednim czasie po otrzymaniu komunikatu WM_CLOSE, wówczas Wceload.exe będzie go przymusowo zamykał, wywołując TerminateProcess. Narzędzie Wceload.exe nie próbuje zamykać plików wykonywalnych dostarczanych w obrazie wykonawczym na urządzeniu docelowym.

Mam również plik cesetup.dll w celu dodatkowego oczyszczenia plików podczas odinstalowywania.

Mam duży problem z tym, że nie mogę zmienić folderu instalacji dla mojej aplikacji podczas cichej instalacji i domyślnie jest to właściwość% installDir% z mojego pliku .inf. Budowanie osobnej karty .cab dla każdego urządzenia, które chce zaktualizować, nie jest dobrym rozwiązaniem.

0

Masz rację. po wM5, 6 ... WCEload po prostu zatrzymuje aplikację, jeśli jest zainstalowana, więc nie musisz jej zatrzymywać ręcznie. ale musisz zainstalować aktualizację w trybie cichym, ponieważ jeśli nie, możesz ją anulować, więc potrzebujesz instalatora z silen cab. pobierz go od

http://cssoft.freehosting.net/website2/default.html

Powiązane problemy