Actions

Implementación de un Servidor de Actualización

This page is a translated version of a page Deploying an Update Server and the translation is 100% complete.

Other languages:
English 100% • ‎español 100% • ‎français 65%
Joomla! 
2.5
Joomla! 
3.x

Introducción

Este tutorial está diseñado para enseñar a los desarrolladores cómo crear un servidor de actualización para la integración con el sistema de actualización se introdujo en Joomla!. Mediante la adición de una lista del servidor de actualización al manifiesto de la extensión, los desarrolladores permiten así a los usuarios actualizar sus extensiones a través de la vista del Administrador de Actualización Extensiones (ver las pantallas de ayuda para Joomlaǃ 3.x) con sólo unos pocos clics.

Definición de un servidor de actualización

Para utilizar esta característica, un servidor de actualización debe ser definido en el manifiesto de su extensión. Esta definición puede ser utilizada en todas las extensiones compatibles con Joomla! 2.5 y posteriores, pero no está disponible para las plantillas. Puede utilizar dos opciones para el tipo de servidorː colección o extensión. Esto será explicado en detalle en breve. Este código debe ser añadido a la archivo de manifiesto de la extensión, dentro del elemento raíz de la "extensión". El servidor de actualización se define de la siguiente manera para cada tipo:

 <extension>
 <...>
 <updateservers>
    <server type="collection">https://example.com/list.xml</server>
    <server type="extension" priority="2" name="My Extension's Updates">http://example.com/extension.xml</server>
 </updateservers>
 </extension>

Pueden ser definidos varios servidores dentro de la etiqueta <updateservers>.

Tipos de servidor

Colección

El servidor tipo colección permite a los desarrolladores definir un manifiesto de la extensión para extraer las actualizaciones de una colección. Este tipo de servidor se puede utilizar si el desarrollador quiere definir todas la actualizaciones de su extensión en un solo archivo (no recomendado) o si su extensión tiene varias sub-extensiones que no se distribuyen o actualizan al mismo tiempo (como una extensión de tipo paquete extensión). El siguiente ejemplo es la definición de colección utilizada por el actualizador cuando se procesan actualizaciones del núcleo de Joomla!:

 <extensionset name="Joomla Core" description="Joomla! Core">
    <extension name="Joomla" element="joomla" type="file" version="1.7.0" detailsurl="https://update.joomla.org/core/extension.xml"/>
 </extensionset>

Todas las definiciones se definen entre las etiquetas <extensionset> en el manifiesto de la colección. La etiqueta <extensionset> tiene dos parámetros opcionales; name y description. Para cada extensión a la que esta colección hace referencia, es necesaria una etiqueta independiente <extension>. La etiqueta <extension> tiene los siguientes parámetros, los cuales son necesarios para que las actualizaciones se procesen correctamente:

  • name - El nombre de la extensión
  • element - el nombre no traducible de la extensión por ej.ː mod_custom
  • type - El tipo de extensión (componente, módulo, plugin, etc.)
  • version - La última versión de la extensión
  • detailsurl - La dirección URL del archivo XML que contiene las definiciones individuales de actualización de la extensión

Extensión

El servidor de tipo extensión permite a los desarrolladores definir un manifiesto de la extensión para extraer las actualizaciones desde un único manifiesto de la extensión. Toda el manifiesto de la colección, finalmente, apunta a este archivo XML. Todas las actualizaciones de este archivo deben ser determinadas después de una etiqueta <updates> al principio del archivo. El ejemplo siguiente es la definición de actualización de Joomla! Versión 1.7.0:

	<update>
		<name>Joomla! 3.6</name>
		<description>Joomla! 3.6 CMS</description>
		<element>joomla</element>
		<type>file</type>
		<version>3.6.5</version>
		<infourl title="Joomla!">https://www.joomla.org/announcements/release-news/5693-joomla-3-6-5-released.html</infourl>
		<downloads>
			<downloadurl type="full" format="zip">https://downloads.joomla.org/cms/joomla3/3-6-5/Joomla_3.6.5-Stable-Update_Package.zip</downloadurl>
		</downloads>
		<tags>
			<tag>stable</tag>
		</tags>
		<maintainer>Joomla! PLT</maintainer>
		<maintainerurl>https://www.joomla.org</maintainerurl>
		<section>STS</section>
		<targetplatform name="joomla" version="3.[234567]" />
		<php_minimum>5.3.10</php_minimum>
	</update>

La siguiente sección describe los elementos de una única entidad de actualización

  • name - El nombre de la extensión, este nombre aparecerá en la columna Nombre de la Extensión de la vista del Gestor de Actualizaciones (requerido)
  • description - Una breve descripción de la extensión (opcional) -- si eliges utilizar <![CDATA[]]>, con comillas dobles vas a romper el formato HTML. Usa comillas simples con tus entidades HTML.
  • element - El nombre de la extensión instalada (requerido). Para los plugins, este debe ser el mismo que el valor del atributo plugin del archivo principal en el manifiesto del plugin. Para <filename plugin="nombreplugin">nombreplugin.php</filename>, el valor del elemento debe ser nombreplugin.
  • type - El tipo de extensión (componente, módulo, plugin, etc.) (requerido)
  • folder - Específico para plugins, esta etiqueta describe el tipo de plugin que se actualiza (contenido, sistema, etc.) (obligatorio para los plugins)
  • client - Requerido para módulos y plantillas de 3.2.0. - El ID del cliente de la extensión, que se puede encontrar buscando en el interior de la tabla #__extensions. Hasta la fecha, utiliza 0 para el "sitio" y 1 para "administrador". Plugins y módulos del lado cliente se instalan automáticamente con un cliente 0 (sitio), pero tendrás que especificar el cliente en una actualización o se pondrá por defecto a 1 (administrador) y a continuación no se, encontrará la actualización ya que no se muestra porque no coincide con ninguna extensión. Los componentes se instalan automáticamente con un cliente 1, que actualmente es el valor predeterminado.
    • Advertencia: el nombre de La etiqueta es <client> para Joomla! 2.5 y <client_id> para 1.6 y 1.7. Si utilizas <client_id> (en lugar de <client>) en un sitio 2.5, será ignorado.
  • version - La versión de la publicación (requerido)
  • infourl - Una dirección URL para que apunten los usuarios que contiene información acerca de la actualización (opcional) (En CMS 2.5, si se establece, esta dirección URL se mostrará en la vista de actualización)
  • downloads - La sección que enumera todas las ubicaciones de descarga
    • downloadurl - La URL para descargar la extensión; la etiqueta <downloadurl> tiene dos parámetros necesarios:
      • type - El tipo de paquete (completo o actualización)
      • format - El formato del paquete (zip, tar, etc.)
    • NOTA - no debe haber ningún salto de línea antes o después de la URL; tiene que ser en una línea o se obtendrá un Error al conectar con el servidor: formato incorrecto al ejecutar la actualización
  • tags - Una lista de etiquetas pertinentes para esta versión. Joomla! 3.4 y siguientes lo utiliza para determinar el nivel de estabilidad de la actualización. Las etiquetas válidas son:
    • dev: versión de Desarrollo, muy inestable y pre-alfa (por ej.ː compilaciones nocturnas automáticas)
    • alfa: Software de calidad Alfa (características no implementadas, fallos por problemas de seguridad)
    • beta: Software de calidad beta (todas las funciones implementadas, posible errores por problemas de seguridad, casi seguro hay errores menores)
    • rc: Software de calidad candidata a versión final (no hay errores por problemas de seguridad, errores de menor importancia aún pueden estar presente)
    • stable: Software de calidad para Producción. Todas las demás etiquetas serán ignoradas en este momento. Si proporcionas más de una etiqueta que contiene uno de las palabras clave de estabilidad mencionadas sólo la ÚLTIMA etiqueta será tomada en cuenta. Si no proporcionas las etiquetas, Joomla! supone que es una versión estable.
  • maintainer - el nombre del mantenedor de la extensión (similar a la etiqueta <author> en un manifiesto) (opcional)
  • maintainerurl - El sitio web del mantenedor de la extensión (similar a la etiqueta <authorUrl> en un manifiesto) (opcional)
  • section - Opcional (de uso desconocido)
  • targetplatform - Una etiqueta para definir los requisitos de la plataforma, requiere de los siguientes elementosː
    • name - El nombre de dependencia de la plataforma; a partir de este escrito, SÓLO se debe "joomla"
  • * version - La versión de Joomla! que soporta la extensión
    • min_dev_level y max_dev_level - Estos atributos fueron agregados en la versión 3.0.1 para permitir que selecciones una plataforma de destino, basado en el nivel del desarrollo ("z" en x.y.z). Ambos son opcionales. Puedes especificar uno o ambos. Si se omite, todos los niveles de desarrollos son considerados. Por ejemplo, para considerar las versiones 4.0.0 y 4.0.1ː
      <targetplatform name="joomla" version="4.0" min_dev_level="0" max_dev_level="1" />
      • Nota: Si tu extensión es compatible con Joomla! 2.5 y/o 3.1, te será requerido definiciones <update> por separado para cada versión, debido a la forma en la que el actualizador comprueba la versión si se especifica un número. Sin embargo, para mostrar tu extensión en todas las versiones de Joomlaǃ en el soporte de actualizaciones automáticas debes agregar <targetplatform name="joomla" version=".*" />. Si quieres que tu extensión se muestre en todas las versiones Joomla 3.x, en lugar de especificar una versión en la etiqueta versión agregar <targetplatform name="joomla" version="3.[012345]" />. Esto mostrará la actualización a todos las versiones 3.x.
  • php_minimum - A partir 3.2.2, se admite una versión mínima soportada de PHP que puede ser suministrada en la actualización actual. Si el servidor no cumple con el mínimo, se muestra un mensaje al usuario avisando que hay una actualización disponible, pero no se puede instalar debido a que los requisitos no son los admitidos.
  • supported_databases - Beginning with 3.7, a minimum supported Databases + version can be supplied in the update stream. If the server does not meet the minimum, a message is displayed to the user advising that an update is available but cannot be installed due to unsupported requirements.
    • An example could look like this: <supported_databases mysql="5.5.3" postgresql="9.2" mssql="10.50.1600.1" />


Una definición <update> por separado será requerida para cada versión de la extensión a liberar.

Los valores de element, type, client_id y folder deben coincidir con aquellos de la tabla #__extensions.

Importante para plugins: Los plugins tienen que incluir los elementos <folder> y <client> para que funcione correctamente

Solución de problemas

  • El script de actualización SQL no se ejecuta durante la actualización.
Si el script de actualización SQL (por ejemplo, en la carpeta sql/updatess/mysql) no se ejecuta durante el proceso de actualización, puede que sea porque no hay ningún número de versión en la tabla #__schemas para esta extensión antes de la actualización. Este valor es determinado por el nombre del último script en la carpeta actualizaciones SQL. Si este valor está en blanco, no hay script SQL sea ejecutado durante ese ciclo de actualización. Para asegurarte que este valor se establece correctamente, asegúrate de tener un script SQL en esta carpeta con el número de versión como su nombre (por ejemplo, 1.2.3.sql si la versión es 1.2.3). El archivo puede estar vacío o simplemente tener una línea de comentario SQL. Esto debe ser hecho en la versión anterior -- una antes de la actualización. Alternativamente, puedes agregar este valor a la tabla #__schemas mediante una consulta SQL.

Herramientas de Apoyo

Advertisement