Our Blog, Filemaker only, Xojo only, Archive (older)

Follow us on Twitter, Xing, LinkedIn or Facebook.

MBS Xojo Plugins, version 18.5pr7


New in this prerelease of the 18.4 plugins:
  • Added IEClearBrowserSessionMBS global method.
  • Changed how timeout is passed to LDAPMBS.Search function.
  • Updated SQLAPI library to version 4.2.4 beta 1.
  • Changed CDDataSetMBS.setDataSymbol, CDThreeDScatterGroupMBS.setDataSymbol and CDPolarLayerMBS.setDataSymbol to retain the CDDrawAreaMBS object to keep it alive.
  • Changed DecompressZLibMBS to auto detect the size of output data.
  • Bugfixes in ChartDirector 6.3:
    • In contour and surface charts, the color axis is not drawn correctly if smooth coloring is and the number of ticks on the color axis are significantly less than the number color stops. For example, there are only 2 ticks, the color axis will draw itself by using a smooth gradient to vary colors between the two ticks, ignoring the other color stops in between.
    • In contour and surface charts, if the color axis is of logarithmic scale, and smooth coloring is used, the colors are still interpolated using linear scale. As a result, the coloring may look good.
    • For the color axis, if auto-scaling is used, the setColorScale always results in linear scale, even if setLogScale has already been called for the color axis.
    • Vector layer crashes if setArrowHead(0) is called.
    • In a vector layer, the setLineWidth has no effect if setArrowStem is used.
    • In a vector layer, the stem is visible even if the line width is 0.
    • In a vector chart, the legend icon disappear if the head size is 0 (that is, the vector chart shows stems).
    • In a vector chart, the image map is not natural if the stem width is thicker than the arrow head.
    • FinanceChart can produce too many x-axis labels in some cases.
    • ChartDirector can crash if the SurfaceChart has no data
    • DrawArea.setOutputOptions has no effect for SVG.
    • ArrowShape does not work in CDML <*IMG*>.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 8.5pr7


New in this prerelease of version 8.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Version number reported it 8.5.04, sorry.

Xojo Script Warning Enumeration


One of our apps uses XojoScript to compile and run scripts on the fly. We log warnings and errors. There is a list of all warnings in Xojo documentation. Today I had to figure out which warning is a specific number, so I started building a table. Here it is:
XojoScript EnumerationDescriptionValue
ConversionPrecisionConverting from %OriginalType to %NewType causes a possible loss of precision, which can lead to unexpected results.5
ConversionSignConverting from %OriginalType to %NewType causes the sign information to be lost, which can lead to unexpected results.6
CustomA custom warning displayed with Pragma Warning.8
Deprecated%Name is deprecated.1
DeprecatedWithReplacement%Name is deprecated.  You should use %Replacement instead.2
FloatingPointComparisonPerforming a %Operator comparison on floating-point values can yield unexpected results due to their inexact binary representation.7
NameLookupChangeBefore 2014r3, this would have referred to the %OldPath but now it refers to the %NewPath.14
OldStyleConstructorOld-style constructor methods are no longer supported.  You should use "Constructor" instead.3
ShadowedConstantThis constant shadows one already defined by %Superclass.13
ShadowedPropertyThis property shadows one already defined by %Superclass.12
UnknownPragmaWarningUnknown pragma name.4
UnusedEventParameter%Name is an unused event parameter.11
UnusedLocal%Name is an unused local variable.9
UnusedMethodParameter%Name is an unused method parameter.10

Welcome Stefanie


Monkeybread Software proudly presents our new junior software developer Stefanie Juchmes. Last month Stefanie finished here Bachelor of Science in Informatics. And she accepted our employment contract, so 1st January she will start at Monkeybread Software.

We are looking forward to a lot of new content from here including tutorials, examples, videos and presentations related to our plugins. And as she knows some C++, we may even involve here in some plugin programming. But first, I've given her my library of books about FileMaker and Xojo to read.

You may have seen Stefanie at a few conferences this year and we may bring here to a few more conferences in 2019 so she can meet our clients.

Bugs fixed in ChartDirector 6.3


With MBS Xojo Plugins 18.5 we include the new ChartDirector 6.3 version for all platforms. The main new feature are embedded resources:

ChartDirector can use images for the chart background, pattern colors, scatter symbols, CDML icons, … In previous versions of ChartDirector, these images have to be provided using file system paths. ChartDirector 6.3 allows these images to be embedded in executables as resources, and uses "resource paths" to access them. This eliminates the need to redistribute image files with the executable. Apart from images, font files can also be embedded as resources.

Beside the new resources functions, it also includes the following bug fixes:
  • In contour and surface charts, the color axis is not drawn correctly if smooth coloring is and the number of ticks on the color axis are significantly less than the number color stops. For example, there are only 2 ticks, the color axis will draw itself by using a smooth gradient to vary colors between the two ticks, ignoring the other color stops in between.
  • In contour and surface charts, if the color axis is of logarithmic scale, and smooth coloring is used, the colors are still interpolated using linear scale. As a result, the coloring may look good.
  • For the color axis, if auto-scaling is used, the setColorScale always results in linear scale, even if setLogScale has already been called for the color axis.
  • Vector layer crashes if setArrowHead(0) is called.
  • In a vector layer, the setLineWidth has no effect if setArrowStem is used.
  • In a vector layer, the stem is visible even if the line width is 0.
  • In a vector chart, the legend icon disappear if the head size is 0 (that is, the vector chart shows stems).
  • In a vector chart, the image map is not natural if the stem width is thicker than the arrow head.
  • FinanceChart can produce too many x-axis labels in some cases.
  • ChartDirector can crash if the SurfaceChart has no data
  • DrawArea.setOutputOptions has no effect for SVG.
  • ArrowShape does not work in CDML <*IMG*>.
The new version can be tested now with 18.5pr6 or newer.

MBS Plugin @ FileMaker Conference in UK


ThumbnailWe got a new video for you:

MBS Plugin @ FileMaker Conference 2018
Presentation from FileMaker DevCon UK.

An overview of what changed in our MBS FileMaker Plugin since the last conferences. Optionally watch the DevCon 2018 video first.

File dialogs with sheets for FileMaker


A client asked for using file dialogs as sheets, a Mac feature to show a dialog attached to a parent window. Once the user made a choice, we trigger a script of your choice and allow you to check the list of files selected.



Before showing the sheet, please call FileDialog.SetSheetScriptTrigger to set script trigger and use FileDialog.SetUseSheet function to enable sheets. Be aware that the script must be different. The first script shows the sheet and exits. Later another script runs and processes results as the process is asynchronously.

New plugin with updated example database is comming soon.

Correct Image Orientation in FileMaker


Sometimes you may see pictures in FileMaker with wrong orientation. But in your image editing application, the orienation is correct. So you may wonder what is going on?
 
Image files like JPEG, PNG and TIFF have all metadata which describes the orienation of the image in 8 different ways. So the pixels in the picture come in the orientation they are read from the sensor chip. But you may hold your camera rotated, so the pixels flow into the file and the camera marks the image to be taken rotated and writes that in metadata. 

Sadly not all applications handle this and show the image in the right orienation. For all 8 ways, we change the orientation to always be in mode 1 and save the image with the new orientation, so all applications will show the image correctly: 
 

# load image

Set Variable [ $Image ; Value: MBS( "GMImage.NewFromContainer"; Correct Image Orientation::Input ) ] 

If [ MBS("IsError") = 0 ] 

Set Variable [ $orientation ; Value: MBS( "GMImage.GetOrientation"; $Image ) ] 

If [ $orientation > 0 ] 

If [ $orientation = 1 ] 

# TopLeftOrientation = 1, (Line direction: Left to right, Frame Direction: Top to bottom) 

# nothing to do

Else If [ $orientation = 2 ] 

# TopRightOrientation = 2, (Line direction: Right to left, Frame Direction: Top to bottom) 

# Flip horizontally

Set Variable [ $r ; Value: MBS( "GMImage.Flop"; $Image ) ] 

Else If [ $orientation = 3 ] 

# BottomRightOrientation = 3, (Line direction: Right to left, Frame Direction: Bottom to top) 

# Rotate 180°

Set Variable [ $r ; Value: MBS( "GMImage.Rotate"; $Image; 180 ) ] 

Else If [ $orientation = 4 ] 

# BottomLeftOrientation = 4, (Line direction: Left to right, Frame Direction: Bottom to top) 

# Flip vertically

Set Variable [ $r ; Value: MBS( "GMImage.Flip"; $Image ) ] 

Else If [ $orientation = 5 ] 

# LeftTopOrientation = 5, (Line direction: Top to bottom, Frame Direction: Left to right) 

# Rotate 90° and flip horizontally

Set Variable [ $r ; Value: MBS( "GMImage.Rotate"; $Image; 90 ) ] 

Set Variable [ $r ; Value: MBS( "GMImage.Flop"; $Image ) ] 

Else If [ $orientation = 6 ] 

# RightTopOrientation = 6, (Line direction: Top to bottom, Frame Direction: Right to left) 

# Rotate 90° 

Set Variable [ $r ; Value: MBS( "GMImage.Rotate"; $Image; 90 ) ] 

Else If [ $orientation = 7 ] 

# RightBottomOrientation = 7, (Line direction: Bottom to top, Frame Direction: Right to left) 

# Rotate -90° and flip horizontally

Set Variable [ $r ; Value: MBS( "GMImage.Rotate"; $Image; -90 ) ] 

Set Variable [ $r ; Value: MBS( "GMImage.Flop"; $Image ) ] 

Else If [ $orientation = 8 ] 

# LeftBottomOrientation = 8 (Line direction: Bottom to top, Frame Direction: Left to right) 

# Rotate -90° 

Set Variable [ $r ; Value: MBS( "GMImage.Rotate"; $Image; -90 ) ] 

End If

Set Variable [ $r ; Value: MBS( "GMImage.SetOrientation"; $Image; 1 ) ] 

Set Variable [ $r ; Value: MBS( "GMImage.SetEXIFOrientation"; $Image; 1 ) ] 

End If

#  Write back to new field

Set Field [ Correct Image Orientation::Output ; MBS( "GMImage.WriteToJPEGContainer"; $Image; GetAsText(Correct Image Orientation::Input)) ] 

# free memory

Set Variable [ $r ; Value: MBS( "GMImage.Destroy"; $Image) ] 

End If

 
The example database will be included in future plugin releases.

MBS FileMaker Plugin, version 8.5pr6


New in this prerelease of version 8.5 of the MBS FileMaker Plugin:
  • Fixed edge case for filename in CURL.GetResultAsContainer function.
  • Improve DynaPDF.Initialize to better reject invalid license keys.
  • Updated to Xcode 10.1.
  • Added a lot of GameKit functions to work with Game Center on Mac and iOS.
  • Changed SendMail functions to no longer turn TO to CC if you have several TOs.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Version number reported it 8.5.04, sorry.

MBS Xojo Plugins, version 18.5pr6


New in this prerelease of the 18.4 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Fix for missing accessibilityIsAttributeSettable function


For one of our Xojo app, we got crash reports for missing accessibilityIsAttributeSettable function in various classes:

-[NSMenuItem accessibilityIsAttributeSettable:]: unrecognized selector sent to instance 0x600001ffea00
Please report to the application developer.

0 CoreFoundation 0x00007fff3cc54fa5 __exceptionPreprocess + 256
1 libobjc.A.dylib 0x00007fff68d4befb objc_exception_throw + 48
2 CoreFoundation 0x00007fff3ccd2c8d -[NSObject(NSObject) __retain_OA] + 0
3 CoreFoundation 0x00007fff3cbf65de ___forwarding___ + 1468
4 CoreFoundation 0x00007fff3cbf5f98 _CF_forwarding_prep_0 + 120
5 AppKit 0x00007fff3a7aea33 NSAccessibilityPerformEntryPointBOOL.llvm.11937614488442194757 + 16
6 AppKit 0x00007fff3a545d63 NSAccessibilityEntryPointIsAttributeSettable + 86
7 AppKit 0x00007fff3a61a460 -[NSCarbonMenuImpl _carbonIsAccessibleAttributeSettableEvent:handlerCallRef:axElement:] + 185
8 AppKit 0x00007fff3a409778 NSSLMMenuEventHandler + 1009
9 HIToolbox 0x00007fff3be26b79 _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 1502

The name of the class and functions related in the stack trace changes, but the problem is always the same. Same function in Apples framework wants to call deprecated accessibilityIsAttributeSettable function, but that one is no longer implemented in Apple's own classes. It's a code path which doesn't happen for all users, so only a few get the crash and maybe this is related to some accessibility setting.

Anyway, via a new InstallNSAccessibilityPatchMBS function in our plugin, we'll patch it and install a accessibilityIsAttributeSettable function to just return false every time. If the class has such a method, the class method is preferred, but we install a fallback to avoid the crash.

So when you see such a crash, you can soon try our MBS Xojo Plugins in version 18.5 and call InstallNSAccessibilityPatchMBS method on start of the application.

Write formatted text with DynaPDF


As you may know you can use MBS Plugins with Xojo and FileMaker to write PDFs with DynaPDF functions. The WriteFText functions accept formatting commands in the text, so you can create various formats. We got a few examples in the following Xojo source code:
  • Change text rise and size to get footnote references
  • Change font to get e.g. a bold font
  • Change color
  • Create lists with hierarchies, numbered entries or multiline entries.
Check the sample code here:

// set font call pdf.SetFont "Helvetica", 0, 12.0, true, pdf.kcpUnicode dim y as Double = 50 // change font size and raise for foot note references text = "\FS[12]Hello World\FS[6]\TR[6]123\TR[0]\FS[12] Just a test." call pdf.WriteFTextEx(50, y, 200, -1, pdf.ktaLeft, text) y = y + 20 // change font to get bold text = "\FT[Helvetica]Hello \FT[Helvetica-Bold]World \FT[Helvetica]everyone." call pdf.WriteFTextEx(50, y, 200, -1, pdf.ktaLeft, text) y = y + 20 // change color in the text text = _   "\FC[" + str(DynaPDFMBS.RGB(255, 0, 0)) + "]Red "+_   "\FC[" + str(DynaPDFMBS.RGB(0, 255, 0)) + "]Green "+_   "\FC[" + str(DynaPDFMBS.RGB(0, 0, 255)) + "]Blue "+_   "\FC[" + str(DynaPDFMBS.RGB(0, 0, 0)) + "]Black " call pdf.WriteFTextEx(50, y, 200, -1, pdf.ktaLeft, text) y = y + 20 // make list text = _   "\LI[0]First"+EndOfLine+"with two lines\EL#"+_   "\LI[0]Second\EL# "+_   "\LI[0]Third\EL#" call pdf.WriteFTextEx(50, y, 200, -1, pdf.ktaLeft, text)
The same formatting texts can be used in FileMaker, Xojo and any other development tool supported by DynaPDF like C++, VB, PHP and Delphi.

Use root certificates included with FileMaker


If you like to have SSL with security, you need to verify the certificate. FileMaker comes with a root certificate file, so we can refer CURL to that file and enjoy the checks against the given list of root certificates:

 

Set Variable [ $curl ; Value: MBS("CURL.New") ] 

If [ MBS("IsIOS") ] 

# look for path to certificate file

Set Variable [ $path ; Value: Substitute(MBS("Folders.UserDocuments"); "/Documents"; "/Library/Application Support/FileMaker/iOS/1.0/root.pem") ] 

If [ MBS("Files.FileExists"; $path) ] 

# use in CURL

Set Variable [ $r ; Value: MBS( "CURL.SetOptionCAINFO"; $curl; $path) ] 

Else

Show Custom Dialog [ "File not found." ; $path ] 

End If

Else If [ MBS("IsMacOSX") ] 

# look for path to certificate file

Set Variable [ $path ; Value: Substitute(MBS("Folders.UserDocuments"); "/Documents"; "/Library/Application Support/FileMaker/Shared/17.0/root.pem") ] 

If [ MBS("Files.FileExists"; $path) ] 

# use in CURL

Set Variable [ $r ; Value: MBS( "CURL.SetOptionCAINFO"; $curl; $path) ] 

Else

Show Custom Dialog [ "File not found." ; $path ] 

End If

Else If [ MBS("IsWindows") ] 

# look for path to certificate file

Set Variable [ $path ; Value: Substitute(MBS("Folders.UserDocuments"); "\Documents"; "\AppData\Local\FileMaker\FileMaker Pro Advanced\17.0\root.pem") ] 

If [ MBS("Files.FileExists"; $path) ] 

# use in CURL

Set Variable [ $r ; Value: MBS( "CURL.SetOptionCAINFO"; $curl; $path) ] 

Else

Show Custom Dialog [ "File not found." ; $path ] 

End If

Else If [ MBS("IsLinux") ] 

# look for path to certificate file

Set Variable [ $path ; Value: "/FileMakerData/Extensions/OpenSSL/root.pem" ] 

# use in CURL

Set Variable [ $r ; Value: MBS( "CURL.SetOptionCAINFO"; $curl; $path) ] 

End If

# Start new session

Set Variable [ $URL ; Value: "https://www.filemaker.com" ] 

# Set URL to load (HTTP, HTTPS, FTP, FTPS, SFTP, etc.)

Set Variable [ $result ; Value: MBS("CURL.SetOptionURL"; $curl; $URL) ] 

// Set Variable [ $result ; Value: MBS( "CURL.SetOptionCertInfo"; $curl; 1 ) ] 

# Do transfer now:

Set Field [ PlaceHolder::result ; MBS("CURL.Perform"; $curl) ] 

# Check result

Set Field [ PlaceHolder::Container ; MBS("CURL.GetResultAsText"; $curl; "UTF8") ] 

Set Field [ PlaceHolder::result ; MBS("CURL.GetDebugAsText"; $curl) ] 

// Set Field [ PlaceHolder::result ; MBS("CURL.GetCertinfo"; $curl; "UTF8") ] 

# Cleanup

Set Variable [ $result ; Value: MBS("CURL.Cleanup"; $curl) ] 

This script works fine with MacOS, Windows, Linux and iOS. If needed you can request certificate information via CURL.SetOptionCertInfo and see all the details from certificates in the text given by CURL.GetCertinfo function.


ChartDirector 6.3 Released


We got the announcement of an update to ChartDirector:

Advanced Software Engineering is pleased to announce the immediate availability of ChartDirector 6.3.

ChartDirector 6.3 adds support for embedded resources in executables. As embedded resources are mostly used in desktop GUI applications (as opposed to web or command line scripts), so ChartDirector 6.3 is only released for C++ and .NET (C#, VB).

ChartDirector can use images for the chart background, pattern colors, scatter symbols, CDML icons, … In previous versions of ChartDirector, these images have to be provided using file system paths. ChartDirector 6.3 allows these images to be embedded in executables as resources, and uses "resource paths" to access them. This eliminates the need to redistribute image files with the executable.

Apart from images, font files can also be embedded as resources.

More details can be found in the ChartDirector 6.3 Release Notes.

We'll update our MBS Xojo ChartDirector Plugin soon, when we get the libraries and header files.

Root certificates coming with FileMaker Go


We got a list of the root certificates coming with FileMaker Go:
  • AddTrust External CA Root
  • COMODO Certification Authority
  • COMODO RSA Certification Authority
  • Entrust Root Certification Authority
  • Entrust Root Certification Authority - EC1
  • Entrust Root Certification Authority - G2
  • Entrust Root Certification Authority - G3
  • Entrust.net Certification Authority (2048)
  • FileMaker Root Authority
  • GeoTrust Global CA
  • GeoTrust Global CA 2
  • GeoTrust Primary Certification Authority
  • GeoTrust Primary Certification Authority - G2
  • GeoTrust Primary Certification Authority - G3
  • GeoTrust Primary Certification Authority - G4
  • GeoTrust Universal CA
  • GeoTrust Universal CA 2
  • Go Daddy Root Certificate Authority - G2
  • Go Daddy Root Certificate Authority - G3
  • Go Daddy Root Certificate Authority - G4
  • Symantec Class 1 Public Primary Certification Authority - G6
  • Symantec Class 2 Public Primary Certification Authority - G6
  • Symantec Class 3 Public Primary Certification Authority - G7
  • thawte Primary Root CA
  • thawte Primary Root CA - G2
  • thawte Primary Root CA - G3
  • thawte Primary Root CA - G4
  • Thawte Timestamping CA
  • The Go Daddy Group, Inc.
  • VeriSign Class 1 Public Primary Certification Authority - G3
  • VeriSign Class 2 Public Primary Certification Authority - G3
  • VeriSign Class 3 Public Primary Certification Authority - G3
  • VeriSign Class 3 Public Primary Certification Authority - G4
  • VeriSign Class 3 Public Primary Certification Authority - G5
  • VeriSign Class 4 Public Primary Certification Authority - G3
  • VeriSign Universal Root Certification Authority
  • VeriSign, Inc.
As far as we know you can only connect to servers which use a certificate based on one those root certificates. Depending on the version of FileMaker Go/Pro, the list for you may be different.

IconFamilyMBS class deprecated


In our Xojo plugins we have the IconMBS and IconFamilyMBS classes. They use Apples frameworks with icon functions, but those are not well maintained the last few MacOS releases and we see more and more issues. Probably as a lot of functions are based on the deprecated QuickDraw framework. So we deprecate IconFamilyMBS class for the next prerelease plugin.

So please change code and move to newer functions. For example instead of IconFamilyMBS class to get an icon in various sizes, you can use NSWorkSpaceMBS class methods. IconForFile functions returns the icon for a file and than you can use NSImageMBS class to scale down. With the following code you can quite easily get a 2x picture for a FolderItem:

const SizeWanted = 256
dim file as FolderItem = SpecialFolder.Desktop.Child("test.rtf")

dim n as NSImageMBS = NSWorkspaceMBS.iconForFile(file)
// set size we want
n.setSize SizeWanted*2, SizeWanted*2

// make picture
dim p as Picture = n.CopyPictureWithMask

// make 2x picture here:
dim q as new Picture(SizeWanted, SizeWanted, array(p))

If you need an icon for a file type, you can use the IconForFileType function. If you need to add an icon to a file, please use SetIcon method in NSWorkSpaceMBS class.

The folderItem.IconMBS function is still working well and was upgraded in MBS Xojo Plugins in version 14.2 to use NSWorkspace methods to get the icon.

By the way, NSWorkspace's icon functions internally use the same functions as our IconMBS class, which is not deprecated!

Xojo Stammtisch in Zürich, Schweiz


On my next visit to Zurich, I'd love to make another Xojo developer meeting:

Wer hat Interesse an einem Xojo Entwicklertreffen am 21. November in Zürich?



Einfach gemütlich zusammen sitzen und über Xojo schnacken.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.

Bei Interesse bitte anmelden: Anmeldung

Wer Interesse hat an einem Termin mit mir für Softwareentwicklung, Schulungen, Entwicklungshilfe, Plugin Empfehlungen, assistierte Fehlersuche, Code-Review und IT-Beratung, der darf sich gerne melden für eine baldige Terminfindung.

MBS FileMaker Plugin, version 8.5pr5


New in this prerelease of version 8.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Version number reported it 8.5.04, sorry.

MBS Xojo Plugins, version 18.5pr5


New in this prerelease of the 18.4 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Notarize apps for MacOS


While FileMaker runtimes are deprecated, they are still a great tool to give away a test copy of your fabulous solution. Apple now recommends you to notarize your app. This is a step further than normal code signing as the app is actually uploaded to a test system which scans it for malware. Looks like for next year this may be required for apps to launch without a warning dialog.

The following steps work for us with the test.app on Desktop. File paths, names, bundle and Apple IDs will be different for you:
  1. Install Xcode and run it once to get the command line tools installed.
  2. Build a runtime app in FileMaker Pro Advanced.
  3. Adapt our SignScript FM 17 (included with MBS Plugin download).
    Please change name of certificate, the path and the name of the app. For codesign lines, please add --options runtime as command line parameters after the -f command line parameter. Run the script and watch for the last lines saying accepted and Developer ID.
  4. Next build an disk image. With a GUI app or simply via terminal with right path:
    /usr/bin/hdiutil create -imagekey zlib-level=9 -srcfolder /Users/cs/Desktop/Test -fs HFS+ -volname Test /Users/cs/Desktop/Test.dmg
  5. Sign the disk image. e.g. via Terminal:
    codesign -f -vvvv -s "Developer ID Application: Christian Schmitz Software GmbH" /Users/cs/Desktop/Test.dmg
  6. Notarize the app. Run xcrun in terminal. The bundle ID is found in the info.plist file of the runtime app inside the bundle. Please pass your own Apple ID here for your Apple developer account:
    xcrun altool --notarize-app -f /Users/cs/Desktop/Test.dmg --primary-bundle-id com.filemaker.client.runtime12.test -u Developer@monkeybreadsoftware.de -p @keychain:"Application Loader: Developer@monkeybreadsoftware.de"
    This may take a while and return a RequestUUID.
  7. Wait for an email from Apple or periodically check the status of the notarization until it has completed. Please put in again your Apple ID and the request UUID from above.
    xcrun altool --notarization-info 193b7ad2-36e1-45d5-880c-c297250f77b2 -u Developer@monkeybreadsoftware.de -p @keychain:"Application Loader: Developer@monkeybreadsoftware.de"
    This may take a while till this tool returns success and you can run it several times. Otherwise you get an email when the app is done. Once done you get Package Approved in the call above.
  8. Add the staple ticket to the dmg:
    xcrun stapler staple -v /Users/cs/Desktop/Test.dmg
    This will add the notarization to the disk image.
  9. Now you can test the final app in the disk image:
    spctl -a -v /Applications/test.app
    This shows on 10.13.6 only "source=Developer ID", but on 10.14 shows "source=Notarized Developer ID", so it worked!
If you followed all steps, got the paths right and the Apple ID, bundle ID and file names, your app should show the notarized state and run without a warning dialog on MacOS 10.14 Mojave.

MBS is available for paid support to help you getting your app notarized if needed.

Older blog entries:

2018-11-02 xDev 16.6 Issue
2018-10-31 Workshop zum MBS FileMaker Plugin @ Denkform
2018-10-30 MBS Plugin @ FileMaker Konferenz 2018
2018-10-30 FileMaker mit Linux und SSH
2018-10-29 FMnext Experience II in Meilen, Schweiz und MBS Plugin Schulung
2018-10-28 MBS FileMaker Plugin, version 8.5pr4
2018-10-28 MBS Xojo Plugins, version 18.5pr4
2018-10-28 Improved preferences dialog
2018-10-28 FileMaker Stammtisch Rheinland
2018-10-27 ChartDirector Plugin with HiDPI
2018-10-24 Merge field values into text
2018-10-24 Xojo 2018 Release 3
2018-10-24 Strange looking PDF in Microsoft Edge and Apple Preview
2018-10-24 MBS FileMaker Plugin, version 8.5pr3
2018-10-24 MBS Xojo Plugins, version 18.5pr3
2018-10-23 Using found set in SQL queries
2018-10-23 SSH tunnel in FileMaker
2018-10-22 New functions for smart card reading
2018-10-22 Greetings from Gothenburg
2018-10-21 MBS Sale for Conferences

Archives

Nov 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008
XML: RSS Feed XML: Atom Feed