Every version of BaseElements since the very first release have included an option to download a “runtime” version of the solution. This means you can download a full application for Mac or Windows which will run separately from your FileMaker Pro application.
Over the course of the last 5 versions of FileMaker, things have changed in the runtime world :
In FileMaker 14, FileMaker gave notice that runtimes are a deprecated feature. This doesn’t mean they’re going away, just that they’re no longer supported. What this has meant in practice is not clear.
In Mac OS Sierra there was a new added path randomisation security feature that meant that a non code-signed app would have issues running, so we needed to start signing the runtime to avoid issues.
One of the Mac / Safari updates required you to sign your dmg files so that you can drag the app out of the disk image without otherwise authorising it or resorting to workarounds.
Mac OS Catalina added another security feature that means that you now also need to notarise your code signed app, by sending it to Apple to verify it before it will load without issues.
Finally, in FileMaker Pro 18.0.2 runtimes just plain stopped working. Generate a runtime from a brand new file, and it crashes on launch. This bug isn’t fixed in 18.0.3 as of this writing.
A lot of this is complicated by the nature of runtimes.
The BaseElements runtime has some unique issues when it comes to all of this. It’s not an application built with Xcode, so we can’t use any of the native tools. It’s both an application, but also it contains other code signed libraries, and includes its own separate BaseElements plugin, which also needs to be signed.
The BaseElements runtimes need to read and write to disk, in places we don’t yet know about ( against new sandbox rules ) and connect to the network, and can possibly install updated plugins at any time.
Although it’s an application, it quite often exists outside the Applications folder, as people keep versions of it for history purposes, or have a single copy of BaseElements for each project they work on.
For ages we’ve been using AppWrapper to handle a lot of the code signing and notarizing for us, and it’s been doing a mostly stellar job.
But recently, we did a 30 minute fix for a bug in BaseElements and have now spent 2 days trying to get a working runtime. So far the issues have been :
- The app works, but the plugin can’t load.
- The app works, but can’t locate the database files.
- The app just plain doesn’t work, it reports as broken, probably a code signing issue. Trying to find out what by searching the Console app is a nightmare.
- The app works perfectly on two test machines. And then one or more of the above re-appears when the exact same .dmg file is downloaded from the internet to the same machine.
All in all, I have to come to the conclusion that runtimes are no longer a good way to distribute FileMaker solutions.
For a long time since the release of the the iOS SDK we thought that maybe we’d also get a Mac/Win SDK, and all of these sorts of issues would go away as we’d be able to hook into the native tools and the runtimes would just be a normal application.
FileMaker has been through 5 major releases now with runtimes deprecated, and I don’t know if a replacement solution is coming or not. I hope it is soon.
BaseElements Runtime future
For now, we’re only going to distribute the .fmp12 versions of BaseElements until further notice.
In the mean time we will keep coding BaseElements as if runtimes are being used ( some of the FileMaker scripting is different for runtimes vs .fmp12 files ) so that any runtimes that a user generates themselves will still work.
You can generate your own runtime with FMPA 17 and it has none of the issues I described above.
I will return runtimes periodically to see if they can be made to work easily, and in a process that can be automated well. At the moment, “made to work” seems to be variable dependent on the weather, and “automated” is almost a non-existent idea.
Create your own Runtimes
There’s no reason why you can’t take the .fmp12 files in BaseElements and generate your own runtime. The steps are :
Start with FileMaker Pro 17. ( Avoid 18 as it has the above mentioned bug in v2 or later, and you should still run the most recent release if you can. )
Turn on “Use Advanced Tools” in the FileMaker Application preferences, if not already done, and restart the app. Open the Tools menu, and go to Developer Utilities. Use the following settings :
You can get the BaseElementsClips18 file from your preferences folder, after launching BaseElements for the first time.
In the solutions options, use the following settings :
You can pick your own closing splash screen icon.
If you like the BaseElements runtime, please submit a feature request to FileMaker and ask for one of the following :
- Change the deprecation, and support this tool properly.
- Remove it from FileMaker altogether.
- Give developers a real alternative, like the iOS SDK.
Then at least we’d be able to better plan for our future solutions.