2011-05-09 8 views
5

Estoy usando Eclipse RCP, pero, principalmente porque tengo control total de la UI (eliminé todas las contribuciones, hice Preferencias desde cero, etc.) simplemente no puedo aceptar la complejidad y la demanda del ADMINISTRADOR DE ACTUALIZACIONES incluido (también, utilizo los complementos, no las funciones, y el complemento de la aplicación debe ser extraído, aunque podría solucionar este último problema).Biblioteca simple de "verificación de actualizaciones" en java

De todos modos, en un primer acercamiento solo quiero verificar SI hay una versión más nueva de la aplicación disponible.

La forma lógica sería verificar un archivo (xml?) En un servidor.

¿Hay una buena biblioteca y un ejemplo por ahí?

Gracias.

Respuesta

1

Utilice Java Web Start para iniciar la aplicación. La actualización automática es una de las características principales de JWS.

+0

Gracias, pero fuera de la cuestión ... Utilizo un instalador. – marcolopes

3

Eclipse ahora es compatible con p2, un sistema mucho más flexible que el antiguo administrador de actualizaciones. Se puede usar para instalar un nuevo software y buscar actualizaciones en el software existente.

Puede incluir la parte de la auto-actualización de p2 sin interfaz de usuario, aunque el proceso completo que incluye la ayuda> instalar las nuevas actualizaciones se describe aquí http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application

Todas las actualizaciones de Eclipse son más fáciles de gerente si se utiliza una función, pero la característica es donde puede marcar su complemento de aplicación RCP para expandirlo a un directorio en lugar de hacerlo como un contenedor (lo hará automáticamente).

Añadir auto-actualización a cualquier aplicación no es trivial. ¿Actualizas todas las jarras a la vez, o solo las seleccionas? ¿Qué tarros tiene sentido actualizar al mismo tiempo? Con eclipse basado en OSGi, ¿cómo se asegura de que su actualización deje su sistema en un estado funcional? p2 fue creado para ayudar a administrar estos usos. Ver http://wiki.eclipse.org/P2

Editar:

simple auto-actualización puede ser añadido mediante la API p2 sin incluir ninguno de los códigos de interfaz de usuario:

public class SelfUpdateOperation { 
    public static void update() { 
     BundleContext context = FrameworkUtil.getBundle(
       SelfUpdateOperation.class).getBundleContext(); 
     ServiceReference<?> reference = context 
       .getServiceReference(IProvisioningAgent.SERVICE_NAME); 
     if (reference == null) 
      return; 
     Object obj = context.getService(reference); 
     IProvisioningAgent agent = (IProvisioningAgent) obj; 
     ProvisioningSession session = new ProvisioningSession(agent); 
     UpdateOperation update = new UpdateOperation(session); 
     IStatus result = update.resolveModal(new NullProgressMonitor()); 
     if (result.isOK()) { 
      update.getProvisioningJob(new NullProgressMonitor()).schedule(); 
     } else { 
      // can't update for some reason 
     } 
     context.ungetService(reference); 
    } 
} 

Esto necesita un poco de trabajo (tal vez el producto ha para incluir el sitio de actualización), pero esa es la API básica.

+0

Estaba pensando en mencionar p2, pero luego decidí no hacerlo, porque OP ya no lo está usando y parece poco probable que esté dispuesto a cambiar. – Sandman

+0

:-) Dicho eso, si uno quiere funcionalidad de actualización uno tiene que elegir algo. JWS fue diseñado con actualización (entiendo la superposición que ya tiene), y p2 fue diseñado específicamente para actualizar las aplicaciones de eclipse/OSGi. –

+0

Paul, aprecio tu esfuerzo, pero usar p2 no es un camino viable en este momento. No quiero ninguna contribución UI (demasiado desordenada por la simplicidad que estoy buscando, como todo en RCP es, por cierto), por lo que sería muy lento. – marcolopes