Revision 28816

View differences:

tags/tmp_build/install/build.properties
1
MANDATORY_EXTENSIONS=com.iver.cit.gvsig,com.iver.core,com.iver.gvsig.addeventtheme,org.gvsig.iconThemeBase,org.gvsig.help
2

  
3
#EXTENSIONS=com.iver.cit.gvsig.cad,es.gva.cit.gvsig.catalogClient,com.iver.cit.gvsig.jdbc_spatial,com.iver.cit.gvsig.wcs,com.iver.cit.gvsig.wfs2,com.iver.cit.gvsig.wms,com.iver.gvsig.datalocator,com.iver.cit.gvsig.geoprocess,com.iver.cit.gvsig.oracle_spatial,com.iver.cit.gvsig.geoprocessextensions,org.gvsig.georeferencing,org.gvsig.rastertools,org.gvsig.scripting,com.iver.gvsig.centerviewpoint,es.prodevelop.cit.gvsig.arcims,com.iver.gvsig.expressionfield,com.iver.cit.gvsig.annotation,org.gvsig.crs,org.gvsig.sde,
4
#EXTENSIONS=com.iver.cit.gvsig.cad,es.gva.cit.gvsig.catalogClient,com.iver.cit.gvsig.jdbc_spatial,com.iver.cit.gvsig.wcs,com.iver.cit.gvsig.wfs2,com.iver.cit.gvsig.wms,com.iver.gvsig.datalocator,com.iver.cit.gvsig.geoprocess,com.iver.cit.gvsig.oracle_spatial,com.iver.cit.gvsig.geoprocessextensions,org.gvsig.rastertools,org.gvsig.scripting,com.iver.gvsig.centerviewpoint,com.iver.gvsig.expressionfield,com.iver.cit.gvsig.annotation,org.gvsig.crs,org.gvsig.sde,org.gvsig.remotesensing,org.gvsig.graph,org.gvsig.extended-symbology,org.gvsig.georeferencing,es.prodevelop.cit.gvsig.arcims,org.gvsig.topology,es.unex.sextante,org.gvsig.extDockingSkin,org.gvsig.gpe,org.gvsig.tableSummarize,org.gvsig.selectionTools,org.gvsig.backup,org.gvsig.quickInfo,es.iver.derivedGeom,org.gvsig.hyperlink,org.gvsig.i18n,org.gvsig.quickPrint
5
EXTENSIONS=com.iver.cit.gvsig.cad,es.gva.cit.gvsig.catalogClient,com.iver.cit.gvsig.jdbc_spatial,com.iver.cit.gvsig.wcs,com.iver.cit.gvsig.wfs2,com.iver.cit.gvsig.wms,com.iver.gvsig.datalocator,com.iver.cit.gvsig.geoprocess,com.iver.cit.gvsig.oracle_spatial,com.iver.cit.gvsig.geoprocessextensions,org.gvsig.rastertools,org.gvsig.scripting,com.iver.gvsig.centerviewpoint,com.iver.gvsig.expressionfield,com.iver.cit.gvsig.annotation,org.gvsig.crs,org.gvsig.sde,org.gvsig.remotesensing,org.gvsig.extended-symbology,org.gvsig.georeferencing,es.prodevelop.cit.gvsig.arcims,org.gvsig.gpe,org.gvsig.tableSummarize,org.gvsig.selectionTools,org.gvsig.backup,org.gvsig.quickInfo,es.iver.derivedGeom,org.gvsig.hyperlink,org.gvsig.i18n,org.gvsig.quickPrint,org.gvsig.layerLoadingOrder,org.gvsig.tableExport,org.gvsig.tableImport
6

  
7

  
8
version=1.9a
9
bversion=1_9a
10
APPNAME=gvSIG
11
OUTPUT_DIR=/tmp/versiones/v${bversion}/${build.number}
12

  
0 13

  
tags/tmp_build/install/distribucion_1.5.sh
1
#!/bin/bash
2

  
3
# Si se produce un error, salimos inmediatamente
4
set -e
5

  
6
# Obtenemos el locale
7
LOC=`echo $LANG | sed 's/_.*//'`
8

  
9
# Comprobar que estamos en el directorio adecuado
10
if [ "$LOC" = "es" ] ; then
11
  ERROR_BASEDIR="Este script debe invocarse desde el directorio raiz del workspace o desde el directorio \'install\'"
12
else
13
  ERROR_BASEDIR="This script must be run from the workspace\'s root directory or from the \'install\' directory"
14
fi
15
[ -d _fwAndami ] && [ -d install ] && cd install
16
if [ ! -d instalador-gvSIG-lin ] || [ ! -d instalador-gvSIG-win ] || [ ! -d ../_fwAndami ] ; then
17
        echo $ERROR_BASEDIR
18
        exit 1 ;
19
fi
20

  
21
DIR_BASE=`pwd`
22

  
23
source variables.sh
24
# Get a version with format 1_0_alpha
25
UNDERSCORE_VERSION=`echo $FULLVERSION | sed 'y/./_/'`
26
# Get a version with format 10_alpha
27
BRIEFVERSION=`echo $FULLVERSION | sed 's/\.//'`
28
# The name of the dir which will be ZIPed, containing the resulting installer
29
INSTALLER_DIR="$APPNAME"-$FULLVERSION\_installer
30
JARNAME="$APPNAME"-"$FULLVERSION".jar
31
# The extension targets on the this version of gvSIG:
32
GVSIG_VERSION=1.0
33

  
34
BUILDNUMBER=`sed -n 's/build.number=//p' ../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/build.number`
35

  
36
#ZIPNAME="$APPNAME"-"$UNDERSCORE_VERSION"\_"$BUILDNUMBER".zip
37
DIR_LIN=instalador-gvSIG-lin
38
DIR_WIN=instalador-gvSIG-win
39
DIR_MAC=instalador-gvSIG-mac
40
WINDOWSZIP="$APPNAME"-"$BRIEFVERSION"\_"$BUILDNUMBER"-windows-i586_j1_5.7z
41
LINUXZIP="$APPNAME"-"$BRIEFVERSION"\_"$BUILDNUMBER"-linux-i586_J1_5.tgz
42

  
43
LINUXBIN="$APPNAME"-"$BRIEFVERSION"\_"$BUILDNUMBER"-linux-i586_J1_5.bin
44
LINUXBINWITHJRE="$APPNAME"-"$BRIEFVERSION"\_"$BUILDNUMBER"-linux-i586-withjre_J1_5.bin
45

  
46
WINDOWSEXE="$APPNAME"-"$BRIEFVERSION"\_"$BUILDNUMBER"-windows-i586_J1_5.exe
47
WINDOWSEXEWITHJRE="$APPNAME"-"$BRIEFVERSION"\_"$BUILDNUMBER"-windows-i586-withjre_J1_5.exe
48

  
49
MAC_10_ZIP="$APPNAME"-"$BRIEFVERSION"\_"$BUILDNUMBER"-mac-10_4.zip
50

  
51
#Directorios
52
#OUTPUT_DIR=/mnt/sercartlin/grupo-sig-ca/Testing/Versiones/v"$FULLVERSION"\_"$BUILDNUMBER"
53
OUTPUT_DIR="$TARGET_DIR"/v"$FULLVERSION"\_"$BUILDNUMBER"
54
PATH_SOURCE_EXT=../_fwAndami/gvSIG/extensiones
55
PATH_SOURCE_MANDAT_EXT=../../../../../_fwAndami/gvSIG/extensiones
56

  
57

  
58
echo "*****************"
59
echo "      BASE       "
60
echo "*****************"
61
# Para Linux
62
echo -n "$DIR_BASE"/"$DIR_LIN" "-- "
63
cd "$DIR_BASE"/"$DIR_LIN"
64
rm bin -rf
65
mkdir -p bin/gvSIG/extensiones
66
cp installer_files/LEEME installer_files/LLIG-ME installer_files/README bin
67
cp resources/gpl.txt bin
68
# No enlazamos directamente el directorio lib para no incluir el directorio CVS
69
mkdir -p bin/lib
70
cd "$DIR_BASE"/"$DIR_LIN"/bin/lib
71
for i in ../../../../_fwAndami/lib/*.jar ; do
72
  ln -s "$i" .
73
done
74
for i in ../../../../_fwAndami/lib/*.zip ; do
75
  ln -s "$i" .
76
done
77
cd "$DIR_BASE"/"$DIR_LIN"
78
ln -s ../../../_fwAndami/andami.jar bin/
79
ln -s ../../../_fwAndami/castor.properties bin/
80
#cp resources/andami-config.xml bin
81
echo OK.
82

  
83

  
84
# Para Windows
85
echo -n "$DIR_BASE"/"$DIR_WIN" "-- "
86
cd "$DIR_BASE"/"$DIR_WIN"
87
rm bin -rf
88
mkdir -p bin/gvSIG/extensiones
89
cp installer_files/LEEME.txt installer_files/LLIG-ME.txt installer_files/README.txt bin
90
cp resources/gpl.txt bin
91
# No enlazamos directamente el directorio lib para no incluir el directorio CVS
92
mkdir -p bin/lib
93
cd "$DIR_BASE"/"$DIR_WIN"/bin/lib
94
for i in ../../../../_fwAndami/lib/*.jar ; do
95
  ln -s "$i" .
96
done
97
for i in ../../../../_fwAndami/lib/*.zip ; do
98
  ln -s "$i" .
99
done
100
cd "$DIR_BASE"/"$DIR_WIN"
101
ln -s ../../../_fwAndami/andami.jar bin
102
ln -s ../../../_fwAndami/castor.properties bin/
103
#cp resources/andami-config.xml bin
104

  
105
#Copiamos el lanzador y sus tracuciones al tmpResources
106
rm -Rf tmpResources
107
mkdir tmpResources
108
cp -R ../launcher/izpack-launcher-1.3/dist/* ./tmpResources
109
mv ./tmpResources/launcher-Win32.exe ./tmpResources/gvSIG.exe
110
cp -R ./jre_installers_1.5/jai_imageio-1_0_01-lib-windows ./tmpResources
111
#Quitamos el ini, manifest y los CVS
112
rm ./tmpResources/*.ini ./tmpResources/*.manifest
113
find ./tmpResources -name CVS -type d -exec rm -rf {} 2> /dev/null ';' || true
114
cp ./resources/gvSIG.ini.J15 ./tmpResources/gvSIG.ini
115
echo OK.
116

  
117
# Estas extensiones se copian directamente al directorio destino, ya que no vamos a dar
118
# opcion a no instalarlas, son obligatorias
119
cd "$DIR_BASE"
120
i=0
121
while [ ! -z ${MANDATORY_EXTENSIONS[$i]} ]
122
do
123
  echo ln -s "$PATH_SOURCE_MANDAT_EXT"/${MANDATORY_EXTENSIONS[$i]} "$DIR_LIN"/bin/gvSIG/extensiones
124
  ln -s "$PATH_SOURCE_MANDAT_EXT"/${MANDATORY_EXTENSIONS[$i]} "$DIR_LIN"/bin/gvSIG/extensiones
125
  echo ln -s "$PATH_SOURCE_MANDAT_EXT"/${MANDATORY_EXTENSIONS[$i]} "$DIR_WIN"/bin/gvSIG/extensiones
126
  ln -s "$PATH_SOURCE_MANDAT_EXT"/${MANDATORY_EXTENSIONS[$i]} "$DIR_WIN"/bin/gvSIG/extensiones
127
  i=`expr $i + 1`
128
done
129

  
130
echo "*****************"
131
[ $LOC = "es" ] && echo "   EXTENSIONES   "
132
[ $LOC != "es" ] && echo "   EXTENSIONS   "
133
echo "*****************"
134

  
135
rm -rf $DIR_LIN/extensiones
136
mkdir $DIR_LIN/extensiones
137
rm -rf $DIR_WIN/extensiones
138
mkdir $DIR_WIN/extensiones
139

  
140
i=0
141
while [ ! -z ${EXTENSIONS[$i]} ]
142
do
143
  [ $LOC = "es" ] && echo "Copiando "${EXTENSIONS[$i]}
144
  [ $LOC != "es" ] && echo "Copying "${EXTENSIONS[$i]}
145
  echo cp "$PATH_SOURCE_EXT"/${EXTENSIONS[$i]} "$DIR_LIN"/extensiones -rf
146
  cp "$PATH_SOURCE_EXT"/${EXTENSIONS[$i]} "$DIR_LIN"/extensiones -rf
147
  echo cp "$PATH_SOURCE_EXT"/${EXTENSIONS[$i]} "$DIR_WIN"/extensiones -rf
148
  cp "$PATH_SOURCE_EXT"/${EXTENSIONS[$i]} "$DIR_WIN"/extensiones -rf
149
  i=`expr $i + 1`
150
done
151

  
152
## Eliminamos el driver de oracle
153
find -L . -name ojdbc14.jar -type f -exec rm -rf {} 2> /dev/null ';' || true
154
find -L . -name gt2-oracle-spatial-2.2.1.jar -type f -exec rm -rf {} 2> /dev/null ';' || true
155
find -L . -name sdoapi.jar -type f -exec rm -rf {} 2> /dev/null ';' || true
156

  
157

  
158
echo "*****************"
159
echo "    INST-WIN     "
160
echo "*****************"
161
# Generar el instalador (jar) para windows
162
cd "$DIR_BASE"/"$DIR_WIN"
163
rm "$JARNAME" -f
164
ant -DJARNAME="$JARNAME" -DGVSIG_VERSION="$GVSIG_VERSION" -DAPPNAME="$APPNAME" -DINSTALL_FILE="install_15.xml"
165

  
166
echo "*****************"
167
echo "    INST-LIN     "
168
echo "*****************"
169
# Generar el instalador (jar) para Linux
170
cd "$DIR_BASE"/"$DIR_LIN"
171
rm "$JARNAME" -f
172
ant -DJARNAME="$JARNAME" -DGVSIG_VERSION="$GVSIG_VERSION" -DAPPNAME="$APPNAME"
173

  
174

  
175
echo "******************"
176
[ $LOC = "es" ] && echo " GENERAR DISTRIB "
177
[ $LOC != "es" ] && echo " GENERATE DISTRIB "
178
echo "******************"
179
# Generar el tar.gz para Linux y el EXE para Windows
180

  
181
mkdir -p "$OUTPUT_DIR"
182
echo "- Linux"
183
## Para Linux
184
cd "$DIR_BASE"/"$DIR_LIN"
185
rm -Rf "$INSTALLER_DIR"
186
cp -a installer_files "$INSTALLER_DIR"
187
rm -R "$INSTALLER_DIR"/CVS 2> /dev/null && true
188
# Set the correct version number in the scripts and files
189
if [ -f  "$INSTALLER_DIR"/install.sh ] ; then
190
  sed "s/JARNAME/$JARNAME/" "$INSTALLER_DIR"/install.sh > "$INSTALLER_DIR"/install.sh.bak
191
  mv "$INSTALLER_DIR"/install.sh.bak "$INSTALLER_DIR"/install.sh ;
192
  chmod +x "$INSTALLER_DIR"/install.sh
193
fi
194
#mv "$JARNAME" "$INSTALLER_DIR"
195
cp "$JARNAME" "$INSTALLER_DIR"
196
tar -cvzf "$LINUXZIP" "$INSTALLER_DIR"
197
rm -Rf "$INSTALLER_DIR"
198
mv "$LINUXZIP" "$OUTPUT_DIR"
199

  
200
## Nueva instalacion para linux
201
cd "$DIR_BASE"/"$DIR_LIN"
202
rm -Rf "$INSTALLER_DIR"
203
mkdir -p "$INSTALLER_DIR"/tmp_gvSIGInstall
204
cp "$JARNAME" "$INSTALLER_DIR"/tmp_gvSIGInstall
205
cd "$INSTALLER_DIR"
206
cp -R "$DIR_BASE"/launcher/izpack-launcher-1.3_linux/dist/* ./tmp_gvSIGInstall
207
find . -name CVS -type d -exec rm -rf {} 2> /dev/null ';' || true
208
rm ./tmp_gvSIGInstall/launcher.ini
209
cp "$DIR_BASE"/"$DIR_LIN"/resources/launcher.ini.j15 ./tmp_gvSIGInstall/launcher.ini
210
sed "s/%JARNAME%/$JARNAME/" ./tmp_gvSIGInstall/launcher.ini > ./tmp_gvSIGInstall/launcher.ini.bak
211
mv ./tmp_gvSIGInstall/launcher.ini.bak ./tmp_gvSIGInstall/launcher.ini;
212

  
213
tar -cvzf ./tmp.tgz ./tmp_gvSIGInstall
214
cp "$DIR_BASE"/"$DIR_LIN"/jre/*-1_5_0_*.gz ./tmp_gvSIGInstall
215
tar -cvzf ./tmp_wjre.tgz ./tmp_gvSIGInstall
216
echo '#!/bin/sh' > xx.tmp
217
lcount=`cat xx.tmp "$DIR_BASE"/launcher/izpack-launcher-1.3_linux/h_gvSIG-install.sh | wc -l`
218
lcount=$(($lcount+2)) # sumamos dos: uno por la linea siguiente y otro para el inicio
219
echo "lcount=$lcount" >> xx.tmp
220
cat xx.tmp "$DIR_BASE"/launcher/izpack-launcher-1.3_linux/h_gvSIG-install.sh ./tmp.tgz  > "$LINUXBIN"
221
cat xx.tmp "$DIR_BASE"/launcher/izpack-launcher-1.3_linux/h_gvSIG-install.sh ./tmp_wjre.tgz  > "$LINUXBINWITHJRE"
222
rm xx.tmp
223
chmod a+x "$LINUXBIN" "$LINUXBINWITHJRE"
224
mv "$LINUXBINWITHJRE" "$LINUXBIN" "$OUTPUT_DIR"
225
cd "$DIR_BASE"/"$DIR_LIN"
226
rm -Rf "$INSTALLER_DIR"
227
## Fin Nueva instalacion para linux
228
rm "$JARNAME"
229

  
230

  
231

  
232

  
233
## Para Windows
234
echo "- Windows"
235
#set -x
236
cd "$DIR_BASE"/"$DIR_WIN"
237
rm -Rf "$INSTALLER_DIR"
238
cp -a installer_files "$INSTALLER_DIR"
239

  
240
cp -aR ../launcher/izpack-launcher-1.3/dist/* "$INSTALLER_DIR"
241
rm -f "$INSTALLER_DIR"/install.bat
242
cp ./resources/launcher-Win32.ini.j15 "$INSTALLER_DIR"/launcher-Win32.ini
243

  
244
find "$INSTALLER_DIR" -name CVS -type d -exec rm -rf {} 2> /dev/null ';' || true
245

  
246
## hacemos las sustituciones de la variable
247
sed "s/%JARNAME%/$JARNAME/" "$INSTALLER_DIR"/launcher-Win32.ini > "$INSTALLER_DIR"/launcher-Win32.ini.bak
248
mv "$INSTALLER_DIR"/launcher-Win32.ini.bak "$INSTALLER_DIR"/launcher-Win32.ini;
249

  
250

  
251
mv "$JARNAME" "$INSTALLER_DIR"
252
cd "$INSTALLER_DIR"
253

  
254
if [ -f  "$DIR_BASE"/"$DIR_WIN"/"$WINDOWSZIP" ] ; then
255
	rm -f "$DIR_BASE"/"$DIR_WIN"/"$WINDOWSZIP"
256
fi
257
"$DIR_BASE"/launcher/7z/7za a -r "$DIR_BASE"/"$DIR_WIN"/"$WINDOWSZIP" *
258
cd -
259
sed "s/%TITLE%/$APPNAME-$BRIEFVERSION\_$BUILDNUMBER/" ../launcher/7z/dist_config.txt > dist_config.txt
260
cat ../launcher/7z/7zS.sfx  dist_config.txt "$WINDOWSZIP" > "$WINDOWSEXE"
261

  
262
### paquete con los instalables de JRE, Jai y Jai i/o
263
"$DIR_BASE"/launcher/7z/7za a "$DIR_BASE"/"$DIR_WIN"/"$WINDOWSZIP" "$DIR_BASE"/"$DIR_WIN"/jre_installers_1.5/*.exe
264
cat ../launcher/7z/7zS.sfx  dist_config.txt "$WINDOWSZIP" > "$WINDOWSEXEWITHJRE"
265

  
266
###
267

  
268

  
269
rm dist_config.txt
270
rm "$WINDOWSZIP"
271

  
272
rm -Rf "$INSTALLER_DIR"
273

  
274
mv "$WINDOWSEXE" "$OUTPUT_DIR"
275
mv "$WINDOWSEXEWITHJRE" "$OUTPUT_DIR"
276

  
277
# Limpiamos tmpResources
278
cd "$DIR_BASE"/"$DIR_WIN"
279
rm -r ./tmpResources
280
cd -
281

  
282

  
283
## Para Mac
284
echo "- Mac"
285
if type ant 2>/dev/null >/dev/null; then
286
	cd "$DIR_BASE"/"$DIR_MAC"
287
	if ant -Dbuild.number="$BUILDNUMBER" -f build.xml; then
288
		zip -r "$MAC_10_ZIP" gvSIG*.app
289
		rm -r gvSIG*.app
290
		mv "$MAC_10_ZIP" "$OUTPUT_DIR"
291
	else
292
		echo "No se ha generado el paquete para Mac 10 . Compruebe que su ant tiene jarbundler instalado
293

  
294
			  Nota: debemos tener incluido en el ANT_HOME/lib el
295
	    	  jar jarbundler-1.9.jar que se puede encontrar en http://jarbundler.sourceforge.net/
296
	    "
297

  
298
	fi
299

  
300
else
301
	    echo "No se ha encontrado el ant en el path de ejecucion:
302
	    Es necesario para poder generar la distribucion para el Mac.
303

  
304
	    Nota: debemos tener tambien incluido en el ANT_HOME/lib el
305
	    jar jarbundler-1.9.jar que se puede encontrar en http://jarbundler.sourceforge.net/
306
	    "
307
fi
308

  
309

  
310
## Limpiamos
311

  
312
rm -rf $DIR_LIN/extensiones
313
rm -rf $DIR_LIN/bin
314
rm -rf $DIR_WIN/extensiones
315
rm -rf $DIR_WIN/bin
316

  
317
echo "*****************"
318
echo "    FIN     "
319
echo "*****************"
320

  
321
echo ""
322
echo "Generados los ficheros:"
323
echo "$OUTPUT_DIR"
324
ls -lh "$OUTPUT_DIR"
325
cd "$DIR_BASE"
0 326

  
tags/tmp_build/install/HOWTO-BUILD.txt
1
 C?MO GENERAR EL INSTALADOR:
2
 ===========================
3
- gvSIG debe estar correctamente construido en ../_fwAndami/bin 
4
- En el fichero variables.sh hay algunas variables que nos pueden interesar, que permiten personalizar el nombre del plugin, la versi?n, el directorio destino, etc. La variable  APPNAME normalmente valdr? "gvSIG", pero puede tiener nombre si estamos empaquetando una extensi?n (por ejemplo,  "nomenclatorIGN").
5
- Definir los packs adecuados en el fichero XML de configuraci?n (install.xml), y revisar el fichero en general.
6
- Definir las extensiones a incluir en el directorio variables.sh.
7
- Lanzar el script distribucion.sh.
0 8

  
tags/tmp_build/install/instalador-gvSIG-mac/HOWTO-BUILD.txt
1
INSTALACIONES COMPLETAS:
2
Para generar el bundle (.app) para Mac, se debe lanzar el script de Ant "build.xml".
3
Supone definida la variable build.number .
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. 
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.
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). 
8

  
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; pero con jai_imageio.jar a?adido.
10

  
11

  
12

  
13
EXPLICACION DETALLADA:
14
OS X puede ejecutar un fichero.jar con un doble click, pero eso es equivalente a "java fichero.jar", sin m?s par?metros.
15
Para que se ejecute con unos par?metros y un classpath, un icono propio y la metainformaci?n necesaria para parecer una aplicaci?n normal de mac, lo convertimos en un bundle.
16
Un bundle es un directorio con nombre *.app y una cierta estructura de directorios.
17
<miBundle.app>/Contents/Info.plist es un fichero XML con la metainfo necesaria para que OS X sepa ciertas cosas sobre la aplicaci?n: ficheros que puede abrir (extensiones, mimetypes, visor o editor, etc), icono, nombre/s que presentar al usuario, numeros de versi?n...
18
En el caso de aplicaciones java, tambi?n incluye el classpath, par?metros para la aplicaci?n y la JVM, etc.
19
Para el caso de gvSIG, en <miBundle.app>/Contents/Resources/Java/ ir? una copia del directorio gvsig/bin/ de un build normal.
20
De todo esto se encarga build-bundle.xml.
21

  
22
Hasta gvSIG 1.1.x inclusive se usaba adem?s un bundle auxiliar "autoinstalador" que se encargaba de instalar JAI-ImageIO (si no lo estaba ya). Dado que causaba problemas, hemos abandonado eso y ahora se usa JAI-ImageIO en el Classpath de gvSIG.
23

  
24
Nota: un usuario "normal" (no-desarrollador) de mac posiblemente no sepa qu? es un bundle. La forma normal de llamarlos es "aplicaci?n", y se suele considerar un item indivisible.
0 25

  
tags/tmp_build/install/instalador-gvSIG-mac/.cvsignore
1
gvSIG*autoinstalador.app
0 2

  
tags/tmp_build/install/instalador-gvSIG-mac/build.xml
1
<project name="bundle-gvSIG" default="init" basedir=".">
2
	<!-- Este script crea un bundle "simple" de gvSIG y lo envuelve en un bundle instalador de requisitos -->
3
	<property name="FULLVERSION" value="2.0"/>
4
	<property name="NOMBRE_BUNDLE" value="gvSIG ${FULLVERSION} build ${build.number}"/>
5
	<property name="NOMBRE_BUNDLE_AUTOINSTALADOR" value="${NOMBRE_BUNDLE} autoinstalador"/>
6
   	<property name="DIR_DESTINO" value="${basedir}"/>
7

  
8
    <property name="jvmversion" value="1.5*"/>
9
	<!-- para OS X 10.4 y 10.5 ==> jvmversion = "1.5*" 
10
			"1.4.1" significaría "usar JVM 1.4.1 estrictamente"
11
	     	"1.4*" significa "JVM 1.4.x, siendo x el máximo posible"
12
	     	"1.4+" significa "JVM 1.4 o superior" (p.ej., 1.5 si está instalado) -->
13

  
14
	<target name="init">
15
		<ant antfile="build-bundle.xml">
16
            <property name="jvmversion" value="${jvmversion}"/>
17
        </ant>
18

  
19

  
20
		<!-- Eliminada la creación del "autoinstaller" porque ya no hace falta instalar JAI-ImageIO en OS X, 
21
		sino que lo usamos en el Classpath -->
22

  
23

  
24
	</target>
25

  
26
</project>
0 27

  
tags/tmp_build/install/instalador-gvSIG-mac/HOWTO-UPDATER,EXTS.txt
1

  
2
TENGO QUE GENERAR UN INSTALADOR DE UNA EXTENSI?N PARA GVSIG-MAC. COMO LO HAGO?
3
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).
4
1.- Preparar los ficheros en su arbol de directorios, siendo el directorio de andami.jar el "raiz". 
5
Por ejemplo, supongamos una extensi?n que vaya a proveer estos ficheros a un gvSIG ya instalado:
6
<raiz>/andami.jar
7
<raiz>/gvSIG/extensiones/nuevoFichero1
8
<raiz>/NuevoDirectorio1/nuevoFichero2
9
2.- Hacer una copia de actualizador.app con un nuevo nombre (p. ej., "instalador de extension piloto de redes.app")
10
3.- Asegurarse de que tras la copia, los ficheros en <nuevo nombre>.app/Contents/MacOS/ tienen permisos de ejecuci?n. Una copia normal hecha con Ant suele perderlos!
11
4.- Copiar el arbol de directorios del paso 1 a <nuevo nombre>.app/Contents/Resources/updates/gvSIGbin/
12
5.- Revisar <nuevo nombre>.app/Contents/Resources/configfile para asegurarse de que las opciones configurables 
13
son correctas. Contiene ejemplos.
14
6.- Opcional: se puede a?adir un fichero Info.plist en <nuevo nombre>.app/Contents/Resources/updates/ si se quiere 
15
substituir el original del gvSIG instalado (para cambiar paths, par?ms de arranque de la JVM, etc)
16
7.- Comprimir <nuevo nombre>.app en un ZIP y distribuir.
17

  
18
-------------------------------------------------------------------
19
EXPLICACIONES: 
20

  
21
ACTUALIZACIONES, INSTALACIONES PARCIALES:
22
(y en general, para meter ficheros en un gvSIG ya instalado)
23
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.
24
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/).
25
Por ejemplo: si ponemos en actualizador.app/Contents/Resources/updates/gvSIGbin/ los siguientes ficheros:
26
andami.jar
27
gvSIG/extensiones/nuevoFichero1
28
NuevoDirectorio1/nuevoFichero2
29

  
30
Al usar ese actualizador, el gvSIG actualizado habr? recibido el andami.jar nuevo, habr? a?adido nuevoFichero1 a gvSIG/extensiones/, y habr? creado en el nivel de andami.jar el directorio NuevoDirectorio1 con nuevoFichero2 dentro.
31

  
32
El fichero actualizador.app/Contents/Resources/configfile permite configurar algunas cosas del actualizador:
33
--nombre que se pondr? a los bundles actualizados (opcional; se aplica al bundle autoinstalador y/o bundle sencillo de gvSIG);
34
--numero de version del bundle que se pide al usuario (opcional; solo se usa como cadena que se mostrar? junto a un mensaje del estilo de "Por favor, seleccione gvSIG versi?n...");
35
--MD5 de andami.jar de el/los gvSIG actualizables (opcional; permite limitar la instalaci?n a una versi?n definida de gvSIG)
36
--sufijo a agregar al nombre de los bundles actualizados (opcional; util para que un "gvSIG" pase a llamarse "gvSIG SEXTANTE", p. ej.)
37
Hay ejemplos y comentarios dentro del propio fichero configfile.
38

  
39
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.
40

  
41
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)
42
No hay opci?n implementada para borrar ficheros del destino; no parece necesario, y nos ahorramos riesgos.
43

  
44
Actualmente solo esta contemplada la posibilidad de copiar ficheros en el ?rbol de directorios a partir de donde esta andami.jar.
0 45

  
tags/tmp_build/install/instalador-gvSIG-mac/build-updater.xml
1
<project name="bundle-gvSIG" default="init" basedir=".">
2
	<property name="NOMBRE_BUNDLE" value="instalador de la extension XXX"/>
3
	<property name="DIR_DESTINO" value="${basedir}"/>
4

  
5
	<target name="init">
6
		<!-- copiamos el bundle actualizador ... -->
7
		<copy todir="${DIR_DESTINO}/${NOMBRE_BUNDLE}.app">
8
			<fileset dir="actualizador.app"/>
9
		</copy>
10
		<!-- (corregimos permisos de ejecucion que copy se ha cargado) -->
11
		<chmod dir="${DIR_DESTINO}/${NOMBRE_BUNDLE}.app/Contents/MacOS/" type="file" perm="+rwxrxrx"/>
12
		<!-- ...y copiamos cosas a su sitio dentro de autoinstalador
13
		MEJOR HACERLO A MANO?
14
		<copy todir="${NOMBRE_BUNDLE}.app/Contents/Resources/updates">
15
		LO QUE SEA; POR EJEMPLO,
16
			<fileset dir="../../binaries/mac/" includes="**/*.jar"/>
17
		</copy>
18
		-->
19
		<echo>ATENCION: SOLO SE HA HECHO UNA COPIA DEL ACTUALIZADOR VACIO, Y SE HAN CORREGIDO LOS PERMISOS. ESTAS EN EL PASO 4 DEL HOWTO-UPDATER,EXTS!</echo>
20
	</target>
21

  
22
</project>
0 23

  
tags/tmp_build/install/instalador-gvSIG-mac/.project
1
<?xml version="1.0" encoding="UTF-8"?>
2
<projectDescription>
3
	<name>instalador-gvSIG-mac_TRUNK</name>
4
	<comment></comment>
5
	<projects>
6
	</projects>
7
	<buildSpec>
8
	</buildSpec>
9
	<natures>
10
	</natures>
11
</projectDescription>
0 12

  
tags/tmp_build/install/instalador-gvSIG-mac/uninstallJAIIO.app/Contents/Script Debugger.list
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
<plist version="1.0">
4
<dict>
5
	<key>SD4Version</key>
6
	<string>4.0.8</string>
7
	<key>SDBundleVersion</key>
8
	<string>1.0b1</string>
9
	<key>SDWindowState</key>
10
	<dict>
11
		<key>chevronSyntax</key>
12
		<false/>
13
		<key>editorState</key>
14
		<dict>
15
			<key>showInvisibles</key>
16
			<false/>
17
			<key>showLineNumbers</key>
18
			<false/>
19
			<key>showSpaces</key>
20
			<false/>
21
			<key>showTabStops</key>
22
			<false/>
23
			<key>wrapLines</key>
24
			<false/>
25
		</dict>
26
		<key>errorsDividerPos</key>
27
		<real>0.0</real>
28
		<key>expressionsDividerPos</key>
29
		<real>117</real>
30
		<key>lineEndings</key>
31
		<integer>2</integer>
32
		<key>resultHeight</key>
33
		<real>134</real>
34
		<key>resultState</key>
35
		<dict>
36
			<key>browserDividerPos</key>
37
			<real>132</real>
38
			<key>desiredView</key>
39
			<integer>0</integer>
40
			<key>fsPathView</key>
41
			<integer>0</integer>
42
			<key>prettyPrint</key>
43
			<true/>
44
			<key>showInvisibles</key>
45
			<false/>
46
			<key>showSpaces</key>
47
			<false/>
48
			<key>showTabStops</key>
49
			<false/>
50
			<key>wrapLines</key>
51
			<true/>
52
		</dict>
53
		<key>resultsEdge</key>
54
		<integer>2</integer>
55
		<key>resultsOpen</key>
56
		<true/>
57
		<key>resultsWidth</key>
58
		<real>320</real>
59
		<key>selectionLength</key>
60
		<integer>0</integer>
61
		<key>selectionLocation</key>
62
		<integer>88</integer>
63
		<key>showDescriptionRulers</key>
64
		<true/>
65
		<key>showNavigationBar</key>
66
		<true/>
67
		<key>showStartup</key>
68
		<false/>
69
		<key>stackHeight</key>
70
		<real>137</real>
71
		<key>stayOpen</key>
72
		<false/>
73
		<key>toolbarVisible</key>
74
		<true/>
75
		<key>traceSpeed</key>
76
		<real>0.64999997615814209</real>
77
		<key>variablesDividerPos</key>
78
		<real>117</real>
79
		<key>variablesHeight</key>
80
		<real>218</real>
81
		<key>windowFrame</key>
82
		<string>44 125 1092 653 0 0 1280 778 </string>
83
		<key>windowSize</key>
84
		<string>{1092, 708}</string>
85
	</dict>
86
</dict>
87
</plist>
tags/tmp_build/install/instalador-gvSIG-mac/uninstallJAIIO.app/Contents/Info.plist
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
<plist version="1.0">
4
<dict>
5
	<key>CFBundleAllowMixedLocalizations</key>
6
	<true/>
7
	<key>CFBundleDevelopmentRegion</key>
8
	<string>English</string>
9
	<key>CFBundleExecutable</key>
10
	<string>applet</string>
11
	<key>CFBundleIconFile</key>
12
	<string>logo gvsig.icns</string>
13
	<key>CFBundleInfoDictionaryVersion</key>
14
	<string>6.0</string>
15
	<key>CFBundleName</key>
16
	<string>uninstallJAIIO</string>
17
	<key>CFBundlePackageType</key>
18
	<string>APPL</string>
19
	<key>CFBundleSignature</key>
20
	<string>aplt</string>
21
	<key>LSRequiresCarbon</key>
22
	<true/>
23
</dict>
24
</plist>
tags/tmp_build/install/instalador-gvSIG-mac/uninstallJAIIO.app/Contents/Resources/description.rtfd/TXT.rtf
1
{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
2
{\fonttbl}
3
{\colortbl;\red255\green255\blue255;}
4
}
tags/tmp_build/install/instalador-gvSIG-mac/uninstallJAIIO.app/Contents/Resources/Scripts/main.recover.txt
1
--set JAIIO_installed to 
+--set better_uninstall to
+set but1 to localized string "Keep It"
+set but2 to localized string "Uninstall?"
+display alert (localized string "JAI-ImageIO is installed") message (localized string "Previous gvSIG versions needed it and offered to install it. But it has been found to cause problems with Java applets in web browsers like Firefox, Camino and Opera.
+
+Therefore, we recommend JAI-ImageIO to be uninstalled. Current and future versions of gvSIG do not need it.
+
+Do you want to uninstall it?") buttons {but1, but2} default button but2 as warning
+
+set theResult to result
+
+if button returned of theResult is but2 then
+	do shell script "rm ~/Library/Java/Extensions/jai_imageio.jar"
+	--display alert (localized string "Uninstalled correctly.") message (localized string "JAI-ImageIO has been uninstalled.") as informational
+else
+	set but1 to localized string "Launch gvSIG"
+	--set but2 to localized string "Ask Again Next Time"
+	display alert (localized string "JAI-ImageIO has not been uninstalled.") message ?
+		(localized string "If you want to uninstall it in a future, you can do so by hand.
+
+To uninstall, delete the file jai_imageio.jar contained in: your Home folder -> Library -> Java -> Extensions.") buttons {but1} default button but1 as warning
+	
+	--set theResult to result
+	--if button returned of theResult is but1 then
+	do shell script "defaults write ~/gvSIG/launcher \"Keep installed JAI-ImageIO\" -bool yes"
+	--end if
+end if
Index: tags/tmp_build/install/instalador-gvSIG-mac/uninstallJAIIO.app/Contents/Resources/en.lproj/Localizable.strings
tags/tmp_build/install/instalador-gvSIG-mac/uninstallJAIIO.app/Contents/PkgInfo
1
APPLaplt
tags/tmp_build/install/instalador-gvSIG-mac/build-bundle.xml
1
<project name="bundle-gvSIG" default="init" basedir=".">
2
	<dirname file="${ant.file.bundle-gvSIG}" property="DIR_ORIGEN"/>
3
	<property name="DIR_WORKSPACE" location="${DIR_ORIGEN}/../../"/>
4

  
5
	<property name="DIR_DESTINO" value="${DIR_ORIGEN}"/>
6
	<!-- Este script crea el bundle gvSIG con script previo (para ajustar variables de entorno, p.ej)
7
	y con librerias nativas -->
8

  
9
	<property name="JUNIT_HOME" location="${DIR_WORKSPACE}/binaries/ant/" />
10
	<taskdef name="jarbundler" classname="net.sourceforge.jarbundler.JarBundler">
11
		<classpath>
12
			<pathelement location="${DIR_WORKSPACE}/binaries/ant/jarbundler-1.9.jar"/>
13
			<pathelement location="${DIR_WORKSPACE}/_fwAndami/lib/xerces_2_5_0.jar"/>
14
		</classpath>
15
	</taskdef>
16

  
17
	<taskdef resource="net/sf/ant4eclipse/antlib.xml" >
18
			<classpath>
19
				<pathelement location="${DIR_WORKSPACE}/binaries/ant/ant4eclipse-0.5.0.rc1.jar"/>
20
			</classpath>
21
	</taskdef>
22

  
23
    <property name="jvmversion" value="1.5*"/>
24

  
25
	<target name="init">
26
	    <getEclipseClasspath
27
	    	property="tmp_andamiClasspath"
28
	        workspace="${DIR_WORKSPACE}"
29
	        projectName="_fwAndami"
30
	    	relative="yes"
31
	    	pathseparator=","
32
	    	runtime="true"
33
	   	/>
34
		<concat destfile="${DIR_ORIGEN}/tmp_andamiClasspath">andami.jar,${tmp_andamiClasspath}</concat>
35
		<replace file="${DIR_ORIGEN}/tmp_andamiClasspath"
36
			token="_fwAndami/"
37
			value=""
38
		/>
39
		<replace file="${DIR_ORIGEN}/tmp_andamiClasspath"
40
			token="bin,"
41
			value=""
42
		/>
43
		<replace file="${DIR_ORIGEN}/tmp_andamiClasspath"
44
			token="bin-test,"
45
			value=""
46
		/>
47
		<loadfile property="andamiClasspath" srcfile="${DIR_ORIGEN}/tmp_andamiClasspath"></loadfile>
48
		<delete file="${DIR_ORIGEN}/tmp_andamiClasspath"></delete>
49
		<echo>classPath=${andamiClasspath}</echo>
50
		<jarbundler
51
			dir="${DIR_DESTINO}"
52
			name="${NOMBRE_BUNDLE}"
53
			mainclass="com.iver.andami.Launcher"
54
			arguments="gvSIG gvSIG/extensiones"
55
			bundleid="com.iver.cit.gvsig"
56
			developmentregion = "Spanish"
57
			icon="logo gvsig.icns"
58
			shortname="gvSIG"
59
			signature="gvSI"
60
			stubfile="preJava"
61
			version="${FULLVERSION}"
62
			build="${build.number}"
63
			infostring="gvSIG ${FULLVERSION}"
64
			vmoptions ="-Xmx500M"
65
			jvmversion ="${jvmversion}"
66
			extraclasspath = "jai_imageio.jar,${andamiClasspath}"
67
			workingdirectory  = "$JAVAROOT"
68
			showplist="true"
69
			>
70

  
71
			<javaproperty name="apple.laf.useScreenMenuBar" value="true"/>
72
			<javaproperty name="java.library.path" value="$JAVAROOT/../NativeLibs"/>
73

  
74
			<!-- jarfileset no incluye nada, pero evita quejas de jarbundler -->
75
			<jarfileset dir="${DIR_ORIGEN}" includes="nothing!" excludes="*"/>
76
			<javafileset dir="${DIR_WORKSPACE}/_fwAndami/" excludes="bin/ src/ src-test/ bin-test/ cachedir/ config/ docs/ schemas/ build.xml/ *.bat"/>
77
		</jarbundler>
78

  
79
		<!-- tenemos ya un bundle con el script preJava, pero sin el "arrancador" de la JVM; hay que meterlo -->
80
		<copy file="${DIR_ORIGEN}/JavaApplicationStub" todir="${DIR_DESTINO}/${NOMBRE_BUNDLE}.app/Contents/MacOS"/>
81
		<!-- (corregimos permisos de ejecucion que copy se ha cargado) -->
82
		<chmod file="${DIR_DESTINO}/${NOMBRE_BUNDLE}.app/Contents/MacOS/*" perm="+rwxrxrx"/>
83

  
84
		<!-- ahora metemos las libs nativas...-->
85
		<!-- crear dir NativeLibs-->
86
		<mkdir dir="${DIR_DESTINO}/${NOMBRE_BUNDLE}.app/Contents/Resources/NativeLibs"/>
87
		<!-- copiar dentro dylibs, jnilibs-->
88
		<copy 	todir="${DIR_DESTINO}/${NOMBRE_BUNDLE}.app/Contents/Resources/NativeLibs"
89
				flatten="true"
90
			>
91
			<fileset dir="${DIR_WORKSPACE}/binaries/mac/raster/" includes="**/*.dylib **/*.jnilib"/>
92
			<fileset dir="${DIR_WORKSPACE}/binaries/mac/crs/" includes="**/*.dylib **/*.jnilib"/>
93
		</copy>
94
		<!-- copiar jars para JNI (jgdal, jmrsid) en gvSIG/extensiones/...-->
95
		<!-- (primero asegurarnos de que no hay jgdal o jmrsid duplicados, lo cual provocaría error en gvSIG) -->
96
		<delete>
97
		  	<fileset dir="${DIR_DESTINO}/${NOMBRE_BUNDLE}.app/Contents/Resources/Java/gvSIG/extensiones/com.iver.cit.gvsig/lib" includes="jgdal*.jar jmrsid*.jar"/>
98
		</delete>
99
		<copy 	todir="${DIR_DESTINO}/${NOMBRE_BUNDLE}.app/Contents/Resources/Java/gvSIG/extensiones/com.iver.cit.gvsig/lib"
100
				flatten="true"
101
			>
102
			<fileset dir="${DIR_WORKSPACE}/binaries/mac/raster/" includes="**/*.jar"/>
103
		</copy>
104
		
105
		<!-- copiar JAI-ImageIO junto a andami.jar, para ser usado en classpath en vez de como extensión de la JVM-->
106
		<copy file="jai_imageio.jar" todir="${DIR_DESTINO}/${NOMBRE_BUNDLE}.app/Contents/Resources/Java"/>
107
		
108
	</target>
109

  
110
</project>
0 111

  
tags/tmp_build/install/instalador-gvSIG-mac/preJava
1
#!/bin/sh
2
# This script offers a chance to fix the "unixy" stuff before the JVM starts
3
#(environment variables, etc)
4

  
5
thisDir="${0%/*}"
6

  
7
if [ -e ~/Library/Java/Extensions/jai_imageio.jar ]
8
then
9
	if [ "`defaults read ~/gvSIG/launcher "Keep installed JAI-ImageIO"`" != "1" ] 
10
	then
11
		open -W "$thisDir/uninstallJAIIO.app"
12
	fi
13
fi
14

  
15
export PROJ_LIB="$thisDir/../Resources/Java/gvSIG/extensiones/org.gvsig.crs/data"
16
exec "$thisDir/JavaApplicationStub" "$@"
0 17

  
tags/tmp_build/install/pluginInstallationTemplate/HOWTO-Extension.txt
1
{{{
2
#!rst
3
.. contents::
4

  
5
Cómo se genera un instalable para un Plugin de gvSIG
6
=======================================================
7

  
8
Número de  build
9
----------------
10

  
11
Un plugin debe añadir un panel (al que se accede en gvSIG por "ayuda->acerda de") con su correspondiente build.number para su seguimiento.
12
Para poder añadir dicho panel se seguirán los siguientes pasos:
13

  
14
+ En la carpeta config del plugin, se tiene que crear un fichero **"about.htm"**. Se puede ver un ejemplo de este fichero en el plugin **"extExpressionField"**. Lo más importante en este fichero es que debe tener la siguiente linea, que indica el build number: ::
15
   <p><br><br>
16
   <b> Build Number: #build.number#</b>
17
   </p>
18
 
19
+ Dentro de nuestro plugin, hay que crear dentro del build.xml un target **<buildNumber>**, que se encargará de aumentarlo: ::
20

  
21
	<target name="buildNumber">  
22
		<propertyfile	file="build.number"
23
				comment="Build Number for ANT. Do not edit!">
24
			<entry key="build.number" default="0" type="int" operation="+" />
25
		</propertyfile>
26
		<property file="build.number" />
27
	</target>
28

  
29
  **Nota**: Existe un *task* para el ant que hace una función parecida, el problema es que funciona de forma distinta
30
  a la que nosotros trabajamos (*Deja el siguiente número de build en el fichero, en vez de el actual*).
31

  
32
+ El fichero **"about.htm"** se tiene que copiar en una carpeta temporal y hacer el remplazo del #build.number# (el about.htm que se copiará al gvsig será el que está en dicha carpeta temporal). Aquí un ejemplo (extraído del *extExpressionField/build.xml*): ::
33
    
34
    <target name="copy-data-files">
35
		<copy file="config/config.xml" todir="${without_src}"/>
36
		<copy file="build.number" todir="${without_src}"/>
37
		<copy file="config/about.htm" todir="${without_src}"/>   <!-- AQUÍ SE HACE LA COPIA DEL about.htm A LA CARPETA TEMPORAL -->
38
		<loadproperties srcFile="build.number"/>
39
		<replace casesensitive="true"
40
  		file="${without_src}/about.htm"
41
  	  	token="#build.number#"
42
  		value="${build.number}"/>				<!-- AQUÍ SE HACE EL REMPLAZO DE #build.number# --> 
43
		<copy todir="${without_src}">
44
			<fileset dir="config" includes="text*.properties"/>
45
		</copy>
46
		<copy todir="${without_src}/images">
47
			<fileset dir="images/" includes="*"/>
48
		</copy>
49
    </target>
50

  
51
+ De nuevo en el build.xml de nuestro plugin, crear un target **<distribution>**, que llama al target *<buildNumber>* y luego al target por defecto. Este target por lo tanto hará lo mismo que el target por defecto, con la única diferencia de aumentar el buildnumber del plugin.
52

  
53
+ En los fuentes del plugin hay que crear una extensión (si ya la tenemos simplemente añadiremos dentro de ella) para registrar el panel de about.htm, un ejemplo (extraído nuevamente de *extExpressionField*) sería: ::
54

  
55
	public class AboutExpresionFieldExtension extends Extension {
56
	
57
		public void initialize() {
58
			// TODO Auto-generated method stub
59

  
60
		}
61

  
62
		public void postInitialize() {
63
			About about=(About)PluginServices.getExtension(About.class);
64
			FPanelAbout panelAbout=about.getAboutPanel();
65
			java.net.URL aboutURL = this.getClass().getResource(
66
		        "/about.htm");
67
		        panelAbout.addAboutUrl(PluginServices.getText(this,"calculate_expresion"),aboutURL);
68
		}
69
+ Para acabar, habrá que añadir en el fichero config/config.xml de nuestro plugin la extensión que acabamos de crear (en caso de que no existiera): ::
70
	
71
	<extension class-name="com.iver.cit.gvsig.AboutExpresionFieldExtension"
72
			description="Extension to add about panel."
73
			active="true"
74
			priority="1">
75
	</extension>    
76
  
77

  
78

  
79
Nombrado de los binarios
80
--------------------------
81

  
82
El nombre de los ficheros debe tener la siguiente estructura:
83

  
84
gvsig_[NOMBRE-EXT]-[VERSION_GVSIG]-[BUILD_NUMBER_GVSIG]-[BUILD_NUMBER_EXT]-[PLATAFORMA].[zip|exe|bin]
85

  
86
Donde:
87

  
88
* NOMBRE_EXT = Nombre de la extensión.
89

  
90
* VERSION_GVSIG = Número de versión de gvSIG sobre la que funciona el binario.
91

  
92
* BUILD_NUMBER_GVSIG = Número de build de gvSIG sobre el que funciona el binario.
93

  
94
* BUILD_NUMBER_EXT = Número de build propio de la extensión.
95

  
96
* PLATAFORMA = Sistema operativo (linux, windows, mac).
97

  
98
Por ejemplo: 
99

  
100
gvsig_sextante-1_1_0-1015-31-windows-i586.exe
101

  
102

  
103
Generación del instalable
104
-----------------------------
105

  
106
Vamos a describir los pasos que se siguen actualmente para generar una distribución de binarios de una extensíon para gvSIG.
107
Antes de empezar, hay que asegurarse de que en nuestro Workspace disponemos de la carpeta **"install"** y **"binaries"**, ya que estas dos carpetas son imprescindible para generar los binarios, y sin estas no se podría hacer.
108

  
109
Hay que descomprimir el fichero **"install/pluginInstallTemplate/install.zip**" dentro de nuestro proyecto. Este zip también se puede bajar de:
110

  
111
+ Si se está trabajando sobre el branch: `install_branch.zip <https://gvsig.org/svn/gvSIG/branches/v10/install/pluginInstallationTemplate/install.zip?format=raw>`_   
112
+ Si se está trabajando sobre el trunk: `install_trunk.zip <https://gvsig.org/svn/gvSIG/trunk/install/pluginInstallationTemplate/install.zip?format=raw>`_ 
113

  
114
Una vez descomprimido ya tenemos lo necesario (en forma de plantilla) para generar los binarios de cualquier extensión, y solo se deberán hacer algunos pequeños cambios para adaptarla a cada extensión...
115

  
116
Primero tenemos que modificar el fichero build.properties. Este fichero contiene el nombre de algunas variables y de la extensión. Tal y como está comentado en el propio fichero, hay que indicar el directorio de nuestra extensión en **MAIN_INSTALL_PLUGIN**, verificar que los números de versión sean los correctos, indicar el nombre del plugin (extensión) en **APPNAME**, y finalmente indicarle el directorio donde se dejaran caer los binarios en **OUTPUT_DIR**.
117

  
118
El siguiente fichero a modificar será el install.xml. Este fichero sirve de guía para el IzPAck a la hora de generar el instalable. Al principio del fichero se debe de indicar el nombre del plugin en **"<appname> </appname>"**.
119
Luego habrá que situarse en el final del fichero, en la zona de **<pack>**. En esta parte se definen qué ficheros tendrán que añadirse sobre la instalación de gvSIG ya existente. En **"name"** se indica el nombre del paquete tal y como se mostrará a la hora de la selección de paquetes durante la instalación, y en **"descripcion"** se indica la descripción que aparecerá al seleccionar dicha extensión. Posteriormente se definen los ficheros a añadir. Para ello disponemos de dos *tasks*:
120

  
121
**<file>**: copia un fichero o directorio. Tiene tres atributos a especificar:
122

  
123
- **targetdir**: Para especificar el destino de los ficheros que se copiarán.
124
- **src**: Para especificar el fichero/directorio que se copiará.
125
- **override**: Para especificar si se sobreescriben los ficheros a copiar en caso de que existan. Generalmente será **true**.
126

  
127
**<fileset>**: copia un conjunto de fichero o directorios. Tiene los siguientes campos:
128

  
129
- **targetdir**: Para especificar el destino, de igual manera que <file>.
130
- **dir**: El directorio de dónde se copiarán los ficheros.
131
- **includes**: Los ficheros a incluir en la copia. Lo interesante de este campo es que se pueden introducir patrones (como * o ?).
132
- **excludes**: Semejante a includes, sólo que aquí se especifican los ficheros que **no** se desean copiar.
133
- **override**: igual que en <file>.
134

  
135
*Para más información acerca de los tasks, hay un html de ayuda en la carpeta install del workspace: install/IzPack/doc/izpack/html/index.html*
136

  
137
Lo más normal será llevarse todo el directorio de nuestra extensión, y además, según que extensiones, se llevaran otros ficheros (ver ejemplos en el propio *install.xml*).
138

  
139
Ahora tendremos que modificar el **buildExt.xml** para prepara la instalación para **MAC OSX** cuyo proceso es distinto. Básicamente, en el *target* llamado **InstallMac** hay que copiar los fichero que hay que actualizar en la instalación (*igula que en el* **instal.xml** *pero usando los comando del* **ANT**). En el propio fichero hay comentados varios ejemplos. También existe el fichero **resources/configfile** que nos permite adaptar la configuración de la instalación de Mac (añadir un sufijo al nombre de la aplicación o comprobar el MD5 de andami), para mas información sobre este fichero se puede consultar el fichero **install/instalador-gvSIG-mac/HOWTO-UPDATER,EXTS.txt** (**CUIDADO CON LOS EL FORMATO DE LOS RETORNOS DE CARRO**).
140

  
141

  
142
Con esto ya tenemos todos los parámetros necesarios para generar los binarios, y simplemente habrá que lanzar el **buildExt.xml**, que en cuanto finalice, encontraremos los binarios de nuestro plugin en la ruta que indicamos en **OUTPUT_DIR** del fichero build.properties.
143

  
144
Dónde dejar los instalables
145
----------------------------
146

  
147
Los instalables de las versiones previas de gvSIG se dejan en el SVN asociado 
148
al TRAC de bugtracking, *https://gvsig.org/svn/bugtracking*, en *trunk/Versiones*.
149

  
150
En esa carpeta se crea para la extensión, algo como:
151

  
152
  [NOMBRE-EXT]-[MAJOR-VERSION]
153

  
154
Dentro de ésta se crearan dos carpetas, 
155
  
156
 * Documentacion-usuario
157
 * Versiones-previas
158

  
159
Y dentro de versiones previas se dejarán caer los instalables para todas las plataformas
160
soportadas.
161

  
162
En la carpeta de documentación de usuario, se dejarán caer las versiones en PDF de la
163
documentación que va a ser publicada como documentación de usuario junto con la extensión.
164

  
165

  
166
}}}
0 167

  
tags/tmp_build/install/instalador-gvSIG-lin/.project
1
<?xml version="1.0" encoding="UTF-8"?>
2
<projectDescription>
3
	<name>instalador-gvSIG-lin</name>
4
	<comment></comment>
5
	<projects>
6
	</projects>
7
	<buildSpec>
8
	</buildSpec>
9
	<natures>
10
	</natures>
11
</projectDescription>
0 12

  
tags/tmp_build/install/instalador-gvSIG-lin/Notas_asociaciacion_archivos.txt
1
PARA KDE: dejar un fichero '.desktop' en el directorio $HOME/.kde/share/mimelnk/application
2
como este:
3

  
4
[Desktop Entry]
5
Comment=
6
Hidden=false
7
Icon=/x/apps/gvSIG_0.1_856/bin/ico-gvSIG.png
8
MimeType=application/gvSIG
9
Patterns=*.gvp;*.GVP
10
Type=MimeType
11

  
12

  
13
y apadir a fichero $HOME/.kde/share/config/profilerc algo asi:
14

  
15
[application/gvSIG - 1]
16
AllowAsDefault=true
17
Application=kde-gvSIG.sh-3.desktop
18
GenericServiceType=Application
19
Preference=1
20
ServiceType=application/gvSIG
21

  
22
y el el fichero de menu ($HOME/.kde/share/applnk/.../gvSIG*.desktop)
23
la entrada 'MimeType' debe estar 'IGUAL' que en el fichero que
24
hemos dejado en $HOME/.kde/share/mimelnk/application
25

  
26

  
27

  
28
Para GNOME:
29

  
30
POR Estudiar
31

  
32
Para FIREFOX:
33

  
34
POR Estudiar
35

  
36

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff