tree 1.8.0 for macOS
This project builds a signed macOS universal installer package for
a recursive directory listing command. It contains the source distribution for
Building was last tested on an Apple Silicon Mac with macOS Big Sur 11.6 and Xcode 13. Installation was last tested on both Intel and Apple Silicon Macs running Big Sur.
Makefile in the project root directory builds the installer package.
The following makefile variables can be set from the command line:
APP_SIGNING_ID: The name of the Apple Developer ID Application certificate used to sign the
treeexecutable. The certificate must be installed on the build machine's Keychain. Defaults to "Developer ID Application: Donald McCaughey" if not specified.
INSTALLER_SIGNING_ID: The name of the Apple Developer ID Installer certificate used to sign the installer. The certificate must be installed on the build machine's Keychain. Defaults to "Developer ID Installer: Donald McCaughey" if not specified.
NOTARIZATION_KEYCHAIN_PROFILE: The name of the notarization credentials stored on the build machine's Keychain. Use the
notarytool store-credentialscommand to create this profile. Defaults to "Donald McCaughey" if not specified.
TMP: The name of the directory for intermediate files. Defaults to "
./tmp" if not specified.
To build and sign the executable and installer, run:
$ make [APP_SIGNING_ID="<cert name 1>"] [INSTALLER_SIGNING_ID="<cert name 2>"] [TMP="<build dir>"]
Intermediate files are generated in the temp directory; the signed installer
package is written into the project root with the name
To notarize the signed installer package, run:
$ make notarize [NOTARIZATION_KEYCHAIN_PROFILE="<profile name>"] [TMP="<build dir>"]
This will submit the installer package for notarization and staple it on
success. Check the file
$(TMP)/notarization-log.json for detailed
information if notarization fails. The signed installer is stapled in place
if notarization succeeds. Use the command:
$ xcrun stapler validate --verbose tree-1.8.0.pkg
to check the notarization state of the installer package.
To remove all generated files (including the signed installer), run:
$ make clean
Signing and Notarizing Credentials
Three sets of credentials are needed to sign and notarize this package:
- A "Developer ID Application" certificate (for signing the
- A "Developer ID Installer" certificate (for signing the installer package)
- An App Store Connect API key (for notarizing the signed installer)
The App Store Connect API key is obtained from the App Store Connect site.
After the key is created, get the Issuer ID (a UUID), the Key ID
(an alphanumeric string) and download the API key, which comes as a file named
AuthKey_<key id>.p8. To add the API key to the build machine's Keychain,
store-credentials subcommand of
$ xcrun notarytool store-credentials "<keychain profile name>" \ --key ~/.keys/AuthKey_<key id>.p8 \ --key-id <key id> \ --issuer <issuer id> \ --sync
--sync option adds the credentials to the user's iCloud Keychain.
The installer and related scripts are copyright (c) 2021 Don McCaughey.
tree and the installer are distributed under the GNU General Public License,
version 2. See the LICENSE file for details.