Ejemplo de actualización de un plug-in

En el siguiente ejemplo se compara la versión de un plug-in instalado con la versión ubicada en un campo contenedor del archivo de FileMaker Pro y se actualiza, si es necesario.

  1. En el archivo de la app personalizada, cree una tabla denominada Actualización del plug-in para almacenar la información del plug-in.
  2. Defina los siguientes campos:
  3. Nombre de campo

    Tipo de campo

    Nombre del plug-in

    texto

    Versión del plug-in necesaria

    número

    Versión del plug-in instalada

    cálculo (no almacenado). Para ver un ejemplo de código, consulte el Cálculo de versión del plug-in del cliente mostrado a continuación.

    Estado del plug-in instalado

    cálculo (no almacenado). Para ver un ejemplo de código, consulte el Cálculo de estado del plug-in del cliente mostrado a continuación.

    Archivo de plug-in

    contenedor

  4. Cree una presentación con el nombre Información de actualización del plug-in y añádala a los campos definidos en el paso 2.
  5. Cree el siguiente guión y asígnele el nombre Instalar plug-in:
    Copiar
    Establecer captura de errores [Activo]
    Instalar archivo plug-in [Actualización del plug-in::Archivo de plugin]
    #
    #Solucionar errores
    If [Get(LastError) ≠ 0]
        If [Get(LastError) = 3]
            Mostrar cuadro de diálogo personalizado [Actualización del plug-in::Archivo de plug-in & " no se ha podido instalar. Asegúrese de que la opción Permitir soluciones para instalar archivos esté seleccionada en los ajustes del plug-in de FileMaker Pro."]
        Else If [Get(LastError) = 1550]
            Mostrar cuadro de diálogo personalizado [Actualización del plugin::Archivo de plug-in & " se ha instalado, pero no se ha podido inicializar."]
        Else If [Get(LastError) = 1551]
            Mostrar cuadro de diálogo personalizado [Actualización del plugin::Archivo de plug-in & " no se ha podido instalar."]
        Else
            Mostrar cuadro de diálogo personalizado ["Se ha producido " & Get(LastError) & " un error general al instalar " & Actualización del plug-in::Archivo de plug-in]
        End If
    End If
  6. Cree el siguiente guión y asígnele el nombre Comprobar versiones del plug-in:
    Copiar
    Ir a la presentación ["Información de actualización del plug-in"]
    Ir al registro/petición/página [Primero]
    Loop [ Flush: Siempre ]
        If [Actualización del plug-in::Versión del plug-in instalada < Actualización del plug-in::Versión del plug-in necesaria]
            #El plug-in debe estar instalado o actualizado.
            Ejecutar guión [Especificado: Desde la lista ; "Instalar plug-in" ;
            Parámetro: ]
        End If
        Ir al registro/petición/página [Siguiente; Salir después del último: Activo]
    End Loop
  7. Cree el siguiente guión y asígnele el nombre Comprobar si está activado:
    Copiar

    Establecer captura de errores [Activo]
    Ejecutar búsqueda [Restaurar]
    #Buscar "Activado" en el campo Estado del plug-in instalado
    If[Get ( FoundCount ) < Get ( TotalRecordCount )]
        Mostrar cuadro de diálogo personalizado ["Algunos plug-ins necesarios no están activados. Asegúrese de que la opción Permitir soluciones para instalar archivos esté seleccionada en los ajustes del plug-in de FileMaker Pro."]
    End If
  8. Cree un guión de arranque con el nombre Guión de actualización del plug-in que haga referencia a los guiones anteriores cuando se abra la base de datos:
    Copiar
    Ejecutar guión [Especificado: Desde la lista ; "Comprobar versiones del plug-in" ;
    Parámetro: ]
    Ejecutar guión [Especificado: Desde la lista ; "Comprobar si está activado" ;
    Parámetro: ]
    Ir a la presentación [presentación original ; Animación: Ninguna ]

Cálculo de versión del plug-in del cliente

Copiar
Let (
    [
    PluginNamePosition = Position ( Get(InstalledFMPlugins); Plugin Name ; 1 ; 1 );
    PluginVersionStart = PluginNamePosition + Length( Plugin Name ) + 1;
    PluginVersionEnd = Position ( Get(InstalledFMPlugins); ";" ; PluginNamePosition ; 2 );
    PluginVersionLength = PluginVersionEnd - PluginVersionStart
    ];
    If ( PatternCount ( Get (InstalledFMPlugins) ; Plugin Name ) = 0 ; "" ; Middle ( Get(InstalledFMPlugins) ; PluginVersionStart ; PluginVersionLength ) )
)

Cálculo de estado del plug-in del cliente

Copiar
Let (
    [
    PluginNamePosition = Position ( Get(InstalledFMPlugins); Plugin Name ; 1 ; 1 );
    PluginStateStart = Position ( Get(InstalledFMPlugins); ";" ; PluginNamePosition ; 2 ) + 1;
    PluginStateEnd = If ( Position ( Get(InstalledFMPlugins); "¶" ; PluginNamePosition ; 1 ) > 0; Position ( Get(InstalledFMPlugins); "¶" ; PluginNamePosition ; 1 ); Length( Get(InstalledFMPlugins) ) + 1 );
    PluginStateLength = PluginStateEnd - PluginStateStart
    ];
    If ( PatternCount ( Get (InstalledFMPlugins) ; Plugin Name ) = 0 ;
    "" ; Middle ( Get(InstalledFMPlugins) ; PluginStateStart ; PluginStateLength ) )
)

Notas 

  • Para que los plug-ins puedan instalarse, la opción Permitir a las soluciones instalar archivos debe seleccionarse en los ajustes del plug-in del cliente. Consulte Cambiar los ajustes de plug-ins.
  • Si se ha desactivado el plug-in en los ajustes del plug-in del cliente, se instalará, pero no estará accesible hasta que el usuario lo active manualmente.
  • Sólo se puede almacenar un plug-in en cada campo contenedor, aunque se puede ver la información de todos los plug-ins si se crean varios campos contenedor de plug-ins en una única presentación.