Creating Developer ID Ready macOS Installer Packages

Creating Developer ID Ready macOS Installer Packages

28 February 2025 Stephan Petzl Leave a comment Xcode

If you’re transitioning from PackageMaker to using pkgbuild, productbuild, and pkgutil for creating macOS installer packages, this guide will walk you through the process. These tools are essential for ensuring your packages are Developer ID ready, especially with the introduction of Gatekeeper in macOS Mountain Lion.

Understanding the Tools

  • pkgbuild: Used to create component packages.
  • productbuild: Combines component packages into a product archive.
  • pkgutil: Used for package inspection and manipulation.

Step-by-Step Guide

1. Create Component Packages

Start by creating component packages for each application or component you wish to include in your installer. This involves using pkgbuild to generate a component property list and then the actual component package.


$ pkgbuild --analyze --root ./HelloWorld.app HelloWorldAppComponents.plist
$ pkgbuild --root ./HelloWorld.app --component-plist HelloWorldAppComponents.plist HelloWorld.pkg
    

2. Synthesize the Distribution

Once component packages are ready, use productbuild to synthesize a distribution definition file. This file allows you to customize the installer’s appearance and behavior.


$ productbuild --synthesize --package HelloWorld.pkg --package Helper.pkg Distribution.xml
    

3. Create the Product Archive

With the distribution definition in place, generate the final product archive. This combines all components into a single installer package.


$ productbuild --distribution ./Distribution.xml --package-path . ./Installer.pkg
    

4. Sign the Installer

To distribute the installer outside the Mac App Store, sign it with a Developer ID Installer certificate. This ensures it meets Apple’s security requirements.


$ productsign --sign "Developer ID Installer: Your Name" ./Installer.pkg ./SignedInstaller.pkg
    

Additional Considerations

When creating installer packages, pay attention to the structure of your Distribution.xml. You can customize the user experience by modifying titles, adding welcome screens, and more.

Enhancing Your Workflow with Repeato

If you’re developing macOS applications, you might also be involved in testing them. This is where Repeato can be an invaluable tool. As a no-code test automation solution, Repeato allows you to quickly create, run, and maintain automated tests for iOS, Android, and web apps. Its intuitive test recorder and fast execution times streamline the testing process, ensuring your applications are robust and ready for deployment. Moreover, its support for data-driven and keyword-driven testing, along with command-line script execution, makes it a versatile tool for developers looking to enhance their testing capabilities.

Like this article? there’s more where that came from!