programacion - Alternativa Eclipse p2 para controladores de instalación personalizados
manual de programacion android pdf (3)
Creo que los documentos más completos sobre el tema es la wiki de Eclipse . Probablemente esté interesado en "acciones nativas de punto de contacto", pero también es posible implementar su propia acción de punto de contacto, es decir, una clase Java que se invoca como parte del proceso de instalación.
EDITAR: Personalizar metadatos contiene algo de información sobre lo que puedes poner en el archivo p2.inf. El ejemplo dado allí es:
instructions.install = /
ln(targetDir:@artifact,linkTarget:foo/lib.1.so,linkName:lib.so);/
chmod(targetDir:@artifact,targetFile:lib/lib.so,permissions:755);
instructions.install.import= /
org.eclipse.equinox.p2.touchpoint.natives.ln,/
org.eclipse.equinox.p2.touchpoint.natives.chmod
Antes de p2, se podía escribir un controlador de instalación personalizado con una característica que se ejecutó para realizar cualquier tarea ''personalizada'' durante la instalación.
Veo que con p2 el manejador de instalación personalizada ya no es compatible. Sigo oyendo que los "puntos de contacto personalizados" son el reemplazo de eso.
Sin embargo, no puedo encontrar ningún ejemplo / documentación concreta para ello.
¿Alguien puede decirme cómo obtener la funcionalidad de los controladores de instalación personalizados con el administrador de actualización p2?
Editar: una descripción de lo que quiero hacer -
Necesito editar el archivo eclipse.ini y establecer la propiedad -Xmx en un valor basado en si estamos ejecutando dentro de un env de 64 bits o 32 bits.
Edición 2: Intenté crear un archivo p2.inf en mi función con la siguiente línea:
instructions.install = /
addJvmArg(jvmArg:-Xmx900m);
instructions.install.import= /
org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg,
y funciona, sin embargo, no diferencia entre 32 y 64 bits.
Hay dos artículos que explican cómo lograr esto:
- Cómo agregar acciones de instalación personalizadas a su siguiente complemento Eclipse IDE
- Puntos de contacto personalizados en P2
El primero cubre un poco más de opciones, el segundo solo se trata de puntos de contacto P2.
ADVERTENCIA: cuando agregamos puntos de contacto personalizados a nuestro complemento, comenzó el bloqueo (bastante a menudo, pero no siempre) en el momento de la instalación (no queríamos el riesgo y los eliminamos). Tal vez hicimos algo mal pero esto es algo de lo que debemos estar conscientes.
Los puntos de contacto integrados parecen funcionar bien, sin embargo.
p2.inf definitivamente es el lugar correcto para realizar acciones personalizadas. Es un buen lugar para agregar argumentos vm en .ini. Puede poner un p2.inf debajo de su función / complemento.
Actualizado el 20 de diciembre :
Lo probé en mi propio entorno, funciona bien para establecer diferentes argumentos vm al instalar la misma función en Linux de 32 bits y 64 bits. Puede descargar el código de ejemplo para jugar con él.
#create a requirement on the IU fragment we are creating
requires.2.namespace=org.eclipse.equinox.p2.iu
requires.2.name=configure.com.example.yourfeature.linux.x86
requires.2.range=[1.0.0,1.0.0]
requires.2.greedy=true
requires.2.filter=(&(osgi.os=linux)(osgi.arch=x86))
#create a IU frament named configure.com.example.yourfeature.linux.x86 for linux 32 bit
units.0.id=configure.com.example.yourfeature.linux.x86
units.0.version=1.0.0
units.0.filter=(&(osgi.os=linux)(osgi.arch=x86))
units.0.provides.1.namespace=org.eclipse.equinox.p2.iu
units.0.provides.1.name=configure.com.example.yourfeature.linux.x86
units.0.provides.1.version=1.0.0
units.0.instructions.configure=addJvmArg(jvmArg:-Xmx500m);
units.0.instructions.configure.import=org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg,
#create a requirement on the IU fragment we are creating
requires.3.namespace=org.eclipse.equinox.p2.iu
requires.3.name=configure.com.example.yourfeature.linux.x86_64
requires.3.range=[1.0.0,1.0.0]
requires.3.greedy=true
requires.3.filter=(&(osgi.os=linux)(osgi.arch=x86_64))
#create a IU frament named configure.com.example.yourfeature.linux.x86_64 for linux 64 bit
units.1.id=configure.com.example.yourfeature.linux.x86_64
units.1.version=1.0.0
units.1.filter=(&(osgi.os=linux)(osgi.arch=x86_64))
units.1.provides.1.namespace=org.eclipse.equinox.p2.iu
units.1.provides.1.name=configure.com.example.yourfeature.linux.x86_64
units.1.provides.1.version=1.0.0
units.1.instructions.configure=org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg(jvmArg:-Xmx900m);