Exemplo de atualização de plug-in

O exemplo a seguir compara a versão de um plug-in instalado com a versão localizada em um campo de container no arquivo do FileMaker Pro e atualiza o plug-in, se necessário.

  1. No arquivo de app personalizado, crie uma tabela chamada Atualização do plug-in para armazenar informações de plug-in.
  2. Defina os seguintes campos:
  3. Nome do campo

    Tipo de campo

    Nome do plug-in

    texto

    Versão do plug-in necessária

    número

    Versão do plug-in instalada

    cálculo (não armazenado). Para código de exemplo, consulte Cálculo de atualização de plug-in do cliente, abaixo.

    Estado do plug-in instalado

    cálculo (não armazenado). Para código de exemplo, consulte Cálculo de estado de ativado de plug-in do cliente, abaixo.

    Arquivo do plug-in

    container

  4. Crie um layout chamado Informações da atualização do plug-in e adicione os campos definidos na etapa 2 a ele.
  5. Create the following script and name it Install Plug-in:
    Copiar
    Definir captura de erro [Ativo]
    Instalar arquivo de plug-in [Atualização do plug-in::Arquivo do plug-in]
    #
    #Lidar com erros
    If [Get(LastError) ≠ 0]
        If [Get(LastError) = 3]
            Mostrar caixa de diálogo personalizada [Atualização do plug-in::Arquivo do plug-in & "não pode ser instalado. Confirme se “Permitir que soluções instale arquivos” está selecionado nas configurações de plug-in do FileMaker Pro."]
        Else If [Get(LastError) = 1550]
            Mostrar caixa de diálogo presonalizada [Plugin Update::Plugin File & " foi instalado, mas não pôde ser inicializado."]
        Else If [Get(LastError) = 1551]
            Mostrar caixa de diálogo presonalizada [Plugin Update::Plugin File & " não pôde ser instalado."]
        Else
            Mostrar caixa de diálogo presonalizada ["Um erro geral " & Get(LastError) & " ocorreu ao instalar " & Plugin Update::Plugin File]
        End If
    End If
  6. Crie o seguinte script e nomeie-o Verificar versões de plug-in:
    Copiar
    Ir para layout ["Informações de atualização do plug-in"]
    Ir para registro/solicitação/página [Primeiro]
    Loop [ Liberar: Sempre ]
        If [Atualização do plug-in::Versão instalada do plug-in < Atualização do plug-in::Versão necessária do plug-in]
            #O plug-in precisa estar instalado ou atualizado.
            Realizar script [Especificado: Na lista ; "Instalar plug-in" ;
            Parâmetro: ]
        End If
        Ir para registro/solicitação/página [Próximo; Sair depois do último: Ativado]
    End Loop
  7. Crie o seguinte script e chame-o de Verificar se ativado:
    Copiar
    Definir captura de erro [Ativo]
    Realizar busca [Restaurar]
    #Buscar por "Ativado" no campo Estado do plug-in instalado
    If[Get(FoundCount) < Get(TotalRecordCount)]
        Mostrar caixa de diálogo personalizada ["Alguns plug-ins necessários não estão ativados. Confirme se “Permitir que soluções instale arquivos” está selecionado nas configurações de plug-in do FileMaker Pro."]
    End If
  8. Crie um script de inicialização nomeado Script de atualização do plug-in que faça referência aos scripts acima em ordem quando o banco de dados for aberto:
    Copiar
    Realizar script [Especificado: Da lista ; "Verificar versões de plug-in"] ;
    Parâmetro: ]
    Realizar script [Especificado: Da lista ; "Verificar se ativado"] ;
    Parâmetro: ]
    Ir para layout [layout original ; Animação: Nenhum ]

Cálculo de atualização de plug-in do 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 de ativado de plug-in do 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 plug-ins sejam instalados, a opção Permitir que soluções instalem arquivos deve estar selecionada nas configurações de plug-in do cliente. Veja Alteração das configurações do plug-in.
  • Se um plug-in tiver sido desativado nas configurações de plug-in do cliente, ele será instalado, mas não ficará acessível até ser ativado manualmente pelo usuário.
  • Somente um plug-in pode ser armazenado em cada campo de container, mas você pode visualizar as informações de plug-in criando vários campos de container de plug-in em um único layout.