Ich habe eine .net cf 3.5 Windows Mobile-Anwendung, die mein Client Autoupdate-Funktionen haben möchte.
Hier ist was ich bisher habe:
2.Erhalten Sie die Versionsnummer der Anwendung
%Vor%Ihre Lösung ist im Allgemeinen korrekt, hat aber ein paar Probleme.
Eine alte, aber immer noch gültige Ressource ist Alex Feinmans MSDN-Artikel zum Erstellen selbstaktualisierender Anwendungen .
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.
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.
Das hat für uns ziemlich gut funktioniert.
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
herunterTags und Links installer clickonce windows-mobile compact-framework