TENGO QUE GENERAR UN INSTALADOR DE UNA EXTENSIÓN PARA GVSIG-MAC. COMO LO HAGO? No hay un build.xml para ello, ya que no tendria sentido (el proceso es corto y habria que hacer cosas a mano de todas formas). 1.- Preparar los ficheros en su arbol de directorios, siendo el directorio de andami.jar el "raiz". Por ejemplo, supongamos una extensión que vaya a proveer estos ficheros a un gvSIG ya instalado: gvSIGbin/andami.jar gvSIGbin/gvSIG/extensiones/nuevoFichero1 gvSIGbin/NuevoDirectorio1/nuevoFichero2 NativeLibs/nuevalib 2.- Hacer una copia de actualizador.app con un nuevo nombre (p. ej., "instalador de extension piloto de redes.app") 3.- Asegurarse de que tras la copia, los ficheros en .app/Contents/MacOS/ tienen permisos de ejecución. Una copia normal hecha con Ant suele perderlos! 4.- Copiar el arbol de directorios del paso 1 a .app/Contents/Resources/updates/. Solo funcionarán esos 2 directorios. 5.- Revisar .app/Contents/Resources/configfile para asegurarse de que las opciones configurables son correctas. Contiene ejemplos. 6.- Opcional: se puede añadir un fichero Info.plist en .app/Contents/Resources/updates/ si se quiere substituir el original del gvSIG instalado (para cambiar paths, paráms de arranque de la JVM, etc) 7.- Comprimir .app en un ZIP y distribuir. ------------------------------------------------------------------- EXPLICACIONES: ACTUALIZACIONES, INSTALACIONES PARCIALES: (y en general, para meter ficheros en un gvSIG ya instalado) Para eso está "actualizador.app". Es un bundle-aplicacion creado con AppleScript. Su propósito es copiar el contenido de uno de sus directorios internos al lugar adecuado de un bundle gvSIG. Hay que poner en actualizador.app/Contents/Resources/updates/gvSIGbin/ el árbol de directorios de la actualización a instalar. Esos ficheros y directorios substituirán a los que se encuentren en el gvSIG instalado, basándose en la correspondencia entre el directorio mencionado y el directorio base del gvSIG ya existente en el mac del usuario (es decir, el directorio que contiene andami.jar; concretamente sería gvSIG.app/Contents/Resources/Java/). Por ejemplo: si ponemos en actualizador.app/Contents/Resources/updates/ los siguientes ficheros: gvSIGbin/andami.jar gvSIGbin/gvSIG/extensiones/nuevoFichero1 gvSIGbin/NuevoDirectorio1/nuevoFichero2 NativeLibs/nuevalib Al usar ese actualizador, el gvSIG actualizado habrá recibido el andami.jar nuevo, habrá añadido nuevoFichero1 a gvSIG/extensiones/, habrá creado en el nivel de andami.jar el directorio NuevoDirectorio1 con nuevoFichero2 dentro, y habrá añadido en el directorio de NativeLibs la nueva librería. Ojo: sólo se usarán esos dos directorios: ..../updates/gvSIGbin y .../updates/NativeLibs El fichero actualizador.app/Contents/Resources/configfile permite configurar algunas cosas del actualizador: --nombre que se pondrá a los bundles actualizados (opcional; se aplica al bundle autoinstalador y/o bundle sencillo de gvSIG); --numero de version del bundle que se pide al usuario (opcional; solo se usa como cadena que se mostrará junto a un mensaje localizado del estilo de "Por favor, seleccione gvSIG versión..."); --MD5 de andami.jar de el/los gvSIG actualizables (opcional; permite limitar la instalación a una versión definida de gvSIG) --sufijo a agregar al nombre de los bundles actualizados (opcional; util para que un "gvSIG" pase a llamarse "gvSIG SEXTANTE", p. ej.) --lista de ficheros a borrar Hay ejemplos y comentarios dentro del propio fichero configfile. Si el actualizador encuentra un fichero actualizador.app/Contents/Resources/updates/Info.plist, lo pondrá en el lugar adecuado del bundle del gvSIG actualizado. Será útil por ejemplo para cambiar el classpath de un nuevo gvSIG, su nombre tal como lo usa OS X, la versión de Java requerida, etc. El actualizador copia los ficheros a su destino sobreescribiendo lo que encuentre. Los directorios son creados si no existen en destino; si existen, los ficheros que contiene son añadidos. Es decir, un directorio existente con 10 ficheros no será machacado por un directorio con un sólo fichero, sino que será añadido. (este es el comportamiento intuitivamente esperable de un actualizador) La opción de borrar acepta rutas relativas (que son relativas al directorio Resources del bundle interior). Es decir, las siguientes rutas son correctas: "Java/andami.jar" y "NativeLibs/libjgdal.jnilib". También acepta rutas absolutas, pero no deberían usarse generalmente (ya que ni sabemos en qué parte del filesystem puede estar el bundle de gvSIG).