Statistics
| Revision:

svn-gvsig-desktop / tags / v1_10_0_Build_1260 / install / pluginInstallationTemplate / HOWTO-Extension.txt @ 43469

History | View | Annotate | Download (9.19 KB)

1 17823 jmvivo
{{{
2
#!rst
3
.. contents::
4 16851 mhaloui
5 17823 jmvivo
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 16851 mhaloui
Vamos a describir los pasos que se siguen actualmente para generar una distribución de binarios de una extensíon para gvSIG.
107 17823 jmvivo
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 16851 mhaloui
109 17823 jmvivo
Hay que descomprimir el fichero **"install/pluginInstallTemplate/install.zip**" dentro de nuestro proyecto. Este zip también se puede bajar de:
110 16851 mhaloui
111 17823 jmvivo
+ 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 16851 mhaloui
114 17823 jmvivo
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 16851 mhaloui
116 17823 jmvivo
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 16851 mhaloui
118 17823 jmvivo
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 16851 mhaloui
121 17823 jmvivo
**<file>**: copia un fichero o directorio. Tiene tres atributos a especificar:
122 16851 mhaloui
123 17823 jmvivo
- **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
}}}