Complemento para distribuir mapas personalizados, elimina mapas cuando se cierra una segunda instancia de JMP.Estoy intentando distribuir mapas personalizados mediante un complemento de JMP. He creado un complemento que copia los archivos de mapas del directorio de complementos al directorio de mapas personalizados al iniciar JMP (mediante el script de inicio) y los elimina al cerrar JMP (mediante el script de salida). Sin embargo, esto genera un problema cuando se abren varias instancias de JMP (a veces accidentalmente) y una se cierra. Al cerrar la segunda instancia de JMP, se ejecuta el script de salida, eliminando los mapas de la carpeta de mapas personalizados. Es necesario cerrar JMP por completo (todas las instancias se cierran) y volver a abrirlo para volver a agregar los gráficos.
¿Hay alguna forma de que el script de salida se ejecute solo al desinstalar el complemento, pero no al cerrar JMP? ¿O hay una mejor manera de distribuir mapas personalizados?
Script de inicio:
Names Default To Here( 1 );
//Create Custom Map Path
homePath = Convert File Path( "$HOME", absolute );//get home path
mapPath = Substr( homePath, 1, Length( homePath ) - Length( Word( -1, homePath, "/\" ) ) - 1 ) || "Maps/";
//Create map path if it doesn't exits
If( !Directory Exists( mapPath ),
Create Directory( mapPath )
);
//copy files from addin map folder to JMP map folder
mapFiles = Files In Directory( "$ADDIN_HOME(com.hp.G5iTools)" || "/Maps" );
For( i = 1, i <= N Items( mapFiles ), i++,
newMapFilePath = "$ADDIN_HOME(com.hp.G5iTools)" || "/Maps/" || mapFiles[i];
If( !File Exists( mapPath || mapFiles[i] ),
Copy File( newMapFilePath, mapPath || mapFiles[i] )
);
);
Script de salida:
Names Default To Here( 1 );
//delete map files
homePath = Convert File Path( "$HOME", absolute );//get home path
mapPath = Substr( homePath, 1, Length( homePath ) - Length( Word( -1, homePath, "/\" ) ) - 1 ) || "Maps/";
mapFiles = Files In Directory( "$ADDIN_HOME(com.hp.G5iTools)" || "/Maps" );
For( i = 1, i <= N Items( mapFiles ), i++,
Delete File( mapPath || mapFiles[i] )
);
Análisis y modelado de datos básicosAcceso a datosVentanasRe: Complemento para distribuir mapas personalizados, elimina mapas cuando se cierra una segunda instancia de JMP.Hola @RM2241 ,
Cuando mencionas varias instancias de JMP abiertas, ¿te refieres a varias pantallas de inicio o solo a varias plataformas abiertas? Si es esto último, se trata de un error conocido (consulta aquí para más detalles).
¿Por qué es necesario eliminar los archivos de mapas personalizados al cerrar? ¿Funcionaría mejor que el script simplemente comprobara en nuevas instancias si los archivos de mapas ya existen y los usara?
Gracias,
Ben
Re: Complemento para distribuir mapas personalizados, elimina mapas cuando se cierra una segunda instancia de JMP.Para las nuevas instancias, me refiero a múltiples pantallas de inicio.
No necesito eliminar los mapas personalizados al cerrar; de hecho, no quiero que se eliminen al cerrar. Pero sí me gustaría que se eliminaran si el complemento se desinstala y el script de salida fue la única manera de hacerlo.
Re: Complemento para distribuir mapas personalizados, elimina mapas cuando se cierra una segunda instancia de JMP.Hola @RM2241 ,
¿Podrías añadir un botón dentro del complemento para "desinstalar" que permita a los usuarios ejecutar el script solo antes de la desinstalación? Si tienes varias instancias (pantalla de inicio), intentaría solucionarlo consultando el enlace que envié a continuación. No creo que haya forma de rastrear activamente cuándo se activa la desinstalación con los complementos.
Gracias,
Ben
Re: Complemento para distribuir mapas personalizados, elimina mapas cuando se cierra una segunda instancia de JMP.Puede utilizar el script de salida mientras verifica si el complemento aún existe.
Ejemplo:
Crear complemento con com.mycompany.myaddin como ID

De alguna manera hago que el complemento cree algunos archivos (yo usé un script de inicio)

Y en el script de salida verifique el complemento usando Obtener complemento + << ID + Try-catch

Names Default To Here(1);
Try(
Get Addin("com.mycompany.myaddin") << id
, // if this fails add-in has been removed
Delete File("$DOCUMENTS/test.txt");
);
Ahora, cuando cierras JMP, el archivo debería seguir estando allí, pero cuando eliminas el complemento del menú Ver, eliminará el archivo (al menos así me pasó a mí).