Cómo escribir complementos JMP de actualización automáticaLa configuración de un 'Depósito de complementos' facilita la administración de una colección de complementos JMP que se actualizan automáticamente. En este ejemplo, el depósito no es más que una carpeta que contiene:
- El archivo de complemento JMP “com.jmp.brady.addin1.jmpaddin”.
- Un archivo de metadatos, “File Metadata.jmp”.
En un caso típico, el almacén de complementos residirá en una carpeta de servidor donde los usuarios de complementos tienen acceso de lectura. El archivo de metadatos es una tabla JMP que almacena información sobre cada complemento en el almacén. En este ejemplo, lo usaremos para verificar cuándo se publicó el complemento por última vez.
Si el complemento está actualizado cuando el usuario lo ejecuta, el complemento se ejecutará sin fanfarria. Sin embargo, si el usuario intenta ejecutar una versión obsoleta del complemento, recibirá un aviso para instalar la nueva versión:
Si el usuario hace clic en "Cancelar", se ejecutará el complemento actual. Si él o ella hace clic en "Aceptar", la actualización se instalará automáticamente, sobrescribiendo la versión obsoleta. En este ejemplo, se informa al usuario de la instalación y se le pide que vuelva a ejecutar el complemento:

Complementos JMP de actualización automática: un ejemplo paso a paso.
- Abra "Hello Script.jsl".
- Asegúrese de que la línea 10 tenga la fecha 01/08/2012 entre comillas.
- Asegúrese de que la línea 22 tenga la cadena "Hola mundo" como argumento del cuadro de texto.
- Nota: La línea 15 llama al buscar_actualizaciones función, que no está contenida en nuestro script principal, pero está contenida en "update_functions.jsl". Esta es la razón de la incluir declaración en la línea 13. Esto es bueno porque mantiene nuestra secuencia de comandos principal más simple, pero debemos asegurarnos de incluir "update_functions.jsl" como un archivo adicional cada vez que construimos un complemento.
- Guarde y cierre el archivo.

- Abra “Archivo Metadata.jmp”:
- Tenga en cuenta que el nombre de archivo en la columna "Archivo" debe ser el mismo que la cadena asignada a "Addin_Name" en la línea 11 del script anterior.
- Asegúrese de que la fecha de publicación sea el 01/08/2012, cámbiela si es necesario, luego guarde y cierre.

- Abra "update_functions.jsl":
- En la línea 4, establezca la variable depot_path en la carpeta que usará para su depósito.
- Tenga en cuenta que la variable meta_file en la línea 5 debe coincidir con el nombre del archivo de metadatos.
- Guarde y cierre este archivo.

- Cree el complemento:
- En el menú JMP, seleccione Archivo >> Nuevo >> Nuevo complemento
- En la pestaña 'Información general':
- Ingrese el nombre del complemento, en este ejemplo, "Hello World".
- Introduzca el ID del complemento. Lo que ingrese aquí debe coincidir exactamente con la columna Archivo en el archivo de metadatos y la cadena Addin_Name en "Hello Script.jsl".

- En la pestaña 'Elementos del menú':
- Haga clic en el botón "Agregar".
- En el cuadro de texto "Nombre del elemento de menú" del panel 'General', ingrese el nombre que desea que aparezca en el menú desplegable Complemento.
- En el panel 'Acción', seleccione el botón de opción 'Ejecutar JSL en este archivo:'.
- Haga clic en 'Examinar' y agregue el archivo "Hello Script.jsl".

- En la pestaña 'Archivos adicionales':
- Haga clic en 'Agregar'.
- Busque el archivo "update_functions.jsl" y agréguelo.
- Haga clic en 'Guardar' y guarde el nuevo archivo .jmpaddin en una ubicación conveniente.

- Configure el depósito:
- Coloque el archivo .jmpaddin que acaba de crear, junto con el archivo "File Metadata.jmp", en la carpeta que especificó como su carpeta de almacén de complementos (línea 4 del archivo "update_functions.jsl").
- Prueba el complemento:
- Desde la barra de menú de JMP, seleccione Add-Ins >> Hello World (o lo que haya ingresado como texto del elemento del menú) y aparecerá la ventana simple "Hello World".
- Haga clic en 'Aceptar' para cerrar la ventana.
- Cree una versión actualizada del complemento:
- Abra "Hello Script.jsl".
- Cambie la línea 10 para tener la fecha 01/10/2012 entre las comillas.
- Cambie la línea 22 para que tenga la cadena "Hellooooooooo world" como argumento del cuadro de texto.
- Guarde y cierre el archivo.
- Realice los pasos 4a a 4d exactamente como antes, con la siguiente excepción importante:
- Al compilar el complemento, en la pestaña "Información general", asegúrese de que la casilla "Instalar después de guardar" NO esté marcada.
- Coloque el archivo .jmpaddin que acaba de crear en el almacén, sobrescribiendo el archivo .jmpaddin anterior.
Tenga en cuenta que aún no hemos publicado el complemento, ya que aún tenemos que cambiar la fecha de publicación en el archivo de metadatos. Para ver esto, desde el menú JMP, seleccione Add-Ins >> Hello World (o lo que haya ingresado como texto del elemento del menú) y la ventana "Hello World" aparecerá como antes.
- Publicar el complemento:
- Abra "Archivo Metadatos.jmp". Cambie la fecha de publicación al 01/10/2012. Guarde y cierre el archivo.
- Prueba la actualización automática:
- En el menú JMP, seleccione Complementos >> Hello World. El complemento determinará que hay una actualización disponible y le presentará la ventana de actualización.
- Haga clic en 'Cancelar' para rechazar la actualización y ver la ventana "Hello World" como antes.
- Seleccione Complementos >> Hello World para ejecutar el complemento nuevamente.
- Esta vez, cuando aparezca la ventana de actualización, haga clic en 'Aceptar' para aceptar la actualización.
- Haga clic en 'Aceptar' para cerrar la ventana de confirmación.
- Vuelva a ejecutar el complemento. El nuevo complemento se ejecutará y mostrará "Hellooooooooo World" como el texto de la ventana.
Re: Cómo escribir complementos JMP de actualización automática@ivan_j_moore Tuve el mismo problema (empresa internacional), así que cambié a usar el número de versión del complemento en lugar de la fecha. Así que básicamente:
// Get the installed JMP AddIn version
installedAddIn = Get Addin( "com.jmp.brady.addin1.jmpaddin" );
installedAddInVer = installedAddIn << version;
addinLocation = "http://gitlab.contoso.com/addin/updateLocation/addin1.jmpaddin";
depot_path = "http://gitlab.contoso.com/addin/updateLocation/";
meta_file = "File Metadata.csv";
Try(
dtm = Open( depot_path || meta_file, invisible );
r = ((dtm << selectwhere( :File == "addin1.jmpaddin" )) << get selected rows)[1];
mostrecent = Column( dtm, "Version" )[r];,
print("Cannot access update site.");
mostrecent = installedAddInVer;
Throw("AddIn cannot check for updates.");
);
If( mostrecent != installedAddInVer,
requestUpdate( mostrecent, installedAddInVer, addinLocation);
);
Close( dtm, nosave );La compensación (¿supongo que podría llamarlo así?) es que el número de versión en el complemento y la columna de versión (en lugar de la columna de fecha) en los metadatos del archivo tienen que ser los mismos para cada nueva versión, pero eso no es tan grande un trato (todavía tengo que actualizar la fecha de todos modos). También cambié a .csv para File Metadata porque tengo un script de Python que crea complementos JMP y Python no puede escribir archivos .jmp. Realmente debería hacer una publicación sobre ese guión...
Re: Cómo escribir complementos JMP de actualización automáticaHola Jeff,
Esto funciona muy bien para controlar complementos con un grupo o equipo.
Tengo un pequeño problema con eso, cuando hago la actualización siguiendo tus instrucciones siempre recibo este mensaje.
"La versión de actualización todavía está disponible"
Cuando hago clic en Aceptar, se realiza la instalación, pero la próxima vez aparece el mensaje.
Creo que tiene algo que ver con las diferentes zonas horarias, estoy en el Reino Unido.
He actualizado la zona horaria en el metarchivo "Fecha de publicación" a d/m/y.
He actualizado el inicio de la línea de script 10 "en formato" a dd/mm/yyyy.
¿Hay algo que necesite actualizarse en el archivo "Función de actualización"?
Cualquier ayuda apreciada.
Re: Cómo escribir complementos JMP de actualización automática<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola, esto suena muy útil. Desafortunadamente no me funcionó (todo estuvo bien hasta el último punto f.).
¿Es posible que algo (Root? Carpeta?) en el "File Metadata.jmp" tiene que ser cambiado?
Editar:
Hubo un problema de nombre en mi caso. Pude solucionar el problema configurando los siguientes nombres idénticos:
- Nombre del complemento
- ID de complemento
- Archivo en "File Metadata.jmp"
- el nombre de archivo del jmpaddin
Llamé a todos estos: "Foo.jmpaddin"
¡Ahora funciona a las mil maravillas!