brenwell / EvenBetterAuthorizationSample

Apple's EvenBetterAuthorization Sample Project
43 stars 12 forks source link

HelperTool + XPCService Project Setup

This is how to set everything up (I believe)

The original Apple Doc for this project can be found in README-APPLE

In this example the 3 identifiers for the 3 targets are

Name Identifier
Broker (Main app) com.blackwellapps.Broker
BrokerHelper (HelperTool) com.blackwellapps.BrokerHelper
XPCService com.blackwellapps.XPCService

1 Add Copy File build phase

Main App Add Copy File build phase to main app target: Destination: Wrapper Subpath: Contents/LibraryXPCServices, Codesign on Copy:Disable.

screen shot 2015-04-17 at 15 35 48

XPCService Add Copy File build phase to XPCService target: Destination: Wrapper Subpath: Contents/Library/LaunchServices, Codesign on Copy:Disable.

screen shot 2015-04-17 at 15 37 12


2 Modify Info.plists

XPCService-Info.plist (Tools owned after installation)

Add a new key value pair to the XPCService's Info.plist

Inside this new dictionary add a another key value pair:

screen shot 2015-04-17 at 15 55 47

HelperTool-Info.plist (Clients allowed to add and remove tool)

Add a new key value pair the HelperTools's Info.plist

As this is an array, we will add a new item to the 0 index:

screen shot 2015-04-17 at 15 38 38


3 Developer ID

Choose Developer ID:* in Code Signing Identity in build settings for each targets.

Main App

screen shot 2015-04-17 at 15 46 53

XPCService

screen shot 2015-04-17 at 15 46 45

HelperTool

screen shot 2015-04-17 at 15 46 59


4 Build

Build the app.


5 SMJobBlessUtil.py

Use SMJobBlessUtil.py cli script

Update Info.plist:

Format: $ ./SMJobBlessUtil.py setreq <XPCService path> <XPCService's Info.plist path> <Helper's Info.plist>

./SMJobBlessUtil.py setreq Build/Products/Debug/com.blackwellapps.XPCService.xpc XPCService/XPCService-Info.plist BrokerHelper/HelperTool-Info.plist HelperTool/HelperTool-Info.plist

Check Code Signing status:

Format: $ ./SMJobBlessUtil.py check <XPCservice path>

./SMJobBlessUtil.py check Build/Products/Debug/com.blackwellapps.XPCService.xpc

Troubleshooting


Credit

Got some of this from this gist https://gist.github.com/xiao99xiao/0509091001bdd6259249