Revision 10691

View differences:

branches/v10/install/instalador-gvSIG-mac/build-comun.xml
1
<project name="bundle-gvSIG" default="init" basedir=".">
2

  
3
	<taskdef name="jarbundler" classname="net.sourceforge.jarbundler.JarBundler" />
4
	
5
	<target name="init">
6
		<jarbundler 
7
			dir="."
8
			name="gvSIG ${FULLVERSION} build ${build.number}"
9
			mainclass="com.iver.andami.Launcher"
10
			arguments="gvSIG gvSIG/extensiones"
11
			bundleid="com.iver.cit.gvsig"
12
			developmentregion = "Spanish"
13
			icon="logo gvsig.icns"  
14
			shortname="gvSIG" 
15
			stubfile="JavaApplicationStub" 
16
			version="${FULLVERSION}"
17
			build="${build.number}"
18
			infostring="gvSIG ${FULLVERSION}"
19
			vmoptions ="-Xmx500M"
20
			jvmversion ="1.4+"
21
			extraclasspath = "andami.jar,lib/log4j-1.2.8.jar,lib/beans.jar,lib/gvsig-i18n.jar,lib/iver-utiles.jar,lib/castor-0.9.5.3-xml.jar,lib/crimson.jar,lib/xerces_2_5_0.jar,lib/javaws.jar,lib/xml-apis.jar,lib/JWizardComponent.jar,lib/looks-2.0.2.jar"
22
			workingdirectory  = "$JAVAROOT" 
23
			showplist="true"
24
			>
25
			
26
			<javaproperty name="apple.laf.useScreenMenuBar" value="true"/>
27
			<javaproperty name="java.library.path" value="$JAVAROOT/../NativeLibs"/>
28
			
29
			<!-- jarfileset no incluye nada, pero evita quejas de jarbundler -->
30
			<jarfileset dir="." includes="nothing!" excludes="*"/>
31
			<javafileset dir="../../_fwAndami/" excludes="bin/ src/"/>
32
		</jarbundler>
33

  
34
	</target>
35

  
36
</project>
branches/v10/install/instalador-gvSIG-mac/build-10_3.xml
1
<project name="bundle-gvSIG" default="init" basedir=".">
2
	<property name="FULLVERSION" value="1_0_1"/>
3
	<!-- we store the resulting installer in this directory: -->
4
	<property name="INSTALLER_DIR" location="gvSIG-${FULLVERSION}_installer" />
5

  
6
	
7
	<target name="init">
8
		<ant antfile="build-comun.xml"/>
9
	</target>
10

  
11
</project>
branches/v10/install/instalador-gvSIG-mac/build-10_4.xml
1
<project name="bundle-gvSIG" default="init" basedir=".">
2
	<property name="FULLVERSION" value="1_0_1"/>
3
	<!-- we store the resulting installer in this directory: -->
4
	<property name="INSTALLER_DIR" location="gvSIG-${FULLVERSION}_installer" />
5

  
6
	
7
	<target name="init">
8
		<ant antfile="build-comun.xml"/>
9
	</target>
10

  
11
</project>
branches/v10/install/instalador-gvSIG-mac/HOWTO-BUILD.txt
1
Para generar el bundle para Mac, se debe lanzar el script de Ant "build.xml".
1
INSTALACIONES COMPLETAS:
2
Para generar el bundle (.app) para Mac, se debe lanzar el script de Ant "build.xml".
2 3
Supone definida la variable build.number .
3
Define FULLVERSION=1.0
4
Ese script de Ant hacen uso de 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.
4
Dentro define FULLVERSION (habr? que cambiarlo para cada versi?n mayor, claro)
5
build.xml llama a build-bundle.xml para crear el bundle de gvSIG; luego lo mover? dentro del bundle "autoinstalador". 
6
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.
5 7
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). 
6 8

  
7
El classpath que usar? gvSIG est? hardcoded en linea "extraclasspath" de task jarbundler de build-comun.xml. Ese classpath debe ser el mismo que se define en el gvSIG.sh de Linux, por ejemplo.
9
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.
10

  
11

  
12

  
13
ACTUALIZACIONES, INSTALACIONES PARCIALES:
14
(y en general, para meter ficheros en un gvSIG ya instalado)
15
Para eso est? "actualizador.app".
16
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.
17
Ese directorio ..../gvSIGbin/ es el equivalente al gvSIG/bin/ de Linux. Por ejemplo, podr?amos encontrar ..../gvSIGbin/andami.jar.
18

  
19
El fichero actualizador.app/Contents/Resources/configfile permite configurar algunas cosas del actualizador:
20
--nombre que se pondr? a los bundles actualizados,
21
--nombre del bundle que se pide al usuario,
22
--MD5 de andami.jar de el/los gvSIG actualizables (opcional)
23
Est? suficientemente comentado dentro del propio fichero.
24

  
25
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.
26

  
27
El actualizador copia los ficheros a su destino, substituyendo lo que encuentre.
28

  
29

  
30

  
31
EXPLICACION GENERAL:
32
OS X puede ejecutar un fichero.jar con un doble click, pero eso es equivalente a "java fichero.jar", sin m?s par?metros.
33
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.
34
Un bundle es un directorio con nombre *.app y una cierta estructura.
35
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.
36
En el caso de aplicaciones java, tambi?n incluye el classpath, par?metros para la aplicaci?n y la JVM, etc.
37
En bundle.app/Contents/Resources/Java/ ir? una copia del directorio gvsig/bin/ (de Linux, por ejemplo: todo lo java).
38
De todo esto se encarga build-bundle.xml.
39

  
40
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.
41
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).
42
La estructura que nos interesa del autoinstalador es:
43
autoinstalador.app/
44
	Contents/
45
		Resources/
46
			instalacion/
47
				(JAI para OS X 10.3, JAI I/O, programa java para chequear instalacion)
48
			gvSIG/
49
				bundle gvSIG.app
50
			(...directorios de localizaci?n...)
51

  
52
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.
53

  
54
Nota: un usuario de mac "normal" posiblemente no sepa qu? es un bundle. La forma normal de llamarlos es "aplicaci?n".
branches/v10/install/instalador-gvSIG-mac/build.xml
5 5
	
6 6

  
7 7
	<target name="init">
8
		<ant antfile="build-comun.xml"/>
8
		<ant antfile="build-bundle.xml"/>
9 9
		
10
		<!-- tenemos un bundle mac, pero sin libs nativas-->
10
		<!-- hasta aqui tenemos un bundle mac, pero sin libs nativas-->
11 11
		<!-- crear dir NativeLibs-->
12 12
		<mkdir dir="${NOMBRE_BUNDLE}.app/Contents/Resources/NativeLibs"/>
13 13
		<!-- copiar dentro dylibs, jnilibs-->
......
16 16
			>
17 17
			<fileset dir="../../binaries/mac/raster/" includes="**/*.dylib **/*.jnilib"/>
18 18
		</copy>
19
		<!-- copiar jars en gvSIG/extensiones/...-->
19
		<!-- copiar jars para JNI en gvSIG/extensiones/...-->
20 20
		<delete>
21 21
		  	<fileset dir="${NOMBRE_BUNDLE}.app/Contents/Resources/Java/gvSIG/extensiones/com.iver.cit.gvsig/lib" includes="jgdal*.jar jmrsid*.jar"/>
22 22
			<!--para asegurarnos de que no hay jgdal o jmrsid duplicados, lo cual provocaría error -->
branches/v10/install/instalador-gvSIG-mac/build-bundle.xml
5 5
	<target name="init">
6 6
		<jarbundler 
7 7
			dir="."
8
			name="gvSIG ${FULLVERSION} build ${build.number}"
8
			name="${NOMBRE_BUNDLE}"
9 9
			mainclass="com.iver.andami.Launcher"
10 10
			arguments="gvSIG gvSIG/extensiones"
11 11
			bundleid="com.iver.cit.gvsig"

Also available in: Unified diff