svn-gvsig-desktop / tags / gvsig_sextante-0_3_0-1232 / install / pluginInstallationTemplate / HOWTO-Extension.txt @ 40245
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 | }}} |