Let us ask you a few questions and see how well you know our MBS FileMaker Plugin:
You probably use a custom menu in FileMaker when you do a serious solution. Because you may not want to expose all the normal menu commands to your users, but reduce the feature set to what they actual need.
Early in the start script you may want to call App.SetProcessName to set your solution name. This defines for example how the top left menu next to the Apple Menu is named on macOS.
After you set the custom menu, you may further customize the menu and rename the content of the some menu entries. For example here we change the hide command to have a different name:
MBS("Menubar.SetMenuCommandTitle"; "FileMaker Pro Advanced¶Hide FileMaker Pro Advanced"; "Hide MyApp")
If you change the process name, you may need to change the menu path in the call. (more)
To build all our plugins for 64-bit Linux (x86_64) we moved to Ubuntu 18.04 this week.
It turns out that updating to a new version of a compiler is easy. You rebuild everything, check new warnings and handle some error messages for changes in C++ frameworks.
But then we tried the plugin on CentOS 7.9 and this was a disappointment. Tons of missing libraries. Well, looks like the c and c++ libraries in CentOS are a few years older than the one in Ubuntu 18.04. Now either we fix the dependencies or we have to redo with CentOS to have a common base.
It turns out you can track down dependency by dependency and use various compiler options to disable newer features and stay with older C++ version 11 instead of 14 or 17. I'd wish this would be easier, but I had to recompile dozens of times to see what each changes causes. e.g. for a normal standard C++ string, you have nine ways to construct them. But we now have to avoid the newer variants and then it works.
On the end the plugin now loads on CentOS 7.8 and Ubuntu 18.4.
If you use an older version of Linux 64-bit, we may be able to avoid another function for you, but not a dozen!
Our first build of the plugins required glibc version 2.27, glibcxx 3.4.21 and cxxabi 1.3.9 as those are the ones coming with Ubuntu 18.04.
The final builds are down to glibc version 2.17, glibcxx 3.4.18 and cxxabi 1.3, which makes it compatible with CentOS 7.9.
Ubuntu 16 comes with CXXABI 1.3.9 and glibc 2.23, so we expect the plugins load on Ubuntu 16, too.
We also tried a fresh installed CentOS 7.7 and it seems like things work there, too.
Coming soon for pr5. If you like to try before that, please let us know.
Die Veranstalter vom Verein FM Konferenz erwarten auch 2021 rund 120 Entwickler, Anwender, IT-Fachleute und Entscheidungsträger aus Wirtschaft, Bildung und Verwaltung. Rund um über 20 Fachvorträge und Workshops wird es viel Zeit zum Vernetzen in den gemeinsamen Pausen und beim Abendprogramm geben.
Für den Deutschsprachigen Raum ist diese Konferenz das Treffen des Jahres. Hier finden Sie vom Anfänger bis zum Profi Kontakte zu anderen Entwicklern. Lernen Sie was es neues gibt, nehmen Sie Impulse mit für die eigene Arbeit und erfahren Sie mehr zu FileMaker von deutschsprachigen Experten!
Die MBS Plugin Schulung vorher findet voraussichtlich am statt im gleichen Hotel am
Bitte planen Sie wenigstens einen extra Tag ein für ihren Besuch in Liechtenstein, damit Sie die Natur in dem schönen Tal geniessen können. Den Aufstieg auf den Sareis können Sie bequem zu Fuß vom Hotel aus starten und die Turnastraße hinauf spazieren bis zum Restaurant am Gipfel. Oder alternativ die Seilbahn nehmen.
Hoffen wir, dass sich im Frühjahr die Corona Lage verbessert und die Konferenz stattfinden kann.
We have a video to explain our new Option-Click feature coming to MBS FileMaker Plugin for version 11.2:
So Option-Click on the gear icon will let FileMaker open the dialog or show the popover. The MBS Plugin notices the option key is down and then clicks for you the button to open the calculation dialog.
The new MBS FileMaker Plugin 11.2 are coming in May 2021 and include this feature. We may tune it a bit more and if you like to try it, please play with 11.2pr4.
- Added new flags for XML.ToJSON to detect numbers and booleans better.
- Added Debugger.IsDataViewerVisible function.
- Improved memory usage of Container.ReadImage, PDFKit.GeneratePreview and PDFKit.GetPDFPageImage functions, especially for server.
- Added Container.ReadImageFile function.
- Fixed trace logging for DynaPDF to work on Windows with UTF-16 trace file properly.
- Updated SQLAPI to version 5.1.4 with new DuckDB support.
- Updated zxing library to get a few newer bug fixes for Barcode.Detect function.
- Added option-key check for when you open variable/field definition window to directly jump into the calculation dialog.
- Deprecated DragDrop.CreateWithWindow in favor of DragDrop.AttachToWindow function.
If you use automatic plugin installation scripts, you may have the MBS Plugin in a container field in FileMaker. But how to automatically know the version number?
We got two short scripts to query the version from a container:
# get temp path
# write DLL file to disk
Set Variable [ $r ; Value: MBS( "Container.WriteFile"; Install Plugin Update if needed::Plugin File Win 64bit; $path) ]
# Query file information
Set Variable [ $version ; Value: MBS( "Files.FileInfo"; $Path; "version") ]
# Delete file
Set Variable [ $version ; Value: MBS( "Files.Delete"; $Path) ]
As you see this script gets a temp path, writes the plugin there with DLL file extension and queries file information. Since MBS Plugin has all metadata in the right headers for DLL handler, the file information can be read by OS functions.
Since this uses OS functions, it needs to run on Windows. Technically we could also do something cross platform, but that would need to read file in memory, scan for the version entry and return it.
Here is a table documenting the release versions of our MBS FileMaker Plugin from the last years. You see how regular we release and what the build number the final version had. If you still use an older one like 188.8.131.52, you may notice you have the pre-release version. Pre-release versions usually are not ready for new/changed features and contain some more debug code to do runtime checks. We disable those for final builds.
|Date||Version||Added support for FileMaker|
This table also lists which version introduces support for newer FileMaker version. Older plugins can't know what a newer FileMaker version brings, so while the plugin is usually ready in time, there are something breaking things. For example the 32 to 64 bit move, the addition of new Linux platform or upcoming Apple Silicon support. Sometimes things change in FileMaker like the Web Viewer switch to WebKit 2 in FileMaker 16, which caused us to rewrite those functions.
A similar table could be assembled for operation system. On macOS you may prefer to use 11.0 or better 11.1 for Big Sur.
Please do not hesitate to contact us if you have questions.
Now Gmail has some security enhancements. And you can use a few ways. In general if you use an account for automating processing of emails, it may be good to make a separate account. Don't use your main account, but maybe have an extra gmail account to send your emails and process the bounces. Keep this separate to your other accounts.
1. Access by less secure applications
Gmail has an option to allow use of less secure applications.
You can enable that option and then just use your login to gmail for our email functionality.
Here are some sample script lines:
# set server without SSL here, as we enable TLS later
Set Variable [ $r ; Value: MBS("SendMail.SetSMTPServer"; $EmailID; "smtp.gmail.com" ) ]
# put in your login here
Set Variable [ $r ; Value: MBS("SendMail.SetSMTPUserName"; $EmailID; "email@example.com") ]
Set Variable [ $r ; Value: MBS("SendMail.SetSMTPPassword"; $EmailID; "MonkeyLikesToSendEmail") ]
And later in the script configure CURL:
# This turns TLS on and requires connection to be encrypted
Set Variable [ $r ; Value: MBS("CURL.SetOptionUseSSL"; $curl; 3) ]
# force TLS version 1.2 or newer
Set Variable [ $r ; Value: MBS("CURL.SetOptionSSLVersion"; $curl; 6) ]
# You may want to put in the root certificate related for google. We have the cacert-google.pem file on our blog, which contains the GlobalSign Root CA - R2 used by Google. By using only this certificate, you can avoid a man in the middle attack with a gmail.com certificate from another CA. Since the cacert expires someday, you may need to update that every few years.
Set Variable [ $r ; Value: MBS( "CURL.SetOptionCAINFO"; $curl; "/Users/cs/Documents/cacert-google.pem") ]
# now enable full verification:
Set Variable [ $r ; Value: MBS("CURL.SetOptionSSLVerifyHost"; $curl; 2) ]
Set Variable [ $r ; Value: MBS("CURL.SetOptionSSLVerifyPeer"; $curl; 1) ]
This seems to work as of April 2021. But better use the following method:
2. App Passwords
Now you should have a 2 factor authentication enabled for your account. And once you have it, always be cautious if you see a request coming to your device. Whenever you login, you will be asked for a token, which comes via sms or app. Eventually someday there may be a hacker, who got your right password and tries to login. Then please don't grant access and don't tell anyone the code you get. Not that someone is on the phone and tells you to read the code google sends to you to enter a lottery.
Once 2 factor authentication is enabled, the security settings website from Google shows App-Password section. There you can create a new one by selecting app and then device. I select Email in left and other use in right popup. Then it shows a text field and I just enter "FileMaker SMTP" and generate button. A new password like oagveoxdhvgzxnhr is created. We copy this password in our example and we can send emails. Once you send an email, the app password website shows the last usage time:
Screenshot is in German, so your texts may be in a different language. The script to send emails with look same as above, just with a different password.
You can also use oAuth to authenticate. Perform the login and get the bearer token, then pass it to CURL.SetOptionXOAuth2Bearer to do the login via CURL.
Since MBS FileMaker Plugin an do various login options, you may want to use CURL.SetOptionLoginOptions to set which one to use. We can do PLAIN, LOGIN, XOAUTH2, XOAUTH or GSSAPI.
Set Variable [ $r ; Value: MBS("CURL.SetOptionLoginOptions"; $curl; "AUTH=LOGIN") ]
Let us know if you have questions. Please use 2 Factor authentication and be careful on when you grant access.
If you don't get an answer within a reasonable time, e.g. 2 days, please contact us again using an alternative way. The idea with 2 days is that there may always be a holiday or time in an airplane while traveling, where we have no chance to look into your message.
Recently we had a client putting several support requests into a web form on our website which all were not delivered. Not sure what the outage was that let a few of many messages not come through. Other clients sent messages before, in-between and after and those worked. If the web form doesn't work, please come back via email. The client was of course very disappointed, but waited weeks before they contacted us via email about this. We could have helped quicker.
One thing not to forget is to put our domain monkeybreadsoftware.de on a white list for your spam filter or add our support email address to your contacts. This may prevent spam filters to block us. Regularly our emails get blocked and answers or even license key delivery fails. A way to overcome that is to provide a second email for us, so we can answer to that one. And finally typing your own email address into a form can be difficult. If we have you in the database or a previous email, we can correct a typo, but for new clients, we often have no way to answer them.
We also encourage users to post on the relevant forums. The community may help with questions about our plugins and often answer quicker than us. But even while we monitor a dozen forums for new posts regularly, we may still miss a message there. But feel free to refer to @Monkeybreadsoftware in your postings to call us specifically.
As always, please don't hesitate to contact us if you have questions.
- Removed empty lines for RemoteControl.GetWindowsList function.
- Added RemoteControl.GetWindowsListAsJSON function.
- Fixed Files.FileName and Files.FileNameWithoutExtension to work on macOS in case you pass Windows path.
- Added Time.Wait function.
- Updated SQLAPI to version 5.1.4b6 with new DuckDB support.
- Patched SQLAPI to parse timestamps with fraction better.
- Updated DynaPDF to version 184.108.40.206.
- Added DefaultNormalize, DefaultPDFA1, DefaultPDFA2, DefaultPDFA3 flags to DynaPDF.CheckConformance function.
- Added DynaPDF.ChangeFontEx function.
- Updated CURL library to version 7.76.1.
see community posting:
Deprecation and removal of support for CentOS Linux from Claris FileMaker Server
and the support article:
Deprecation and removal of support for CentOS Linux from Claris FileMaker Server
Claris FileMaker Server 19.2.1 is the last version on CentOS and will be supported till October 28, 2022. The next Claris FileMaker Server release will require Ubuntu. We expect this to be released within a few months.
Our MBS FileMaker Plugin already runs fine on Ubuntu servers with pre-release FileMaker Server software. If you’re interested in testing FileMaker Server on Ubuntu, send an email to firstname.lastname@example.org to be considered for the External Testing Site (ETS) program. Then you can install a server in a VM and install our current MBS Plugin.
If you have a Linux server, you may just spin up a new one later this year, install Ubuntu and a newer Claris FileMaker version. Then copy your database over and change DNS to point to the new server. Don't try to upgrade. Keep the old server as a backup, ready to take over if the setup of the new one fails. Once you migrated, you can then retire the old server (VM).
In case Claris decides to support Linux on ARM 64-bit in the future, we can would be happy to build our plugin for such a platform.
We collected them all and put them on a fish net in the hallway, so we can remember them.
Thanks everyone for your good wishes and heart-warming texts. The Xojo people for example printed a special postcard with several pictures with me and staff on it.
See you all soon on the next conferences!
It is already nine years since we applied for this and being a Claris Partner helps:
The listing on the website as well as recommendations to prospects by Claris employers helps to bring business to your company. You get a discount for license purchase so you can make some money selling your solution bundled with the FileMaker licenses and offer one stop shopping to your clients. You can list your products on the marketplace and use Solution Bundle Agreement if you like to sell a lot of bundles. Access to beta versions, extra training sessions, exclusive partner meetings and a few test licenses are included. And you can bundle tools like the data migration utility with your solutions.
If you like to become Claris Partner, you can read more on the Claris website.
- Added XL.CopyCellValue function.
- Added XL.Book.AddFontFromBook and XL.Book.AddFormatFromBook functions.
- Deprecated Window.ResizeContentView, Window.GetTitlebarAppearsTransparent and Window.SetTitlebarAppearsTransparent functions.
- Deprecated Window.ShowScrollbars function.
- Changed JSON.Parse to be accept leading zeros on numbers.
- Added flag 4 for FM.SQL.JSONRecords and FM.SQL.JSONRecord to return result as array of arrays instead of array of objects.
- Updated DynaPDF to version 220.127.116.11.
- Added a lot of tooltips for preferences dialog to explain further the options.
- Added checks to make sure GraphicsMagick resource limits are not too small to create a picture.
- Added code to use ICU libraries for SQLite. See SQL.InternalSQLiteLibrary.ICUEnabled, SQL.InternalSQLiteLibrary.ICULoaded, SQL.InternalSQLiteLibrary.ICUUsed and SQL.InternalSQLiteLibrary.SetICUEnabled functions.
- Added CURL.GetReferer, CURL.SetOptionDOHSSLVerifyHost, CURL.SetOptionDOHSSLVerifyPeer and CURL.SetOptionDOHSSLVerifyStatus functions.
- Added Events.DelegateSources function for iOS.
- Added FM.InsertOrUpdateRecord4 and FM.InsertOrUpdateRecord5.
- Added JS.InitModules function.
- Added optional ContentTypeMethod parameter for SendMail.AddAttachmentContainer, SendMail.AddAttachmentFile and SendMail.AddAttachmentText functions.
- Added strikethrough as attribute recognized by Text.TextToHTML function.
- Added SystemInfo.WindowsMachineInfo function.
- Added SystemInfo.WindowsSystemInfo function.
- Added trace logging for DynaPDF progress for import, convert, write and print.
- Added Trace.Path function.
- Added Trace.Pause and Trace.Resume functions.
- Added workaround for error 561 in Barcode.Generate. We lower ECC level now if text doesn't fit otherwise.
- Added XL.Sheet.SetRows function.
- Changed a couple of internal text functions to recognize that text with UTF-8 as a BOM for UTF-16 or UTF-32 and then reinterpret bytes to handle that. Useful for Shell.ReadOutputText, when a command line tool outputs UTF-16 instead of expected UTF-8.
- Changed CURL functions to not print password for SFTP transfer in debug log. Left overs from debug session in 11.1 betas.
- Changed our buttons for Data Viewer to hide if we can't evaluate as no file may be open.
- Changed plugin on Server to log StdOut and StdErr to log files for Windows and MacOS, as we did before on Linux.
- Changed SQL errors to add field name for SQL update statements for type mismatch errors.
- Changed XL.Initialize to accept empty path and pick the file name automatically per platform.
- Deprecated GMImage.SetCacheThreshold function.
- Enabled math and geopoly functions for internal SQLite library. see SQL.InternalSQLiteLibrary.Activate
- Fixed a problem in CURL with CURL.SetOptionSSLKeyBlob function not working correctly.
- Fixed a problem with cursor being repositioned by our syntax highlighting in set variable dialog.
- Fixed a problem with menu functions on Windows with alignment of text relative to picture next to it.
- Fixed an issue with Big Sur where Script Workspace didn't show title bar text.
- Fixed an issue with DynaPDF.Optimize complaining about no open output file.
- Fixed DynaPDF.GetFieldsAsJSON function to produce better JSON.
- Fixed DynaPDF.SetFieldName to allow to specify field to rename by name.
- Fixed JSON.Format to not return reference number for JSON reference numbers as input.
- Fixed preferences dialog to show the checkmark for Bracket Highlighting correctly.
- Fixed problem with StoreRegistration function on Linux server.
- Improved custom function test case execution to be a bit more flexible with spacing in parameter declaration.
- Improved ProgressDialog functions for Big Sur to show indeterminate progress bar again.
- Improved XML functions (on Windows) to better handle unknown encodings.
- Optimized UUID.FromNumber and UUID.ToNumber to be a bit quicker.
- Updated CURL library to version 7.76.0.
- Updated DynaPDF to version 18.104.22.168.
That was 2 months before I finished school (Gymnasium). While alternative civilian service (Zivildienst) and my time at the university, the company run well and I didn't have to depend on my parents or student loans. Actually the company got me so busy over the years, that I spend less time at university and since 2007 this is my full time job.
I had a few clients in that time interested in development in REALbasic, a very young development environment which started two years earlier. At that time I had a website with a few freeware utilities, so people could see that I can do development. Two years later the demand for plugins got so high, that end of 2001 I started publishing my own plugins. And since 2006 I got into FileMaker Plugin development.
Thanks everyone for supporting me over the years!
PS: If you need a new license this weekend, use coupon code Birthday for an 21% discount.