Skip to content

AdminInstallerMac

Delta edited this page Oct 18, 2023 · 1 revision

Building the Mac client

Use Xcode 11+ and OS 10.15+.

The main instructions are here: https://github.com/BOINC/boinc/blob/master/mac_build/HowToBuildBOINC_XCode.pdf

To notarize the installer and uninstaller

Make sure you've signed the relevant Apple docs: https://appstoreconnect.apple.com/ See https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on

Create an app-specific password at https://appleid.apple.com/account/manage.

$ xcrun altool --notarize-app -t osx -f {path to ...macOSX_x86_64.zip} --primary-bundle-id edu.berkeley.boinc.Installer -u {userID} -p {password}

where userId is your Apple ID and password is the app-specific password.

Note: I (Charlie) have only one development "team" under my Apple Developer account, but U.C. Berkeley may have several. If so, you may need to add an extra argument to the altool command line for notarization:

--asc-provider <ProviderShortname>

This is explained about 1/3 of the way down on this web page: <https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow?language=objc>

After a few minutes, check whether the notarize-app request succeeded:

$ xcrun altool --notarization-info {UUID from last step} -u {userID} -p {password}

If the notarize-app request succeeded, attach tickets to top level applications:

$ xcrun stapler staple {path to "...macOSX_x86_64/BOINC Installer.app"}
$ xcrun stapler staple {path to "...macOSX_x86_64/extras/Uninstall BOINC.app"}

Delete or rename the original ...macOSX_x86_64.zip}

Run this ditto command again to create a new ...macOSX_x86_64.zip containing the updated (notarized) BOINC Installer.app and Uninstall BOINC.app:

$ ditto -ck --sequesterRsrc --keepParent boinc_x.y.z_macOSX_x86_64 boinc_x.y.z_macOSX_x86_64.zip

replacing x.y.z with the current version number.

For more information:

$ xcrun altool --help
$ man stapler
Clone this wiki locally