プラグイン更新の例

次の例は、インストールされたプラグインのバージョンと、FileMaker Pro ファイルのオブジェクトフィールドに配置されるバージョンを比較し、必要に応じてプラグインを更新します。

  1. カスタム App ファイルで、「プラグインの更新」というテーブルを作成してプラグイン情報を保存します。
  2. 次のフィールドを定義します:
  3. フィールド名

    フィールドタイプ

    プラグイン名

    テキスト

    必要なプラグインのバージョン

    数字

    インストールされたプラグインのバージョン

    計算 (非保存)。コードの例は、クライアントプラグインバージョンの計算式を参照してください。

    インストールされたプラグインの状態

    計算 (非保存)。コードの例は、クライアントプラグイン有効状態の計算式を参照してください。

    プラグインファイル

    オブジェクト

  4. 「プラグイン更新情報」という名前のレイアウトを作成し、手順 2 で定義したフィールドを追加します。
  5. 次のスクリプトを作成し、「プラグインをインストール」という名前を付けます:
    コピー
    エラー処理 [オン]
    プラグインファイルのインストール [プラグインの更新::プラグインファイル]
    #
    # エラー処理
    If [Get (最終エラー) ≠ 0]
        If [Get (最終エラー) = 3]
            カスタムダイアログを表示 [プラグインの更新::プラグインファイル & " をインストールできませんでした。FileMaker Pro の [プラグイン] 設定で [ソリューションにファイルのインストールを許可] オプションが選択されていることを確認してください。"]
        Else If [Get (最終エラー) = 1550]
            カスタムダイアログを表示 [プラグインの更新::プラグインファイル & " をインストールしましたが初期化できませんでした。"]
        Else If [Get (最終エラー) = 1551]
            カスタムダイアログを表示 [プラグインの更新::プラグインファイル & " をインストールできませんでした。"]
        Else
            カスタムダイアログを表示 [プラグインの更新::プラグインファイル & "をインストール時に一般エラー " & Get (最終エラー) & " が発生しました。"]
        End If
    End If
  6. 次のスクリプトを作成し、「プラグインのバージョンを確認」という名前を付けます。
    コピー
    レイアウト切り替え [「プラグイン更新情報」]
    レコード/検索条件/ページへ移動 [最初の]
    Loop [フラッシュ: 常に]
        If [プラグインの更新::インストールされたプラグインのバージョン < プラグインの更新::必要なプラグインのバージョン]
            # プラグインは、インストールまたは更新が必要です。スクリプト実行 [指定: 一覧から ;「プラグインをインストール」;
            引数: ]
        End If
        レコード/検索条件/ページへ移動 [次の ; 最後まできたら終了: オン]
    End Loop
  7. 次のスクリプトを作成し、「有効かどうかの確認」という名前を付けます:
    コピー
    エラー処理 [オン]
    検索実行 [記憶する]
    #「インストールされたプラグインの状態」フィールドで "Enabled" を検索します。
    If[Get (対象レコード数) < Get (レコード総数)]
        カスタムダイアログを表示 ["一部の必須プラグインは有効になっていません。FileMaker Pro の [プラグイン] 設定で [ソリューションにファイルのインストールを許可] オプションが選択されていることを確認してください。"]
    End If
  8. 「プラグイン更新スクリプト」という名前の起動スクリプトを作成します。データベースが開くときに上記のスクリプトを順番に参照するものです:
    コピー
    スクリプト実行 [指定: 一覧から ; 「プラグインバージョンを確認」 ;
    引数: ]
    スクリプト実行 [指定: 一覧から ;「有効かどうかの確認」 ;
    引数: ]
    レイアウト切り替え [元のレイアウト ; アニメーション: なし]

クライアントプラグインバージョンの計算式

コピー
Let (
    [
    PluginNamePosition = Position (Get (インストールされた FM プラグイン); Plugin Name ; 1 ; 1 );
    PluginVersionStart = PluginNamePosition + Length (Plugin Name) + 1;
    PluginVersionEnd = Position (Get (インストールされた FM プラグイン); ";" ; PluginNamePosition ; 2);
    PluginVersionLength = PluginVersionEnd - PluginVersionStart
    ];
    If (PatternCount (Get (インストールされた FM プラグイン) ; Plugin Name) = 0 ; “” ; Middle (Get (インストールされた FM プラグイン) ; PluginVersionStart ; PluginVersionLength))
)

クライアントプラグイン有効状態の計算式

コピー
Let (
    [
    PluginNamePosition = Position (Get (インストールされた FM プラグイン); Plugin Name ; 1 ; 1);
    PluginStateStart = Position (Get (インストールされた FM プラグイン); ";" ; PluginNamePosition ; 2) + 1;
    PluginStateEnd = If (Position (Get (インストールされた FM プラグイン); "¶" ; PluginNamePosition ; 1) > 0; Position (Get (インストールされた FM プラグイン); "¶" ; PluginNamePosition ; 1); Length (Get (インストールされた FM プラグイン)) + 1);
    PluginStateLength = PluginStateEnd - PluginStateStart
    ];
    If (PatternCount (Get (インストールされた FM プラグイン) ; Plugin Name) = 0 ;
    "" ; Middle (Get (インストールされた FM プラグイン) ; PluginStateStart ; PluginStateLength))
)

メモ 

  • プラグインをインストールする場合、クライアントのプラグインの設定で [ソリューションにファイルのインストールを許可] オプションが選択されている必要があります。プラグイン設定の変更を参照してください。
  • プラグインがクライアントのプラグインの設定で無効になっている場合、インストールされても手動でユーザにより有効になるまでアクセスできません。
  • 各オブジェクトフィールドには 1 つのプラグインしか保存できませんが、1 つのレイアウト上に複数のオブジェクトフィールドを作成することによりすべてのプラグイン情報を表示できます。