Intro to External Third-party Products

FxFactory has traditionally provided a complete platform for the development and distribution of native plug-ins, Motion Templates and 3D Text Styles, with the FxFactory application serving the dual purpose of development tool and deployment platform.

Beginning with version 5.0.6, FxFactory supports the distribution and purchase of third-party products that do not necessarily follow into one of those categories. These third-party products rely on FxFactory only for the purpose of checking licensing status, checking for and advertising new versions of the product, and initiating transactions through our online store.

Third-party products distributed with FxFactory enjoy the same benefits as pre-existing product types:

  • Products are advertised inside our app for easy installing, purchasing and upgrading.
  • Products can be purchased using our account-based system. Third-party products become part of the account’s purchase history, and they are automatically restored when the account signs in.
  • Product information can be changed dynamically. Changes made on our servers are pushed to end-users (pricing, download links, version info, requirements, etc.)
  • APIs provided to all developers via the FxFactory Framework make it incredibly easy to leverage our existing infrastructure for the installation and updating of your products, and handling tech support inquiries.

Basic Requirements to Distribute Products

FxFactory interfaces with an external product through its designated bundle. Although the product may include any combination of applications, plug-ins and assets, FxFactory will only look for the designated bundle when trying to determine if the product is currently available on the system.

Developers have often provided and designated a standard macOS application as the main bundle to get their product to be recognized by FxFactory. This fits well with PlugInKit’s requirement that any modern FxPlug plug-in be delivered through a host application. This advantage is lost when delivering products for other hosts. In those cases, any bundle installed as part of your product may be a suitable candidate to become the designated bundle.

All components of your product need to be deliverable through a standard macOS installer package. The installer package needs to be signed with official certificates issued by Apple to all registered developers. In other words, your software must pass the default macOS security policy to allow apps purchased from the App Store or delivered by identified developers to run on the system without being blocked by GateKeeper. Beginning with macOS Catalina, we also require that your software be notarized. Apple allows installer packages to be uploaded to the Notarization Service. Once submitted, the notarization service will examine the contents of your installer package and determine if its executable code can be notarized. Upon successful completion of this process, you can staple1) the installer package and submit it to us for distribution through FxFactory.

The free Timecode plug-in provides a good example of an external product. It ships as a simple “container app” that includes a PlugInKit component loaded by Final Cut pro. The Timecode application only checks that its basic requirements are met (version of Final Cut Pro, macOS, etc.) and offers basic instructions to the user when all those requirements are met.

Although you are welcome to provide a custom uninstaller for your product, recent versions of FxFactory no longer make this a necessity. Our software can locate and uninstall any components that are part of your product and remove them when the user asks to uninstall the product.

Next Steps

“Stapling” is the term Apple uses to refer to the act of attaching additional metadata to the installer package.