INSTALACIONES COMPLETAS: Para generar el bundle (.app) para Mac, se debe lanzar el script de Ant "build.xml". Supone definida la variable build.number . Dentro define FULLVERSION (habrá que cambiarlo para cada versión mayor, claro) build.xml llama a build-bundle.xml para crear el bundle de gvSIG; luego lo moverá dentro del bundle "autoinstalador". build-bundle.xml usa un Ant Task llamado Jarbundler, que se puede obtener en http://jarbundler.sourceforge.net/. Hay que instalarlo en la librería del Ant que se use. Si se desea usar con el Ant incluido en Eclipse, además se debe añadir xercesImpl.jar, que va incluido en los Ant "normales" pero no en el de Eclipse. (También se puede redefinir el ANTHOME en las preferencias de Eclipse para apuntar a un Ant instalado aparte, en el se haya instalador el jarbundler). El classpath que usará gvSIG está hardcoded en linea "extraclasspath" de task jarbundler de build-bundle.xml. Ese classpath debe ser el mismo que se define en el gvSIG.sh de Linux, por ejemplo. ACTUALIZACIONES, INSTALACIONES PARCIALES: (y en general, para meter ficheros en un gvSIG ya instalado) Para eso está "actualizador.app". Hay que poner en actualizador.app/Contents/Resources/updates/gvSIGbin/ los ficheros, con su ruta completa de directorios. Esos ficheros substituirán a los que se encuentren en el gvSIG instalado. Ese directorio ..../gvSIGbin/ es el equivalente al gvSIG/bin/ de Linux. Por ejemplo, podríamos encontrar ..../gvSIGbin/andami.jar. El fichero actualizador.app/Contents/Resources/configfile permite configurar algunas cosas del actualizador: --nombre que se pondrá a los bundles actualizados, --nombre del bundle que se pide al usuario, --MD5 de andami.jar de el/los gvSIG actualizables (opcional) Está suficientemente comentado dentro del propio fichero. Si el actualizador encuentra un fichero actualizador.app/Contents/Resources/updates/Info.plist, lo pondrá en el bundle del gvSIG actualizado. Será útil por ejemplo para cambiar el classpath de un nuevo gvSIG, su nombre tal como lo usa OS X, etc. El actualizador copia los ficheros a su destino, substituyendo lo que encuentre. EXPLICACION GENERAL: OS X puede ejecutar un fichero.jar con un doble click, pero eso es equivalente a "java fichero.jar", sin más parámetros. Para que se ejecute con unos parámetros y un classpath, un icono propio y la información necesaria para parecer una aplicación normal de mac, lo convertimos en un bundle. Un bundle es un directorio con nombre *.app y una cierta estructura. bundle.app/Contents/Info.plist es un fichero XML con la info necesaria para que OS X sepa ciertas cosas sobre la aplicación: ficheros que puede abrir, icono, nombre/s que presentar al usuario, versión. En el caso de aplicaciones java, también incluye el classpath, parámetros para la aplicación y la JVM, etc. En bundle.app/Contents/Resources/Java/ irá una copia del directorio gvsig/bin/ (de Linux, por ejemplo: todo lo java). De todo esto se encarga build-bundle.xml. Luego, como en mac no es normal usar instaladores (sino que las aplicaciones son autocontenidas: se instalan copiando el bundle al disco duro, se desinstalan tirando el bundle a la papelera), usamos una pequeña aplicación auxiliar: autoinstalador.app. Autoinstalador.app está pensado para contener el bundle de gvSIG creado en el paso anterior. De forma que el usuario ejecuta el autoinstalador con un doble click, y éste se encarga de comprobar que JAI y JAI I/O están correctamente instalados. Si no es así los instala. Y acto seguido ejecuta el bundle de gvSIG que lleva dentro, de forma que para el usuario la instalación es transparente (pero se le avisa de lo que está pasando). La estructura que nos interesa del autoinstalador es: autoinstalador.app/ Contents/ Resources/ instalacion/ (JAI para OS X 10.3, JAI I/O, programa java para chequear instalacion) gvSIG/ bundle gvSIG.app (...directorios de localización...) build.xml se encarga de llamar a build-bundle.xml; luego, de añadir las librerías nativas para mac; y luego, de meter el bundle de gvSIG en el bundle autoinstalador. El resultado final es un autoinstalador completo. Nota: un usuario de mac "normal" posiblemente no sepa qué es un bundle. La forma normal de llamarlos es "aplicación".