2009-07-13 2 views
8

Ich habe Windows Mobile 6 professionelle Anwendung mit gezielten Framework als .NET CF 3.5 und Professional 6 SDK entwickelt. Außerdem wurde die SmartDeviceCab-Datei erstellt. Wenn ich es auf einem Gerät installiere, das kein CF 3.5 hat, kann es meine Anwendung nicht ausführen (weil das Gerät .NET CF 2.0 hat). Jetzt weiß ich, dass ich NET CF 3.5 auf dem Gerät haben muss, auf dem ich meine App ausführen möchte. Wie kann ich die aktuelle Version von CF erkennen und (falls erforderlich) CF 3.5 von meinem Fahrerhaus installieren? Ich habe viel auf Setup.dll erkundet und durchgegangen, aber es ist zu alt und ich habe keine Möglichkeit gefunden, cab-Datei von meiner Setup.dll zu starten. Bitte helfen Sie mir, die Lösung zu finden. Wäre dankbar, wenn Link/Beispielcode zur Verfügung gestellt würde. Frustrierender ist, ich habe VC++ nie berührt.Windows Mobile Cab Setup zum Erkennen von .NET CF 3.5 und installieren Sie es

Ich bin durchgegangen: Detecting if the Compact Framewok is installed on mobile device und seine Verbindungen.

Shailesh K.

Antwort

1

In WM 6, glaube ich (es WM gewesen sein könnte 5) lehnten sie ein Taxi aus einer anderen Kabine läuft. Die einzige Möglichkeit, alles auf einmal zu erledigen, ist ein MSI vom Desktop aus. Es gibt MSDN-Beispiele zum Starten.

Was ich in meiner App mache, ist die .NET CF-Version in meinem Taxi zu erkennen. Wenn sie nicht die richtige haben, scheitere ich bei der Installation und sage dem Benutzer, dass er vom Desktop aus installieren soll. Es ist nicht die beste Lösung, aber MS gibt uns keine wirkliche Wahl.

+0

Hallo ageektrapped, Danke für Ihre Antwort. Sie haben gesagt, dass Sie die .NET CF-Version von Ihrem Taxi aus erkennen. Können Sie die Art und Weise (Code) angeben, die Sie für die .NET CF-Version verwenden, und prüfen, ob das richtig ist oder nicht? Danke. Shailesh K :) – engineer

+0

Ich modifizierte den Code in diesem Beispiel zur Verfügung gestellt http://msdn.microsoft.com/en-us/library/aa446531.aspx#netcfdepl_topic3 ​​ – ageektrapped

1

Dies ist nicht wirklich eine Antwort auf Ihre Frage, aber in einer Situation wie dieser würde ich nur zwei CABs bereitstellen: meine Anwendung und die .Net CF 3.5 CAB. Es ist nicht schwer, einem Kunden/Kunden zu sagen, dass er seine App installieren soll, und wenn es nicht funktioniert, dann installiert er das .Net-Fahrerhaus.

0

Danke für die Antworten. Es ist wirklich enttäuschend, dass MS keine einfache Lösung dafür hat. Ich würde jetzt mit MusicGenesis gehen. Ich kann Benutzer zwei Kabinen geben (1) MyApp.cab (2) NETCFv35.wm.armv4i.cab. Aber ich wollte wissen, dass "NETCFv35.wm.armv4i.cab" für alle Geräte funktioniert. Ich habe von verschiedenen Geräten mit verschiedenen Befehlssätzen wie MISP, ARM usw. gehört. Funktioniert NETCFv35.wm.armv4i.cab für alle Windows Mobile 6 Professional (und höher 6.1, 6.5) oder was muss ich tun, um sich um andere Geräte zu kümmern?

Shailesh K

+3

Nein, Armv4 wird auf keiner Plattform funktionieren, obwohl es das ist heutzutage üblichste CPU. Ihre Kunden sollten sich das .msi-Paket hier holen: http://www.microsoft.com/downloads/details.aspx?FamilyID=E3821449-3C6B-42F1-9FD9-0041345B3385&displaylang=en –

0

Haben Sie .NET 3.5-spezifische APIs verwendet, die Sie von Targeting .NET 2.0 Framework verhindern? Wenn nicht (oder wenn es sehr wenig ist), würde ich nur das Targeting 2.0 in Betracht ziehen.

Sie werden überrascht sein, wie einfach es ist, die Version des gewünschten Frameworks zu ändern (leider können Sie nicht einfach im Projektmappen-Explorer zum Knoten Eigenschaften Ihres Projekts gehen, wie Sie es mit anderen Projekttypen in Visual können Studio). Ich würde vorschlagen, ein neues Projekt zu machen, das auf das 2.0 Framework abzielt, und den gesamten Quellcode in das Programm einfügt, kompiliert und sieht, wie viele Fehler Sie haben. Die Hoffnung ist, dass Sie in etwa 5-10 Minuten mit einer kompilierten und laufenden App fertig sind, die keine weiteren .NET Framework-Abhängigkeitsprobleme aufweist.

Bei der Planung einer mobilen App, die ich schreiben möchte, habe ich beschlossen, bei .NET 2.0 zu bleiben, da so viele Geräte standardmäßig nicht mit 3.5 ausgeliefert werden.

+0

Hallo mkmurray, Danke für Ihre Antwort. Ja, ich habe es vorher ausprobiert und es hat für mich funktioniert. Aber das ist nicht die (dauerhafte) Lösung, denke ich. Wenn ich in Zukunft eine App auf Basis von CF 3.5 entwickeln muss, dann stecke ich an dieser Stelle wieder fest. Deshalb suche ich nach einer dauerhaften Lösung, die mir bei der WM-Einführung helfen wird. Shailesh K. – engineer

1

Jetzt Windows Market Place ist da, so müssen wir nicht über erforderliche .NET CF-Versionen kümmern. Windows Market Place wird das erforderliche tun. :)

+0

WMP wird ziemlich langsam, wenn * beide * Benutzer gleichzeitig auf ihm sind. Haw. : P – MusiGenesis

3

Sehr einfach. Es hat ein wenig C++ - Code, aber Sie müssen es nicht ändern. Es geht lediglich darum, ein zweites Smart-Device-Cab-Projekt zu erstellen, das die .NET-CAB-Datei enthält, die Sie installieren möchten (3.5) und tausche die Installations-DLL gegen die aus dem C++ - Projekt, das im Beispiel enthalten ist. Sie fügen nur Registrierungswerte hinzu, die beschreiben, wo die CAB-Dateien, die Sie installieren möchten, sind und Sie golden sind. Sie müssen nicht erkennen, welche Version von .NET sie installiert haben, werfen Sie sie einfach dort hinein und sie wird über die bestehende Installation installiert. Es gibt ein vollständiges Whitepaper, das es im Beispiel erklärt, sowie Quellcode. Laden Sie einfach das Windows Mobile 6 SDK herunter und navigieren Sie nach der Installation zu diesem Verzeichnis auf Ihrem Computer. Öffnen Sie das Dokument "MultiCab Whitepaper.doc" und folgen Sie den Anweisungen.

C: \ Programme \ Windows Mobile 6 SDK \ Samples \ Common \ CPP \ Win32 \ multicabinstall

Früher habe ich dies für mein eigenes Projekt und es funktioniert gut SO!

0

Dafür habe ich NSIS verwendet. Es ist ein paar Monate her, seit ich das Installationsskript geschrieben habe, daher sollten einige Details unscharf sein.

Zuerst installiere ich .NET CF 3.5. Ich benutze die Datei NETCFSetupv35.msi, die automatisch .NET CF 3.5 auf dem mobilen Gerät installiert, wenn es nicht bereits existiert. Wenn .NET CF 3.5 bereits vorhanden ist, wird in einem Dialogfeld angezeigt, dass es bereits vorhanden ist (für uns war das akzeptabel). Sie können eine Anwendung finden/schreiben, die einen Rückgabewert festlegen würde, der von ExecWait (http://nsis.sourceforge.net/Docs/Chapter4.html) gelesen werden kann, und dann nur die MSI aufrufen, wenn .NET CF nicht installiert ist.

Dann habe ich 8 Kabinen zu installieren, 3 für SQL Server Compact 3.5 (erforderlich), und 4 für eine Software, die wir abhängen (optional, je nach Client), und 1 für unsere App. Ich folgte diesem Tutorial: http://nsis.sourceforge.net/NSIS_for_Smartphone. Hat für jeden einen Abschnitt geschrieben, wenn Sie nur readonly möchten, fügen Sie SectionIn 1 RO nach dem Abschnitt hinzu. Rufen Sie dann CeAppMgr als Argument für jedes CAB auf.

Verwandte Themen