svn-gvsig-desktop / tags / v1_9_Build_1231 / install / pluginInstallationTemplate / HOWTO-Extension.txt @ 33449
History | View | Annotate | Download (9.19 KB)
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 |
}}} |