Buscar este blog

sábado, 28 de julio de 2018

Autofirma - Compilación manual para Windows

En este post resumo los pasos básicos para compilar y construir el instalador de Autofirma a partir del código del Github del Ministerio. Autofirma forma parte de la suite del cliente de firma elctróncia de @firma, siendo el componente encargado de hacer las firmas desde el equipo de usuario.

En esta prueba simplemente generaré la versión de 64 bits del instalador para Windows.

1 - Configuración de Maven

La versión de maven que usaré es la 3.5.0 con java 1.8 de 64 bits:
>mvn --version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T21:39:06+02:00)
Maven home: C:\Program Files (x86)\Apache Software Foundation\apache-maven-3.5.0\bin\..
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: c:\Program Files\Java\jdk1.8.0_111\jre
Default locale: es_ES, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

No creo que haya problemas por utilizar otra versión cercana.

2 - Descarga de Launch4J

Cuando se tenga el jar de Autofirma se deberá empaquetar (más bien envolver) en un archivo ejecutable de windows. Para ello se necesitará usar la herramienta Launch4J.
La versión con la que lo probé es la 3.12, en su modalidad portable: https://sourceforge.net/projects/launch4j/files/launch4j-3/3.12/.
Basta con descargarse el zip y descomprimirlo.

3 - Descarga y configuración de NSIS

Con el exe creado por Launch4J ya se podría ejecutar la aplicación (a falta de un JRE), pero al usuario se le entrega un instalador (wizard) que se encarga de copiar el ejecutable a donde corresponda, crear entradas de registro, registrar la aplicación, etc. Para ello se usa NSIS (Nullsoft Scriptable install System).

La versión con la que probé es la 2.5.1, también en modalidad portable: https://sourceforge.net/projects/nsis/files/NSIS%202/2.51/.
Basta con descargarse el zip y descomprimirlo.

Una vez extraído hay que instalar el plugin de NsProcess, versión 1.6.7: http://nsis.sourceforge.net/NsProcess_plugin. Es un zip que contiene varias carpetas:
  • Example
  • Include
  • Plugin
  • Source

Hay que copiar el contenido de Include y Plugin a los subdirectorios correspondientes dentro del directorio de instalación de NSIS.

4 - Compilación y empaquetado de jmulticard

Uno de los módulos de @Firma tiene una dependencia con un artefacto del proyecto jmulticard. En el caso concreto de la versión 1.6.2 de @Firma la dependencia es con la versión 1.5-SNAPSHOT de jmulticard (sí amigos, tenemos una release que dependen de un snapshot, un clavo más en el ataúd del clean code).

En este caso me descargué directamente y compilé directamente el master: https://github.com/ctt-gob-es/jmulticard.

5 - Compilación y empaquetado de @Firma

Por fin entramos en materia con @Firma. En esta prueba me descargué el tag 1.6.2 del repo principal: https://github.com/ctt-gob-es/clienteafirma.

Justo en la versión 1.6.2 hay un bug (o más bien una mala praxis en el desarrollo) y es necesario hacer una pequeña corrección en un fichero pom. Concretamente, en el fichero \afirma-standalone\afirma-ui-standalone\pom.xml se deberá modificar la propiedad afirma.core.version, que vale 1.7-SNAPSHOT a la 1.6 (se ve que el tema de la gestión de versiones todavía no lo tienen muy dominado).
<properties>
 <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
 <afirma.keytool.keystore>${basedir}/afirma.keystore</afirma.keytool.keystore>
 <afirma.keytool.alias>codesign</afirma.keytool.alias>
 <afirma.keytool.password>afirma</afirma.keytool.password>
 <afirma.core.version>1.7-SNAPSHOT</afirma.core.version>
</properties>

Una vez hecho esto, y según lo que pone en el propio README del proyecto, la compilación se hará en dos pasos:
- mvn clean install, para generar los módulso básicos y los servicios.
- mvn clean install -Denv=install, para generar los artefactos desplegables y aplicaciones

Completada la instalación, los artefactos más relevantes para generar posteriormente el instalador de Autofirma serán los siguientes:
  • \afirma-simple\target\AutoFirma.jar
  • \afirma-ui-simple-configurator\target\AutoFirmaConfigurador.jar

6 - Generación del instalador de Autfirma

Para montar el instalador se tienen que ejecutar los siguientes pasos:
  1. Generación del ejectuable de Autofirma
  2. Generación del ejecutable del Configurador
  3. Generación del ejecutable del Command Line
  4. Generación del instalador de Autofirma
En este caso sólo usaré los archivos de windows de 64 bits.

6.1 Generación del ejecutable de Autofirma

Se copiará el archivo Autofirma.jar, creado anteriormente, al directorio \afirma-simple-installer\jar\.

Luego se cargará el fichero \afirma-simple-installer\AutoFirma_launch4J_project_64.xml en Launch4J y se lanzará su ejecución.


El resultado será el fichero \afirma-simple-installer\AutoFirma64\AutoFirma.exe

6.2 Generación del ejecutable del Configurador

Se copiará el archivo AutoFirmaConfigurador.jar, creado anteriormente, al directorio \afirma-simple-installer\jar\.

Luego se cargará el fichero \afirma-simple-installer\AutoFirma_launch4J_Configurador_project_64.xml en Launch4J y se lanzará su ejecución.


El resultado será el fichero \afirma-simple-installer\AutoFirma64\AutoFirmaConfigurador.exe

6.3 Generación del ejecutable del Command Line

También a partir del AutoFirma.jar, se cargará el fichero \afirma-simple-installer\AutoFirmaCommandLine_launch4J_project_64.xml en Launch4J y se lanzará su ejecución.


El resultado será el fichero \afirma-simple-installer\AutoFirma64\AutoFirmaCommandLine.exe

6.4 Generación del instalador de Autofirma

Lo primero será copiar un JRE 1.8 en el directorio \afirma-simple-installer\java64. El instalador incorporará el JRE internamente, de modo que dentro del directorio final de instalación del usuario también se incluirá éste, que será el que utilice en última instancia Autofirma durante su ejecución.

Se lanzará la herramienta makensisw.exe que se incluye dentro del directorio de instalación de NSIS. Sobre ella se cargará el fichero \afirma-simple-installer\AutoFirma_NSIS_project_EXE_64.nsi y se lanzará la creación del instalador.



El resultado final será el fichero \afirma-simple-installer\AutoFirma64\AutoFirma_64_v1_6_2_installer.exe. 

Por fin hemos conseguido el instalador!!

No hay comentarios:

Publicar un comentario