Jump to content

Recommended Posts

Posted

FileMaker 2025 (v22.0) comes with improved tools. When you install FileMaker Server, you find these tools in the /FileMaker Server/Database Server/bin folder.

  • FMUpgradeTool
    A command-line utility (developer preview) for applying schema, layout, or script changes to a FileMaker Pro .fmp12 file without affecting the data. It uses XML-based patch files to modify an existing file (the source) and generate an updated version (the destination). Common use cases include delivering critical bug fixes, applying temporary debug patches, or making small enhancements between full app releases. It does not support migrating or altering record data. Best used for lightweight, short-term updates rather than major version changes.
  • FMDeveloperTool
    A utility for advanced FileMaker developers that allows for detailed analysis, comparison, and documentation of FileMaker solutions. It helps identify structural differences and supports version control workflows.
  • FMDataMigration
    A command-line tool that enables efficient migration of data from one FileMaker file to another. It is especially useful during development and deployment to move data from a live file into a newly updated solution file without loss.

Include plugins

New in version 22.0 is the possibility to load plugins. The new command line parameter -plugin_folder will tell each tool where to find the plugins. Please use version 15.2 (or better 15.3 soon) to load the MBS Plugin. We had to change a few things to make it work well.

If you like to copy tools to the desktop, you need to include libraries for macOS. All the tools reference libraries in ../Frameworks folder, so you need that folder a level higher:

FileMakerToolsFolder.jpg

Example

Let's start with a sample upgrade. We make a new Assets.fmp12 file, save it as XML. Then we make a copy of the file, add a field with a calculation calling MBS("Version") and save that again as XML. Now we compare both XML files and find the XML things we need for this example patch file:

<?xml version="1.0" encoding="UTF-8"?>
<FMUpgradeToolPatch>
  <Structure>
    <AddAction>
      <FieldsForTables membercount="1">
        <FieldCatalog>
          <UUID modifications="1" userName="Duc Ha" accountName="Admin" timestamp="2020-04-03T11:17:11">886552CE-F9EF-46C8-8ABB-62CDA24ADB4A</UUID>
          <TagList/>
          <BaseTableReference id="130" name="Assets" UUID="032CA0A0-BDD5-416D-BF5A-A9123C0F1048"/>
          <ObjectList membercount="6">
            <Field id="15" name="Test" fieldtype="Normal" datatype="Text" comment="">
              <UUID modifications="2" userName="Christian Schmitz" accountName="Admin" timestamp="2025-06-29T19:49:17">CF650B81-34D2-404B-908C-EEBCD6F267A2</UUID>
              <AutoEnter type="Calculated" prohibitModification="False" overwriteExisting="True" alwaysEvaluate="False">
                <Calculated>
                  <Calculation>
                    <TableOccurrenceReference id="1065090" name="Assets" UUID="FCBB4700-F780-414D-A5A8-64F0DADAA8F6"/>
                    <Text><![CDATA[MBS("Version")]]></Text>
                  </Calculation>
                </Calculated>
              </AutoEnter>
              <Validation type="OnlyDuringDataEntry" allowOverride="True" notEmpty="False" unique="False" existing="False"/>
              <Storage autoIndex="True" index="None" global="False" maxRepetitions="1">
                <LanguageReference name="English" id="21"/>
              </Storage>
              <TagList/>
            </Field>
          </ObjectList>
        </FieldCatalog>
      </FieldsForTables>
    </AddAction>
  </Structure>
</FMUpgradeToolPatch>

So we build this command line call to validate the patch field:

./FileMaker\ Tools/Tools/FMUpgradeTool 
	--validatePatch  
	-src_path ./Assets.fmp12  
	-patch_path ./upgrade.xml

Next we try to call the tool without plugins:

./FileMaker\ Tools/Tools/FMUpgradeTool  
	--update -src_path ./Assets.fmp12  
	-patch_path ./upgrade.xml  
	-dest_path ./Assets2.fmp12   
	-v 
	-src_account Admin  
	-src_pwd ""

When we inspect the output file, we see our calculation being commented out:

/* MBS("Version") */

That was an issue for clients in older versions of the tool. With version 22.0, we can try again with plugins:

./FileMaker\ Tools/Tools/FMUpgradeTool  
	--update -src_path ./Assets.fmp12  
	-patch_path ./upgrade.xml  
	-dest_path ./Assets2.fmp12   
	-v 
	-src_account Admin  
	-src_pwd "" 
	-plugin_folder /Users/cs/Library/Application Support/FileMaker/Extensions

As you see we simply point to the local plugins folder used for FileMaker Pro and the tool loads it.

The output in Terminal looks like this:

FMUpgradeTool 22.0.1.64 (06-13-2025)
Subcommand: "update"
Source file: "./Assets.fmp12"
Source account: "Admin"
Patch file: "./upgrade.xml"
Destination file: "./Assets2.fmp12"
Force overwrite: Off
In place: Off

Start: Sun Jun 29 19:58:14 2025
Preparing Input and Output Files...
MBS Plugin version 15.3.0.04 Prerelease for Mac 64-bit loaded for Tool 22.0.
MBS Debug: Compiled Jun 27 2025, 09:32:47
Loading Patch File...
Parsing XML...
Applying Patch File...
Patch File Applied
End: Sun Jun 29 19:58:15 2025

As you see the MBS Plugin will report it being loaded.

Since the call is successful, our MBS() call in the calculation is no longer quoted, but actually works. Hurray!

Please try and let us know if you find some issues.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.