Xojo - some pieces 4u

Xojo2DMG: CodeSign, DMG creation and Notarization (Post Build Script) 0.9.11

  1. Read the Description
  2. Download and try it yourself
  3. Do you like it? Does it help you? Has it saved you time and money?
    You're welcome - it's free... If you want to say thanks I appreciate a message or a small donation.

Are you distributing macOS Software outside of the Mac App Store? For your users best experience and confidence, your applications have to be Notarized by Apple.
A requirement for that is to CodeSign with Hardened Runtime. This might lead to a different Runtime behavior compared to a simple (unsigned) DebugRun within the Xojo IDE.
That's why I encourage everyone to CodeSign (with Hardened Runtime) each and every DebugRun on macOS, allowing you to develop and debug as close to a Release Build as possible.

This example shows how a Post Build Script can be used in a Xojo project in order to create a customized DiskImage, sign and notarize both .app and .dmg.
You can easily customize the DiskImage's appearance by setting a couple of Variables in the Post Build Script. Additionally, even Notarization can be performed fully scripted. That requires to set up an item in your Keychain - see Info in the Script provided.

1. Xojo running on macOS (obviously... you can't CodeSign on Windows)
2. CodeSigning, CodeSigning-Validation and Notarization requires Xcode to be installed
3. CodeSign of .dmg requires OS X 10.11.5 (or later)
4. Validation of the .dmg's CodeSignature requires macOS 10.12.0 (or later).
5. Notarization: Xcode 11, macOS 10.13.6

Example DMG
This DMG has been created with Xojo2DMG (built with macOS 10.15.1, Xcode 11.2.1 for CodeSigning/Notarization)

How to use with your Xojo-built .app?
1. Copy the folder 'scripts' to your project folder.
2. Create a PostBuild Script in your project and copy-and-paste the example PostBuild Script provided in Xojo2DMG.
3. Read the Comments in PostBuild Script, modify according to your needs (CodeSign Entitlements, Notarization, DMG look and feel).

back to overview

contact: Juerg Otter