Skip to content

BestSolution-at/mac-codesigner

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

mac-codesigner project

Commandline utility to not going insane when codesigning and notarizing application for Apple Devices.

Bildschirmfoto 2021-04-22 um 18 02 47

This utility allows to:

  • Codesign your applications
  • Package as DMG
  • Package as PKG
  • Notarize the DMG and PKG
  • Staple DMG and PKG artifact

Synopsis

To print all available commandline options

./mac-codesigner-1.0.0-SNAPSHOT-runner -h

Example:

./mac-codesigner-1.0.0-SNAPSHOT-runner  --app-path=/path/to/my/Sample.app \
 --developer-certificate-key=1111111111111111 \
 --with-dmg \
 --with-pkg \
 --installer-certificate-key=1111111111 \
 --pkg-identifier=my.application.identifier.pkg \
 --entitlements=/path/to/entitlements.plist \
 --with-notarization \
 --notarization-primary-bundle-id=my.application.id \
 --notarization-username=john@doe.com \
 --notarization-password="johndoe-secret"
 --with-staple

Prequisits

  • Make sure you have xcode command line utilities installed
    sudo xcode-select --install
  • Create an "App-Specific password for altool" Apple Instructions - Use Safari - Firefox nor Chrome worked for me
    • Name it Developer-altool
    • Save the password created we you need to pass it to as the --notarization-password
  • Create 2 certificates at Apple Developer
    • Developer ID Application
    • Developer ID Installer
  • Add them to your "KeyChain Access" Application

Acknowledgement

There are other utilities which helped me implement this or provided useful information. One could argue that I suffer from the NIH-Syndrom but I found it interesting to get something done with Quarkus and GraalVM to create a native binary so for me it was more of a research project teaching about this tech-stack.

Similar utilities:

Sites / Articles I found useful while implementing this:

Building

The application can be packaged using:

./mvnw package

It produces the quarkus-run.jar file in the target/quarkus-app/ directory. Be aware that it’s not an über-jar as the dependencies are copied into the target/quarkus-app/lib/ directory.

Creating a native executable

You can create a native executable using:

./mvnw package -Pnative

Or, if you don't have GraalVM installed, you can run the native executable build in a container using:

./mvnw package -Pnative -Dquarkus.native.container-build=true

You can then execute your native executable with: ./target/mac-codesigner-1.0.0-SNAPSHOT-runner

If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.html.

About

Commandline Utility to Sign and Notarize OS-X Application

Resources

License

Stars

Watchers

Forks

Packages

No packages published