Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Net 2003 para la generacin del los distintos archivos CABs NSIS (Nullsoft Scriptable Install System) ( http://nsis.sourceforge.net ) NotePad para editar el script Tener instalado en el PC el ActiveSync Un poco de cerebro :D
Al tratarse de una aplicacin desarrollada en Visual Studio .NET 2003 y adems hacer uso de bases de datos de SQLce necesitamos instalar los correspondientes archivos CABs, tanto del compact Framework, como del SQLce. Nota: Existen distintas versiones de archivos CABs dependiendo de la arquitectura (ARM,ARMV4,MIPS,SH3,WCE420X86) Para simplificar este manual solo hemos supuesto que se instalaran archivos para una arquitectura ARM. Manos a la obra. Lo primero que tenemos que hacer es generar los archivos CAB. El archivo CAB ya de por si funcionara correctamente en nuestro PocketPC si lo copiamos a travs del explorador de archivos en una carpeta del PocketPC. Una vez copiado el archivo CAB en el PocketPC, hacemos clic desde el PocketPC en dicho archivo y en teoria debera instalarse correctamente. Nosotros vamos a ir un paso mas all. Generaremos un archivo ejecutable que instalar todos los CABs necesarios en el PocketPC, de tal forma que hasta mi abuelita sera capaz de instalar ese potente visor GPS que has programado o incluso esa agenda tan chula que esta causando sensacin. :D Generando los archivos CAB. Cuando desde Visual Studio pulsamos en Generar -> Generar Archivo .cab vemos una ventana de consola que hace cosas raras. Una vez finalizada la generacin de los archivos .cab nos vamos con el explorador de archivos de windows al directorio de nuestra aplicacin. Normalmente tendremos esta jerarqua de carpetas: C:\Ruta con los archivos fuente> Carpeta BIN Carpeta DEBUG Carpeta RELEASE Carpeta CAB Carpeta DEBUG Carpeta RELEASE Carpeta OBJ Carpeta DEBUG Carpeta TEMP Carpeta TEMPPE
Instalacin de mltiples CABs en un nico paquete de instalacin Carpeta RELEASE Carpeta TEMP Carpeta TEMPPE Nota: Visual Studio puede generar un ejecutable en modo DEBUG y en modo RELEASE. Para este ejemplo he supuesto que la generacin ha sido en modo RELEASE Como habrs podido adivinar, los CABs se han generado en : C:\Ruta con los archivos fuente\CAB\RELEASE\ Ah dentro veras que no solo existe un archivo cab, sino que Visual Studio ha generado diversos archivos CAB para las distintas arquitecturas de dispositivos mviles que soporta (ARM, ARMV4, MIPS) Podramos pensar que medio camino ya lo tenemos hecho (por lo menos ya tenemos los archivos CAB). Sin embargo si utilizamos los archivos cab que estn en esta carpeta para nuestra instalacin, veremos que una vez instalada la aplicacin en un Pocket PC la aplicacin se llama My Company [nombre de la aplicacin], por ejemplo : My Company OWgui Hombre, ms que My Company me gustara que bien mi aplicacin se llamase Byotech OWgu. Para ello tendremos que editar un fichero INF que se encuentra en: C:\Ruta con los archivos fuente\OBJ\RELEASE\ Suponiendo que nuestra aplicacin se llama OWgui_PPC, el archivo que tendriamos que abrir es (bueno, en realidad es el nico archvo INF que hay en esa carpeta :P ) C:\Ruta con los archivos fuente\OBJ\RELEASE\OWgui_PPC.inf Al abrirlo vemos lo siguiente: [version] Signatura=$Windows NT$ Provider=My Company CESignature=$Windows CE$ Bueno, no hay que ser un lince para saber que lnea tendremos que modificar para que una vez se instale el programa en el PocketPC se visualice Byotech OWgui en lugar de My Company OWgui (pista : substituye Provider=My Company por Provider=Byotech) Una vez modificado el archivo INF y estando en el mismo directorio: C:\Ruta con los archivos fuente\OBJ\RELEASE\ Ejecutamos el archivo BuildCab.bat (de nuevo es el nico archivo BAT que existe en esa carpeta) Vemos de nuevo una ventana de consola haciendo cosas raras
Instalacin de mltiples CABs en un nico paquete de instalacin Lo que ha ocurrido cuando hemos ejecutado el archivo: C:\Ruta con los archivos fuente\OBJ\RELEASE\BuildCab.bat Es que se han vuelto a generar los archivos CAB (pero ahora teniendo en cuenta las modificaciones que hemos hecho en el fichero INF) Por lo tanto, ahora SI que SI!!! En la carpeta: C:\Ruta con los archivos fuente\CAB\RELEASE\ Si que tendremos los CABs definitivos que usaremos para nuestra instalacin. Generando los archivos INI. Una vez que tenemos generados los archivos CAB deberemos generar unos archivos de configuracin. Aqu ya podemos decir que quien realmente se encargar de instalar nuestras aplicaciones en el PocketPC es el CeAppMgr.exe, un programa que se instala en la misma carpeta del ActiveSync, y que por ejemplo yo tengo en: C:\Archivos de programa\Microsoft ActiveSync\CeAppMgr.exe Si consultamos la documentacin en la MSDN, por ejemplo:
http://msdn.microsoft.com/library/default.asp?url=/library/enus/wcesetup/html/_wcesdk_Creating_an_ini_File_for_the_Application_Manager.asp
(tambin podis hacer una search por CeAppMgr) Vemos que la estructura del archvo INI es: [CEAppManager] Version = 1.0 Component = component_name [component_name] Description = descriptive_name [Uninstall = uninstall_name] [IconFile = icon_filename] [IconIndex = icon_index] [DeviceFile = device_filename] CabFiles = cab_filename [,cab_filename] Si la sintaxis dentro de este fichero no es correcta se visualizar el siguiente mensaje durante la instalacin en el PocketPC
Examinemos nuestros archivos INI: Para el archivo OWgui_PPC.ARM.CAB he generado un archivo que he llamado OWgui.ini: [CEAppManager] Version = 1.0 Component = OpenWeigh [OpenWeigh] Description Uninstall CabFiles = OpenWeigh Control de contenido efectivo = OpenWeigh = OWgui_PPC.ARM.CAB
Posibles sitios donde podemos meter la pata y nos saldr el msgbox durante la instalacin que hemos visto en la pagina anterior: 1 : El nombre del archivo CAB esta mal escrito 2 .Que Component no sea exactamente Component, me explico: [CEAppManager] Version = 1.0 Component = OpenWeigh [OpenWeihg] Description Uninstall CabFiles = OpenWeigh Control de contenido efectivo = OpenWeigh = OWgui_PPC.ARM.CAB
En un sitio hemos escrito OpenWeigh sin embargo en la seccion hemos escrito OpenWeihg . Esto provoca el error que hemos visto anteriormente. Es decir , deberemos escribir en nombre de la seccion Component (entre los [ ] ) exactamente con el mismo nombre que la hemos definido en la etiqueta Component = Generacin del script. Bueno, ya estamos mas cerca del final. Dejo para el final el codigo del script que interpretar NSIS. El cdigo es bastante simple de seguir y ademas, existe multitud de informacin de cmo realizar determinadas tareas en la pgina de NSIS. (de hecho el script es una ligera, ligersima modificacin de uno de los ejemplos que te instala el NSIS) Hacemos clic con el botn derecho del ratn sobre el fichero del script y lo compilamos con NSIS:
Instalacin de mltiples CABs en un nico paquete de instalacin Y efectivamente, vemos que nos ha generado un ejecutable de la instalacin:
Y si ahora miramos en el men de programa de la PDA vemos que el OWgui, el PHB RegEdit y el SQLCE Query se han instalado correctamente:
Por ultimo decir que el NSIS es increblemente configurable y se pueden llegar ha hacer instalaciones totalmente profesionales, os dejo este link http://nsis.sourceforge.net/Screenshots a ver si a alguno/a os suenan esas aplicaciones :D
Instalacin de mltiples CABs en un nico paquete de instalacin Script usado para la instalacin: (basado los ejemplos de la carpeta NSIS\Example y NSIS\Example\Modern UI\
(que no te asuste el tamao del script, es bsicamente uno de los ejemplos que se encuentran en la carpeta NSIS\Expample\Modern UI\)
;NSIS Modern User Interface ;Basic Example Script ;Written by Joost Verburg ;-------------------------------;Include Modern UI !include "MUI.nsh" ;-------------------------------;General ;Name and file Name "OWgui" OutFile "OWPPCsetup.exe" ;Default installation folder InstallDir "$PROGRAMFILES\OWppc" ;Get installation folder from registry if available InstallDirRegKey HKCU "Software\OWppc" "" ;-------------------------------;Interface Settings !define MUI_ABORTWARNING ;-------------------------------;Pages ; !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro !insertmacro !insertmacro !insertmacro MUI_UNPAGE_WELCOME MUI_UNPAGE_CONFIRM MUI_UNPAGE_INSTFILES MUI_UNPAGE_FINISH
;-------------------------------;Languages ;!insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "Spanish" ;-------------------------------;Installer Sections Section "NET CF 1.1 Core" SecNetCF ; esta seccion es obligatoria instalarla: SectionIn RO SetOutPath "$INSTDIR" File netcfcore.ini File netcf.core.ppc3.arm.cab ; one-time initialization needed for InstallCAB subroutine ReadRegStr $1 HKEY_LOCAL_MACHINE "software\Microsoft\Windows\CurrentVersion\App Paths\CEAppMgr.exe" "" IfErrors Error Goto End Error: MessageBox MB_OK|MB_ICONEXCLAMATION \ "Unable to find Application Manager for PocketPC applications. \
RMDir "$INSTDIR" DeleteRegKey /ifempty HKCU "Software\OWppc" SectionEnd ; Installs a PocketPC cab-application ; It expects $0 to contain the absolute location of the ini file ; to be installed. Function InstallCAB ExecWait '"$1" "$0"' FunctionEnd