2009-07-13 8 views
8

He desarrollado la aplicación profesional Windows Mobile 6 utilizando el framework específico como .NET CF 3.5 y Professional 6 SDK. También creó su archivo SmartDeviceCab. Cuando lo instalo en un dispositivo que no tiene CF 3.5 no ejecuta mi aplicación (porque el dispositivo tiene .NET CF 2.0). Ahora sé que debo tener NET CF 3.5 en el dispositivo donde quiero ejecutar mi aplicación. ¿Cómo puedo detectar la versión actual de CF e instalar (si es necesario) CF 3.5 desde la configuración de mi cabina? He explorado y revisado mucho en Setup.dll pero es demasiado antiguo y no encontré la manera de ejecutar el archivo cab desde mi Setup.dll. Por favor, ayúdame a encontrar la solución. Agradecería que se proporcionara un código de enlace/muestra. Más frustrante es que nunca toqué VC++.Configuración de la cabina de Windows Mobile para detectar .NET CF 3.5 e instalarlo

He pasado por: Detecting if the Compact Framewok is installed on mobile device y sus enlaces.

Shailesh K.

Respuesta

1

En WM 6, creo (que podría haber sido WM 5), que reprobaron la ejecución de un taxi desde el interior de otro taxi. La única forma de hacerlo todo de una vez es a través de una MSI desde el escritorio. Hay ejemplos de MSDN sobre cómo comenzar.

Lo que hago en mi aplicación es detectar la versión .NET CF en mi taxi. Si no tienen la correcta, fallo la instalación y le digo al usuario que la instale desde el escritorio. No es la mejor solución, pero MS realmente no nos da una opción.

+0

Hola ageektrapped, Gracias por la respuesta. Usted dijo que está detectando la versión .NET CF de su cabina. ¿Puede indicarnos el camino (código) que está detectando la versión .NET CF y verificar si es correcta o no? Gracias. Shailesh K :) – engineer

+0

Modifiqué el código proporcionado en este ejemplo http://msdn.microsoft.com/en-us/library/aa446531.aspx#netcfdepl_topic3 ​​ – ageektrapped

1

Esto no es realmente una respuesta a su pregunta, pero en una situación como esta simplemente implementaría dos CAB: mi aplicación y el .Net CF 3.5 CAB. No es tan difícil decirle a un cliente/cliente que instale su aplicación, y si no funciona, entonces instale la .Net.

0

Gracias por responder. Es realmente decepcionante que MS no tenga una solución directa para esto. Me gustaría ir con MusicGenesis por ahora. Puedo darle al usuario dos cabinas (1) MyApp.cab (2) NETCFv35.wm.armv4i.cab. Pero quería saber que "NETCFv35.wm.armv4i.cab" funcionará para todos los dispositivos. Escuché sobre diferentes dispositivos con diferentes conjuntos de instrucciones como MISP, ARM, etc. ¿Funcionará NETCFv35.wm.armv4i.cab para todos los Windows Mobile 6 Professional (y superiores 6.1, 6.5) o lo que tengo que hacer para ocuparme de otros dispositivos?

Shailesh K

+3

No, Armv4 no funcionará en ninguna plataforma, aunque es el CPU más común hoy en día. Sus clientes deberían tomar el paquete .msi aquí: http://www.microsoft.com/downloads/details.aspx?FamilyID=E3821449-3C6B-42F1-9FD9-0041345B3385&displaylang=en –

0

ha usado alguna de .NET 3.5-específicas de la API que le impiden la orientación .NET 2.0 Framework? Si no (o si es muy poco), consideraría solo orientarme a 2.0.

Te sorprenderá lo fácil que es cambiar la versión del Framework al que te diriges (desafortunadamente no puedes simplemente ir a las Propiedades de tu nodo Project en el Explorador de Soluciones como lo haces con otros tipos de proyectos en Visual Estudio). Sugeriría crear un nuevo proyecto que tenga como objetivo el Framework 2.0 y colocar todo su código fuente, compilar y ver cuántos errores tiene. La esperanza es que en unos 5-10 minutos, haya terminado con una aplicación compilada y en ejecución, sin más problemas de dependencia de .NET Framework.

Al planear una aplicación móvil que espero escribir, he decidido mantener .NET 2.0 porque muchos dispositivos no vienen con 3.5 de forma predeterminada.

+0

Hola mkmurray, Gracias por su respuesta. Sí, lo probé antes y me funcionaba. Pero esta no es la solución (permanente), creo. En el futuro, si necesito desarrollar una aplicación basada en CF 3.5, nuevamente me atoraré en este punto. Por lo tanto, estoy buscando una solución permanente que me ayude en el futuro despliegue de WM. Shailesh K. – engineer

1

Ahora Windows Market Place está allí, por lo que no es necesario preocuparse por las versiones necesarias de .NET CF. Windows Market Place hará lo requerido. :)

+0

WMP se vuelve bastante lento cuando * ambos * usuarios están en él al mismo tiempo. Baya de espino. :PAG – MusiGenesis

3

Muy simple. Tiene un pequeño código de C++, pero no tiene que cambiarlo en absoluto. Se trata simplemente de crear un segundo proyecto de cabina de dispositivo inteligente que contenga el archivo .NET cab que desea instalar (3.5 en su caso) e intercambiando la DLL de instalación por la creada a partir del proyecto C++ incluido en la muestra. Simplemente agrega valores de registro que describen dónde están los archivos de cabina que desea instalar y está satisfecho. No es necesario que detecte qué versión de .NET tienen instalada, simplemente tírela allí y se instalará sobre la parte superior de cualquier instalación existente. Hay un documento técnico completo que lo explica en la muestra, así como el código fuente. Simplemente descargue el SDK de Windows Mobile 6 y navegue hasta este directorio en su computadora después de instalarlo. Abra el documento titulado "MultiCab Whitepaper.doc" y siga las instrucciones.

C: \ Archivos de programa \ Windows Mobile 6 SDK \ Samples \ Common \ CPP \ Win32 \ multicabinstall

he utilizado esto para mi propio proyecto y que funciona tan bien!

0

Para esto usé NSIS. Han pasado unos meses desde que escribí el script de instalación, por lo que algunos detalles deberían ser borrosos.

Primero instalo .NET CF 3.5. Utilizo el archivo NETCFSetupv35.msi que automáticamente instalará .NET CF 3.5 en el dispositivo móvil si aún no existe. Si .NET CF 3.5 ya existe, muestra un cuadro de diálogo que dice que ya existe (para nosotros esto era aceptable). Puede buscar/escribir una aplicación que establecería un valor de retorno que ExecWait (http://nsis.sourceforge.net/Docs/Chapter4.html) puede leer y luego solo llamar al msi si .NET CF no está instalado.

Luego tengo 8 cabinas para instalar, 3 para SQL Server Compact 3.5 (obligatorio) y 4 para un software del que dependemos (opcional, dependiendo del cliente) y 1 para nuestra aplicación. Seguí este tutorial: http://nsis.sourceforge.net/NSIS_for_Smartphone. Escribió una sección para cada uno, si solo quiere leer, agregue SectionIn 1 RO después de la sección. Luego llame a CeAppMgr pasando como argumento cada CAB.

Cuestiones relacionadas