パッチファイルについて

パッチファイルの最上位の構造は次のとおりです:

コピー
<?xml version="1.0"?>
<FMUpgradeToolPatch version="2.2.2.0">
    <Structure>
        <!-- 1 つまたは複数の *Action 要素 -->
        <AddAction> ... </AddAction>
        <DeleteAction> ... </DeleteAction>
        <ReplaceAction> ... </ReplaceAction>
    </Structure>
    <Metadata>
        <AddAction> ... </AddAction>
    </Metadata>
</FMUpgradeToolPatch>

FMUpgradeToolPatch ルート要素はこのファイルが Upgrade Tool によりパッチファイルとして使用されることを示しています。この要素によりファイルは FMSaveAsXML ファイルと区別されます。FMSaveAsXML ファイルは変更せずに Upgrade Tool で使用することはできません。

メモ  一部の要素を変更する場合、FMUpgradeToolPatch の version 属性には 2.0.0.0 よりも大きい値が必要です。

FMUpgradeToolPatch の子要素は次のとおりです:

  • Structure: カタログで実行する処理やファイルの構造を記述するその他の要素を含めます。

  • Metadata: データベースカタログ以外のものについて実行する処理を含めます (たとえば、[ファイルオプション] ダイアログボックスの設定など)。

Structure 要素を使用したオブジェクトやカタログの変更

*Action 要素は Structure 内で使用でき、追加、削除、または置換するオブジェクトやカタログを指定できます。

*Action 要素

説明

サポート

AddAction

新しいオブジェクトを追加します。

オブジェクトを追加するには、オブジェクトのカタログの要素名を使用してカタログおよびオブジェクトの UUID を指定します。例:

コピー
<AddAction>
  <LayoutCatalog>
    <UUID>Z3D7AF30-4E47-...</UUID>
    <TagList></TagList>
    <Layout>
      <PartsList>
        <Part>
          <ObjectList>
            <LayoutObject>
              <UUID>5D660197-8995...</UUID>
      ...
    </Layout>
  </LayoutCatalog>
</AddAction>

AddAction 内で、カタログの要素名を使用します。カタログ要素内で、UUID 要素を含めて追加する特定のオブジェクトまで構造を再現します。カタログには各オブジェクトの子要素を持つ ObjectList 要素があるものとないものがあります。1 つの AddAction 要素内で、ObjectList のような一覧要素内に複数のオブジェクトを含めることで複数のオブジェクトを追加できます。含める構造については FMSaveAsXML ファイルを参照してください。また、「パッチファイルの作成」の例を参照してください。

FMSaveAsXML ファイルでは、Structure 要素の子要素のほとんどはカタログです。通常、それらの子要素はサポートされているオブジェクトで、パッチファイルのこの処理を使用して追加することができます。

既存のオブジェクトへのサブオブジェクトの追加は FieldsForTables と StepsForTables 以外サポートされていません。

保存済み検索はサポートされていません。

次のデータ形式オプションは現在サポートされていません:

  • フィールドタイプ: 数字‬

    • 書式: 論理値‬

      • 0 以外の値の表示方法

      • 0 の表示方法 ‪

  • 書式: 小数、通貨、およびパーセント‬

    • 記号 (パーセントでは表示されません)‬ ‪

    • 3 桁区切りを使用 (使用を選択できますが、文字の指定はサポートされていません)

  • ‪フィールドタイプ: 日付およびタイムスタンプ (日付オプション)‬

    • 書式: 「14/12/25」および「2014/12/25」‬

      • ‪セパレータ‬ ‪

    • 書式: その他 ‪

      • [文字を前に配置] のオプション以外のすべてのオプション‪ ‪

  • フィールドタイプ: 時刻およびタイムスタンプ (時刻オプション)‬ ‪

    • 書式: 時、分、秒のすべての組み合わせ‬ ‪

    • 区切り線 (使用を選択できますが、文字の指定はサポートされていません)

    • ‪24 時間制 (指定文字)‬

    • ‪12 時間制、午前‬ ‪

    • 12 時間制、午後‬

DeleteAction

オブジェクトまたはカタログ全体を削除します。

カタログ内のオブジェクトを削除するには、ItemReference 要素を使用して UUID 属性および type 属性を指定します。例:

コピー
<DeleteAction>
  <ItemReference
    UUID="E2A7AF30-4E47-..."
    type="ExtendedPrivilegeReference">
  </ItemReference>
</DeleteAction>

メモ  すべての参照に UUID が必要です。UUID がないと処理は実行されません。

カタログを削除するには、CatalogReference 要素を使用して catalogName および UUID 属性を指定します。例:

コピー
<DeleteAction>
  <CatalogReference
    catalogName="AccountsCatalog"
    uuid="4E2F65F4-D97B-4604-...">
  </CatalogReference>
</DeleteAction>

サポートされている場合、カタログを削除するとカタログ内のユーザが作成したすべてのオブジェクトが削除されます。あらかじめ定義されたオブジェクト ([完全アクセス]、[データ入力のみ]、および [閲覧のみアクセス] アクセス権セットなど) は削除されません。

XML 構造内の次の上位レベルのオブジェクト (および含まれているオブジェクト) のみがサポートされています:

  • CustomFunctionReference

  • AccountReference

  • PrivilegeSetReference

  • ExtendedPrivilegeReference

  • AuthorizationReference

  • CustomMenuReference

  • CustomMenuSetReference

  • ScriptReference

  • ExternalDataSourceReference

  • BaseDirectoryReference

  • LayoutThemeReference

  • BaseTableReference

  • FieldReference

  • TableOccurrenceReference

  • RelationshipReference

  • ValueListReference

  • LayoutReference

  • ScriptStepReference (ScriptReference 要素を子に持つ必要があります)

  • LayoutObjectReference (LayoutReference 要素を子に持つ必要があります)

AccountsCatalog 以外のすべてのカタログがサポートされています。

ReplaceAction

既存のオブジェクトおよび含まれているオブジェクトを変更します。

通常、オブジェクトはプロパティのみ置き換えることができます。子要素はできません。そのため含まれているオブジェクトを記述する XML には ObjectList 要素を含めることはできません。ObjectList 要素が含まれていると、ReplaceAction は意図しない動作を実行します。このルールの例外の 1 つはレイアウト全体を置き換えることです。この場合、AddAction を使用する場合と同様に、レイアウトを記述する XML が完全である必要があります。サブオブジェクトを置き換えるには、この処理でサブオブジェクトが明確に参照されている必要があります。たとえば、ポータル内のフィールドレイアウトオブジェクトを置き換える場合、ポータルを置き換える代わりに、フィールドオブジェクトのみを置き換えます。

オブジェクトを置き換えるには、Replace 要素を使用して type および UUID 属性を指定します。例:

コピー
<ReplaceAction>
  <Replace
    type="LayoutObject"
    UUID="EBF21276-CE7C-...">
    ...
  </Replace>
</ReplaceAction>

Replace 要素の中で、オブジェクトとプロパティを指定します。「パッチファイルの作成」の例を参照してください。

メモ  すべての参照に UUID が必要です。UUID がないと処理は実行されません。

XML 構造内の上位レベルのオブジェクト (および含まれているオブジェクト) のみがサポートされています。

LayoutObject 要素の場合、次の type 属性を持つ要素のみが ReplaceAction を使用して基本プロパティを変更できます:

  • Edit Box

  • Text

  • Graphic

  • Line

  • Rectangle

  • Group

  • External

  • Portal

  • Tab Control

  • Panel

  • Button

  • Button Bar

  • Popover Button

  • PopoverPanel

  • Slide Control

レイアウトオブジェクトの別のタイプへの変更や配置されているレイアウトの変更はサポートされていません。

Metadata 要素を使用した設定の変更

AddAction 要素によって Metadata 要素内で変更する設定を指定します。設定を変更するには、設定の要素名を使用して 1 つまたは複数の属性の値を指定します。

FileMaker 21.1.1 以降、Upgrade Tool では次のパッチファイルに示す設定の変更をサポートしています。これは [ファイルオプション] ダイアログボックスの設定のサブセットと FileMaker ネットワーククライアントおよび FileMaker WebDirect クライアントの [ホストのファイル一覧に表示しない] オプションです。

サポートされている設定のいずれかを変更するには:

  1. 次に示すようなパッチファイルを作成して AddAction 内に 1 つまたは複数の要素を含め、必要に応じて属性を設定します。変更する必要のない設定の要素は省略できます。

  2. パッチファイルを検証します。例:

    コピー
    ./FMUpgradeTool --validatePatch -src_path ./MyApp-v1.fmp12 -patch_path ./v1-v2-patch.xml -src_account Admin -src_pwd admin
  3. パッチファイルが有効な場合、パッチファイルによってカスタム App が正しく更新されるかどうかをテストします。例:

    コピー
    ./FMUpgradeTool --update -src_path ./MyApp-v1.fmp12 -src_account Admin -src_pwd admin -patch_path ./v1-v2-patch.xml -dest_path ./MyApp-v1-patched-to-v2.fmp12 -v
コピー
サポートされている設定の変更のパッチファイル
<?xml version="1.0"?>
<FMUpgradeToolPatch version="2.2.2.0"> <! -- 設定を変更するには、バージョンの値が 2.0.0.0 よりも大きい値が必要。-->
  <METADATA> <! -- 必須のタグ -->
    <AddAction> <! -- 必須のタグ -->
      <HideClientSharing enable="True"></HideClientSharing> <! -- FileMaker ネットワーククライアント、有効: ホストのファイル一覧に表示しない -->
      <HideWebDirectSharing enable="True"></HideWebDirectSharing> <! -- FileMaker WebDirect クライアント、有効: ホストのファイル一覧に表示しない -->
      <Login type="1"> <! -- タイプ: 自動ログインがオン ("1")、オフ ("-1") -->
        <UserName> <! -- 自動ログインがオフの場合、UserName および INSECURE_PASSWORD を省略可能 -->
          <INSECURE_TEXT>Admin</INSECURE_TEXT>
        </UserName>
        <INSECURE_PASSWORD>
          <INSECURE_TEXT></INSECURE_TEXT>
        </INSECURE_PASSWORD>
      </Login>
      <SavePassword keychain="True" requireMobile="True"></SavePassword> <! -- キーチェーン: 保存されている資格情報による認証を許可、モバイルで必要: 要 iOS および iPadOS のパスコード -->
      <ShowSignInFields enable="True"></ShowSignInFields> <! -- 有効: OAuth/AD FS が有効な場合でもサインインフィールドを表示 -->
      <HideToolbars enable="True"></HideToolbars> <! -- 有効: すべてのツールバーを隠す -->
      <Spelling whileTyping="Beep" underline="True"></Spelling> <! --入力時: 入力時にスペルをチェック ("警告"/"オフ")、下線: 間違ったスペルを特殊な下線で示す -->
      <Text>
        <Handle smartQuotes="True" asian="True" roman="True"></Handle> <! -- スマートクォート: スマートクォートを使用、アジア言語: 禁則処理、 ローマ言語: 半角英文ワードラップ
 -->
        <DataEntry type="512"></DataEntry> <! -- タイプ: 設定が異なる場合は常に確認する ("512")、常に現在のシステム設定を使用する ("1024")、常にファイルに保存されている設定を使用する ("0") -->
      </Text>
    </AddAction>
  </Metadata>
</FMUpgradeToolPatch>