2009-10-05 10 views
6

Quiero crear un instalador automático para un plugin de Eclipse (es decir, no a través del "Administrador de actualizaciones"). Mi escenario es simple: el usuario cierra Eclipse, suelta un JAR descargado en la carpeta de dropins, inicia Eclipse y el resto del proceso está automatizado.¿Instala instalando un plugin de Eclipse de forma automática desde Eclipse?

En las versiones anteriores de Eclipse, antes de la era de P2, Eclipse tenía (todavía tiene) una clase llamada InstallCommand que podría usarse para instalar plugins en la plataforma actualmente en funcionamiento.

Aunque esto todavía funciona en Eclipse 3.4 & 3.5, no se comporta correctamente: lo más notable es que los complementos instalados de esa manera no se pueden desinstalar automáticamente (está atenuado).

JavaDoc afirma que el InstallCommand está en desuso y debe reemplazarse por una alternativa P2. Sin embargo, no pude encontrar la herramienta adecuada para el trabajo. Está el P2 director, pero está diseñado para ejecutarse como una aplicación separada desde la línea de comandos. Es posible invocarlo desde dentro de Eclipse, pero realmente no está cortado para eso. Por ejemplo, la supervisión del progreso y el informe de errores no funcionan bien.

¿Alguien sabe de una buena alternativa para eso?

Gracias, Zviki

+0

Normalmente, desempaquetar las características y los complementos en una carpeta bajo 'dropins' debería ser suficiente para instalar un complemento. ¿Qué más quieres hacer? –

+1

Es cierto. Sin embargo, tengo un complemento comercial y estoy tratando de crear una experiencia más amigable para el usuario. Dejarlo caer en la carpeta de dropins puede fallar, el informe de errores es menos que obvio en este caso. No todos los usuarios de Eclipse son expertos de Eclipse que pueden rastrear el problema y resolverlo. – zvikico

+0

Si está haciendo lo suyo en la instalación, probablemente sea mejor que haga lo suyo con la actualización, también. – AlBlue

Respuesta

1

Dropins parece estar muy cerca de lo que desea, especialmente si solo están descargando jarras sin los metadatos asociados (es decir, los metadatos deberán generarse automáticamente).

Podría considerar la definición de un segundo área de dropins para que se administre solo. Eche un vistazo al ProfileSynchronizer en org.eclipse.equinox.p2.reconciler.dropins, en particular, el método createProfileChangeRequest. Supongo que el comportamiento de desinstalación que no te gusta es el resultado de la adición de la propiedad IInstallableUnit.PROP_PROFILE_LOCKED_IU.

Los dropin se concilian al inicio, vea p2.reconciler.dropins Activator.watchDropins(), es probable que pueda hacer lo mismo desde su propio paquete para mirar otra carpeta.

+0

Gracias. No estoy buscando replicar el comportamiento de dropins. Con respecto al PROFILE_LOCKED, no es algo que hice, por lo que podría ser un error (aunque dudo que alguien se moleste en arreglarlo en esta etapa). – zvikico

+0

El PROFILE_LOCKED está en el código p2 actual, sé que está allí a propósito, pero no estoy seguro de las razones detrás de él. –

+0

Iré por una solución dropin por ahora (funciona en la mayoría de los casos), pero Puede pensar en mejores sugerencias. Algo como un JAR pero con un sufijo diferente (como EAR o WAR, podría ser OAR para OSGi). Se asociará con Eclipse, por lo que un doble clic invocará a Eclipse. , contiene una URL a un sitio de actualización o un ejecutable que se invocará en el marco OSGi actual. Organizaré mis pensamientos y abriré un número para sugerirlo. – zvikico

0

me sugieren para desplegar su plugin como un JAR ejecutable. El instalador en el JAR debe solicitar el directorio de instalación de Eclipse y descomprimir el complemento en el lugar correcto (más algunas comprobaciones adicionales si es necesario).

Opcionalmente incluye un pequeño complemento de "watchdog" que no depende mucho y solo comprueba que tu complemento principal se carga correctamente y muestra un mensaje de error útil que el usuario puede enviarte por correo electrónico para soporte.

+0

Es una buena opción, lo consideré yo mismo. Sin embargo, aún necesitaría realizar una acción de aprovisionamiento en la plataforma de destino. No debe suponer una estructura de directorio de complementos/características estándar, sino más bien dejar que P2 maneje la instalación. Esto te lleva de vuelta al principio ... ¿Cómo? – zvikico

+0

Pregunte en el grupo de noticias p2 y/o abra un error contra el director de P2. –

+1

Es una posible mejora para el director de P2. Podría sugerirlo. En cuanto al grupo P2: simplemente me gusta StackOverflow mucho mejor y generalmente obtengo más respuestas aquí y luego. La mayoría de las preguntas que hice en los grupos de noticias de Eclipse no se tocaron. – zvikico

0

De acuerdo con la información del error 311590 1 al que se hace referencia en el comentario de desactivación de InstallCommand, una alternativa es posiblemente utilizar las operaciones P2 2, 3.