So können Sie die Windows Mobile-Anwendung automatisch aktualisieren

8

Ich habe eine .net cf 3.5 Windows Mobile-Anwendung, die mein Client Autoupdate-Funktionen haben möchte.

Hier ist was ich bisher habe:

  1. Erstellen Sie ein CAB mit dem CAB-Projekt für intelligente Geräte (ist das gut genug, oder sollte ich hier etwas anderes machen)

2.Erhalten Sie die Versionsnummer der Anwendung

%Vor%
  1. Rufen Sie einen WCF-Webdienst auf, um nach einer Versionsnummer zu suchen.
  2. Laden Sie eine neue Version der cab-Datei herunter.
  3. ???
  4. Führen Sie WCELoad.exe in der CAB-Datei
  5. aus
  6. Gewinn
Chris Brandsma 15.04.2009, 21:41
quelle

5 Antworten

9

Ihre Lösung ist im Allgemeinen korrekt, hat aber ein paar Probleme.

  1. Sie können sich nicht selbst aktualisieren. Sie müssen herunterfahren und sich von einer anderen App aktualisieren lassen, um das Problem der Dateifreigabe zu vermeiden. Dies wird normalerweise durch eine dedizierte "Updater" -App erledigt, die Sie starten. Es ist möglicherweise das Ziel des App-Symbols und führt daher bei jedem Start Updates durch, oder es wird über einen "Nach Updates suchen" -Typ des Menüelements gestartet. Unabhängig davon müssen Sie es starten und sicherstellen, dass die aktuelle App nicht ausgeführt wird.
  2. Es ist im Allgemeinen eine gute Idee, im Falle einer beschädigten, unterbrochenen Installation eine Art Backup zu erstellen
  3. CAB-Updates werden große Updates von allem erfordern. Dies ist möglicherweise nicht das, was Sie am Ende wollen (Sie möchten vielleicht nur eine einzige Datei, Assembly oder was auch immer aktualisieren), so dass Sie mit der Logik des Herunterziehens einzelner Dateien Sie viel erweiterbarer machen.

Eine alte, aber immer noch gültige Ressource ist Alex Feinmans MSDN-Artikel zum Erstellen selbstaktualisierender Anwendungen .

    
ctacke 15.04.2009, 23:05
quelle
11

Ich habe gerade WmAutoUpdate veröffentlicht, ein .NET c # Framework, das automatische Updates auf dem Compact Framework durchführt. Es ist frei verfügbar auf Github: Ссылка

    
Sebastian 23.09.2009 00:30
quelle
4

Es ist nicht notwendig, eine dedizierte App zum Aktualisieren zu erstellen, zumindest nicht auf WM 6 mit .netcf 3.5. Ich lade CAB-Datei mit einem Webservice herunter, starte dann einen neuen Prozess und rufe wceload auf, um eine Silent Cab-Installation durchzuführen. Dies sorgt dafür, dass ich meine laufende App herunterfahre, sie deinstalliere und dann die Installation wie in beschrieben ausführt MSDN-Dokumente hier

  

Wenn Sie in Windows Mobile Version 5.0 und höher Wceload.exe zum erneuten Installieren einer CAB-Datei verwenden, deinstalliert Wceload.exe die zuvor installierte Version der CAB-Datei, bevor Sie die neue Version installieren. Während des Deinstallationsabschnitts dieses Prozesses schließt Wceload.exe alle derzeit ausgeführten ausführbaren Dateien, die auf dem Zielgerät mithilfe einer CAB-Datei basierend auf ihrem Dateinamen installiert wurden. Wceload.exe schließt auch alle ausführbaren Dateien, die das Ziel einer Dateioperation sind, z. B. eine Verschiebung oder eine Kopie. Um eine ausführbare Datei zu schließen, sendet Wceload.exe WM_CLOSE an alle Fenster der obersten Ebene, die dem Prozess gehören. Wenn der Prozess nach dem Empfang der WM_CLOSE-Nachricht nicht rechtzeitig beendet wird, schließt Wceload.exe ihn zwangsweise, indem er TerminateProcess aufruft. Wceload.exe versucht nicht, ausführbare Dateien zu schließen, die in dem Laufzeitbild auf dem Zielgerät geliefert werden.

Ich habe auch eine cesetup.dll für zusätzliche Bereinigung von Dateien während der Deinstallation.

Das große Problem, das ich habe, ist, dass ich den Installationsordner für meine App bei einer unbeaufsichtigten Installation nicht ändern kann und standardmäßig die Eigenschaft% installDir% aus meiner INF-Datei verwendet. Das Erstellen eines separaten CAB für jedes Gerät, das aktualisiert werden soll, ist keine schöne Lösung.

    
user158306 18.08.2009 09:18
quelle
2

Ein Team, auf dem ich gerade war, implementierte dies, indem ich eine zweite mobile App (außerhalb der Anwendung, die gerade aktualisiert wird) auf den mobilen Geräten erstellte, die für das Herunterladen und Ausführen von CABs verantwortlich waren.

  • In jedem Dock hat die primäre App festgestellt, ob sie über einen Web-Service-Aufruf aktualisiert werden muss.
  • Wenn die Version nicht mehr aktuell ist, ruft sie die Updater-App mit der URI der neuen Version auf, die installiert und dann beendet werden soll
  • Die Updater-App lädt das neue CAB herunter und führt die erforderlichen Installations- / Neustarts und Registrierungsänderungen aus.

Das hat für uns ziemlich gut funktioniert.

    
Guy Starbuck 15.04.2009 21:53
quelle
0

Sie haben Recht. Nach wM5, 6 ... WCEToad stoppt nur die Anwendung, wenn sie installiert ist, so dass Sie sie nicht manuell stoppen müssen. Sie müssen das Update jedoch im unbeaufsichtigten Modus installieren, denn wenn der Benutzer es nicht abbrechen kann, benötigen Sie das Silenc Cab-Installationsprogramm. Lade es von

herunter

Ссылка

    
alex1234 17.03.2010 15:44
quelle