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, dass ich VC ++ nie berührt habe.
Ich bin durchgegangen: Erkennen, ob Compact Framewok auf einem mobilen Gerät installiert ist und seine Links.
Shailesh K.
Sehr einfach. Es hat ein wenig C ++ - Code, aber Sie müssen es nicht ändern. Es geht nur darum, ein zweites Smart-Device-Cab-Projekt zu erstellen, das die zu installierende .NET-CAB-Datei enthält (in Ihrem Fall 3,5) und die Installations-DLL für die aus dem im Beispiel enthaltenen C ++ - Projekt erstellte zu ersetzen. 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
Ich habe das für mein eigenes Projekt benutzt und es funktioniert SO gut!
In WM 6 glaube ich (es könnte WM 5 gewesen sein), dass sie es verboten haben, ein Taxi aus einer anderen Kabine heraus zu fahren. Die einzige Möglichkeit, alles auf einmal zu erledigen, ist ein MSI vom Desktop aus. Es gibt MSDN-Beispiele, wie das gestartet werden kann.
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 nicht wirklich eine Wahl.
Dies ist nicht wirklich eine Antwort auf Ihre Frage, aber in einer solchen Situation würde ich nur zwei CABs bereitstellen: meine Anwendung und die .Net CF 3.5 CAB. Es ist nicht schwer zu sagen, ein Kunde / Client, um Ihre App zu installieren, und wenn es nicht funktioniert, dann installieren Sie die .Net Kabine.
Wir haben AirSetup dafür verwendet, da es Ihnen die Installation und die Installation sehr gut und schnell ermöglicht.
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
Haben Sie .NET 3.5-spezifische APIs verwendet, die verhindern, dass Sie .NET 2.0 Framework anvisieren? Wenn nicht (oder wenn es sehr wenig ist), würde ich nur 2.0 in Betracht ziehen.
Sie werden vielleicht überrascht sein, wie einfach es ist, die Version des Framework zu ändern, auf das Sie zielen (Sie können leider nicht wie im Projektstudio in Visual Studio mit dem Projekt-Knoten im Projektmappen-Explorer arbeiten ). 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, weil so viele Geräte standardmäßig nicht mit 3.5 ausgeliefert werden.
Dafür habe ich NSIS benutzt. 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önnten eine Anwendung finden / schreiben, die einen Rückgabewert festlegen würde, der von ExecWait ( Ссылка ) gelesen werden kann dann rufe nur die msi auf, wenn .NET CF nicht installiert ist.
Dann muss ich 8 Kabinen installieren, 3 für SQL Server Compact 3.5 (erforderlich) und 4 für eine Software, von der wir abhängig sind (optional, abhängig vom Client), und 1 für unsere App. Ich folgte diesem Tutorial: Ссылка . Hat für jeden einen Abschnitt geschrieben, wenn Sie nur readonly möchten, fügen Sie SectionIn 1 RO nach dem Abschnitt hinzu. Dann rufen Sie CeAppMgr als Argument für jedes CAB.
Tags und Links .net .net-3.5 windows-mobile