Bei einem aktuellen Projekt arbeite ich an einer Anwendung für ein Windows CE 5.0 Gerät. Um genau zu sein handelt es sich um einen Scanner vom Typ Casio DT-X7.
Bei der Entwicklung habe ich festgestellt, dass meine Fehlerprotokolle (Logging der Exceptions in eine Textdatei) nicht korrekt geschrieben werden können. Und zwar wurde immer folgende Meldung protokolliert, egal welcher Fehler aufgetreten ist:
"An error message is available for this exception but cannot be displayed because these messages are optional and are not currently installed on this device. Please install ‘NETCFv35.Messages.EN.wm.cab’ for Windows Mobile 5.0 and above or ‘NETCFv35.Messages.EN.cab’ for other platforms. Restart the application to see the message."
Folglich habe ich mich, ganz wie in der Meldung beschrieben, daran gemacht die angegeben CAB zu installieren. Hierzu habe ich die folgende Datei von meinem PC (Windows Mobile SDK muss installiert sein) auf das mobile Gerät kopiert:
C:\Programme\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\Diagnostics\NETCFv35.Messages.EN.cab
Nach dem Kopieren habe ich die Datei auf dem mobilen Gerät gestartet und erfolgreich installiert.
Hier gilt es zu beachten, dass es im genannten Verzeichnis auch eine Datei "NETCFv35.Messages.EN.wm.cab" gibt. Diese Datei ist ausschließlich für Geräte mit Windows Mobile. Die Datei ohne ".wm" im Namen ist für alle weiteren Systeme wie z. B. Windows CE.
Verwendet man versehentlich die falsche Datei, so kommt eine Fehlermeldung vor der Installation wie z. B. folgende:
The file "NETCFv35.Messages.EN.wm.cab" is not a valid Windows CE Setup file.
In diesem Fall empfehle ich einfach noch einmal genau hinzuschauen und ggf. auch einmal das Bestriebssystem auf dem mobilen Gerät zu überprüfen. Manchmal hat man vielleicht doch etwas verwechselt oder übersehen.
Wurde aber alles korrekt installiert, so sollten auch die Fehlermeldungen wieder korrekt angezeigt/protokolliert werden.
Bei mir war dieses aber nicht der Fall. So musste ich weitersuchen.
Hierfür habe ich mir die kostenfreien Windows Mobile Power Toys von Microsoft installiert und mit dem MobileLogger geschaut, ob es noch irgendwelche Probleme gibt. Und ich bin direkt fündig geworden. Der Logger zeigt mir die Meldung:
"Failed to load [System.SR, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC]"
Das Problem hier ist, dass eine im CAB enthaltene Datei unter anderem Namen vorliegt, als sie eigentlich referenziert ist. Und zwar handelt es sich hierbei um die Datei "SYCCFA~1.001". Als Referenz wird der Name "System.SR" erwartet. Helfen kann man sich hier ganz einfach, in dem man die CAB-Datei entpackt, die Datei in "System.SR.dll" umbenennt und diese anschließend im sein Windows Mobile Projekt als Referenz einbindet.
Jetzt wurden sogar bei mir alle Fehlermeldungen korrekt ausgegeben.
Posts mit dem Label Windows Mobile werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Windows Mobile werden angezeigt. Alle Posts anzeigen
Dienstag, 19. Juli 2011
Freitag, 24. Juni 2011
Installierte Versionen des .Net-Framework ermitteln unter Windows Mobile
Heute hatte ich das Problem, dass ich eine kleine Testanwendung schreiben wollte die auf einem Windows Mobile und einem Windows CE Gerät laufen sollte. Einzige Voraussetzung war, dass kein neues .Net Framework bzw. Compact Framework installiert werden darf.
Da es sich bei dem einen Gerät um das Betriebssystem Windows CE 5.0 handelt, kommen für die Entwicklung erst einmal 2 Framework-Versionen in Frage. Und zwar hat die Version 5.0 standardmäßig das .Net-Framework 1.0 installiert. Handelt es sich jedoch um die Version 5.0 mit installiertem Service Pack 2, so ist auch das .Net-Framework 2.0 eingerichtet.
Wie bekommt man nur einfach raus, welches das aktuell höchste, vorhandene .Net-Framework ist.
Hierzu gibt es eigentlich zwei ganz einfache Methoden.
1. Im Windows-Verzeichnis befindet sich eine Datei mit dem Namen "cgacutil.exe". Wenn man diese einfach ausführt, bekommt man alle installierten .Net-Frameworks, sortiert von alt nach neu, aufgelistet.
Der letzte Eintrag ist also die höchste installierte Version.
2. Sollte die unter Punkt 1 beschriebene Datei aus irgendwelchen Gründen nicht aufrufbar sein, so kann man sich auch einen Registry-Editor zur Hilfe ziehen. Diesen installiert man auf dem PC und greift von dort aus auf das angeschlossene mobile Gerät zu.
Aus dem Editor geht man dann in der Registry unter folgenden Eintrag:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
Hier werden alle installierten Versionen des .Net-Frameworks in Unterverzeichnissen aufgelistet.
Da es sich bei dem einen Gerät um das Betriebssystem Windows CE 5.0 handelt, kommen für die Entwicklung erst einmal 2 Framework-Versionen in Frage. Und zwar hat die Version 5.0 standardmäßig das .Net-Framework 1.0 installiert. Handelt es sich jedoch um die Version 5.0 mit installiertem Service Pack 2, so ist auch das .Net-Framework 2.0 eingerichtet.
Wie bekommt man nur einfach raus, welches das aktuell höchste, vorhandene .Net-Framework ist.
Hierzu gibt es eigentlich zwei ganz einfache Methoden.
1. Im Windows-Verzeichnis befindet sich eine Datei mit dem Namen "cgacutil.exe". Wenn man diese einfach ausführt, bekommt man alle installierten .Net-Frameworks, sortiert von alt nach neu, aufgelistet.
Der letzte Eintrag ist also die höchste installierte Version.
2. Sollte die unter Punkt 1 beschriebene Datei aus irgendwelchen Gründen nicht aufrufbar sein, so kann man sich auch einen Registry-Editor zur Hilfe ziehen. Diesen installiert man auf dem PC und greift von dort aus auf das angeschlossene mobile Gerät zu.
Aus dem Editor geht man dann in der Registry unter folgenden Eintrag:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
Hier werden alle installierten Versionen des .Net-Frameworks in Unterverzeichnissen aufgelistet.
Abonnieren
Posts (Atom)