Sei sulla pagina 1di 13

Instalacin de mltiples CABs en un nico paquete de instalacin Se usarn las siguientes herramientas: Visual Studio .

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

En el siguiente tutorial se simular de instalacin de hasta 5 CABS: Aplicacin


Es nuestra aplicacin principal .Net compact Framework (nuestra aplicacin est desarrollada con VStudio .NET 2003 Nuestra aplicacin accede a base de datos de SQLce Utilidad que permite hacer Querys en una base de datos de SQLce Editor del registro de Windows Movile

Nombre del CAB OWgui_PPC.arm.CAB Netcf.core.ppc3.arm.CAB Sqlce.dev.ppc3.arm.CAB Sqlce.dev.ppc3.arm.CAB regedit.Mrln_arm.CAB

Instalacin Obligatoria SI SI SI Opcional Opcional

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

Instalacin de mltiples CABs en un nico paquete de instalacin

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

Una vez compilado vemos:

Instalacin de mltiples CABs en un nico paquete de instalacin Y efectivamente, vemos que nos ha generado un ejecutable de la instalacin:

Si lo ejecutamos, esto es lo que vemos:

Instalacin de mltiples CABs en un nico paquete de instalacin

Instalacin de mltiples CABs en un nico paquete de instalacin

Instalacin de mltiples CABs en un nico paquete de instalacin

El programa instala todos los CABs necesarios y finalmete muestra:

Instalacin de mltiples CABs en un nico paquete de 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. \

Instalacin de mltiples CABs en un nico paquete de instalacin


Please install ActiveSync and reinstall YourApp." End: StrCpy $0 "$INSTDIR\netcfcpre.ini" Call InstallCAB SectionEnd Section "SQLCE" SecSQLCE ; esta seccion es obligatoria instalarla: SectionIn RO SetOutPath "$INSTDIR" ;ADD YOUR OWN FILES HERE... File sqlce.ini File sqlce.ppc3.arm.CAB StrCpy $0 "$INSTDIR\sqlce.ini" Call InstallCAB SectionEnd Section "OWgui" SecOWgui ; esta seccion es obligatoria instalarla: SectionIn RO SetOutPath "$INSTDIR" ;ADD YOUR OWN FILES HERE... File OWgui.ini File OWgui_PPC.ARM.CAB StrCpy $0 "$INSTDIR\owgui.ini" Call InstallCAB ;Store installation folder WriteRegStr HKCU "Software\OWppc" "" $INSTDIR ;Create uninstaller WriteUninstaller "$INSTDIR\Uninstall.exe" SectionEnd Section "SQLCE Query" SecSQLCEDEV ; esta seccion NO es obligatoria instalarla: ; SectionIn RO SetOutPath "$INSTDIR" ;ADD YOUR OWN FILES HERE... File sqlcequery.ini File sqlce.dev.ppc3.arm.CAB StrCpy $0 "$INSTDIR\sqlcequery.ini" Call InstallCAB SectionEnd Section "PHMregedit" SecPHMregedit ; esta seccion NO es obligatoria instalarla: ; SectionIn RO

Instalacin de mltiples CABs en un nico paquete de instalacin


SetOutPath "$INSTDIR" ;ADD YOUR OWN FILES HERE... File phmregedit.ini File regedit.Mrln_ARM.cab StrCpy $0 "$INSTDIR\phmregedit.ini" Call InstallCAB SectionEnd ;-------------------------------;Descriptions ;Language strings LangString DESC_SecNetCF ${LANG_SPANISH} "Instala Microsoft Compact Net Framework 1.1 (requerido)." LangString DESC_SecSQLCE ${LANG_SPANISH} "Instala Microsoft SQLCE 2.0 (requerido)." LangString DESC_SecOWgui ${LANG_SPANISH} "Sistema de control de contenido efectivo. Interfz usuario para Pocket PC." LangString DESC_SecSQLCEDEV ${LANG_SPANISH} "Microsoft SQLCE DEV 2.0 Permite realizar consultas tipo SQL en una base de datos de SQLCE." LangString DESC_SecPHMregedit ${LANG_SPANISH} "PHM RegEdit. Permite Consultar/Modificar/Eliminar Valores del registro del sistema." ;Assign language strings to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecNetCF} $(DESC_SecNEtCF) !insertmacro MUI_DESCRIPTION_TEXT ${SecSQLCE} $(DESC_SecSQLCE) !insertmacro MUI_DESCRIPTION_TEXT ${SecOWgui} $(DESC_SecOWgui) !insertmacro MUI_DESCRIPTION_TEXT ${SecSQLCEDEV} $(DESC_SecSQLCEDEV) !insertmacro MUI_DESCRIPTION_TEXT ${SecPHMregedit} $(DESC_SecPHMregedit) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------;Uninstaller Section Section "Uninstall" ;ADD YOUR OWN FILES HERE... Delete Delete Delete Delete Delete Delete Delete Delete Delete Delete Delete "$INSTDIR\netcfcore.ini" "$INSTDIR\netcf.core.ppc3.arm.cab" "$INSTDIR\sqlce.ini" "$INSTDIR\sqlce.ppc3.arm.CAB" "$INSTDIR\OWgui.ini" "$INSTDIR\OWgui_PPC.ARM.CAB" "$INSTDIR\sqlcequery.ini" "$INSTDIR\sqlce.dev.ppc3.arm.CAB" "$INSTDIR\phmregedit.ini" "$INSTDIR\regedit.Mrln_ARM.cab" "$INSTDIR\Uninstall.exe" (SQLCE Query).

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

Potrebbero piacerti anche