Initially, I tried to call the necessary tools directly to create the pkg, and used jlink to create temporary app images, but this proved unnecessary. Instead, I used jpackage, which was able to assemble everything I needed in its latest release. I encourage you to use my findings as a starting point for delivering your application to a global audience.
Here's a quick outline of my approach:
- I used JavaFX as the GUI technology and Scala as the implementation language.
- Maven was used as the build tool.
- JPackage was used to create a pkg suitable for deployment to the App Store
- Source code is available at github
To dive a little deeper into the deployment using JPackage:
- I circumvented the modular JavaFX approach by using my own Launcher class.
- I put everything application-related in a shaded jar.
- I created a libs directory for everything else.
- I created the necessary Entitlements and plist files for JPackage.
- To keep things clean, I used an 'options' file for JPackage.
To verify my package, I used Apple's Transporter App, which gave me a quick response on any missing files in my package.
One key technique to get a valid plist file was to create a stub project in XCode to investigate the syntax required for a successful deployment.
In conclusion, deploying your application to the App Store using JPackage is a viable option. With careful attention to the steps outlined above, you too can achieve success in reaching a global audience.