Hello James, If I remember correctly, you need special keys in your tool and app info plist files with codesigning designated requirements. Did you verify that these designated requirements verify correctly against the actual tool and app you are using while testing?
Regards, Thomas > On 27 Jan 2017, at 20:31, James Foster <james.fos...@gemtalksystems.com> > wrote: > > According to Damien Sorresso, BSD Engineering, Apple Inc. (see > https://lists.macosforge.org/pipermail/launchd-dev/2010-October/000834.html > <https://lists.macosforge.org/pipermail/launchd-dev/2010-October/000834.html>), > "ServiceManagement will check the CFBundleVersion of the tool and, if it's > the same ..., will not overwrite it." > > I've updated my code to show the CFBundleVersion of the tool both before and > after a "successful" invocation of SMJobBless(). Is there anything I can do > to get this to work? > > 2017-01-27 09:10... existing: <string>84</string> > 2017-01-27 09:10... replacement: <string>E6</string> > 2017-01-27 09:10... SMJobBless(com.GemTalk.GemStone.Helper,...) returned > true... > 2017-01-27 09:10... now found: <string>84</string> > >> On Jan 25, 2017, at 4:48 PM, James Foster <james.fos...@gemtalksystems.com >> <mailto:james.fos...@gemtalksystems.com>> wrote: >> >> I am attempting to replace a helper tool. Most of the time if I increment >> the version (of my application and of the helper tool) then the new tool >> will be installed. Sometimes it won't be installed and I have to delete the >> old one manually. The problem seems to occur about every dozen versions or >> so, and once it happens the replacement will not occur even if I change the >> version numbers again. >> >> https://developer.apple.com/reference/servicemanagement/1431078-smjobbless?language=objc >> >> <https://developer.apple.com/reference/servicemanagement/1431078-smjobbless?language=objc> >> states "If the job is already installed, success is returned.” >> >> How does SMJobBless() determine that the job is already installed? What do I >> need to do, beyond creating an entirely new job name, to make it look >> different enough to replace? >> >> Following is my code and console output (from macOS 10.12.2). >> >> James Foster >> >> >> CODE: >> >> - (void)installHelperTool; >> { >> OSStatus status = AuthorizationCreate(...); >> // handle errors >> >> NSLog(@"existing: %@", [self system:@"/usr/bin/otool -P " >> "/Library/PrivilegedHelperTools/com.GemTalk.GemStone.Helper | " >> "grep -A 1 VersionString | tail -1"]); >> NSLog(@"replacement: %@", [self system:@"/usr/bin/otool -P " >> >> "GemStone.app/Contents/Library/LaunchServices/com.GemTalk.GemStone.Helper | " >> "grep -A 1 VersionString | tail -1"]); >> CFErrorRef cfError = nil; >> if (SMJobBless(kSMDomainSystemLaunchd, (__bridge >> CFStringRef)@kHelperIdentifier, authRef, &cfError)) { >> NSLog(@"SMJobBless(%s,...) returned true; attempting (%s).", >> kHelperIdentifier, kShortVersionString); >> NSLog(@"now found: %@", [self system:@"/usr/bin/otool -P " >> "/Library/PrivilegedHelperTools/com.GemTalk.GemStone.Helper | " >> "grep -A 1 VersionString | tail -1"]); >> } else { >> AppError(@"Helper tool installation failed: %@", [(__bridge >> NSError*) cfError localizedDescription]); >> } >> } >> >> >> CONSOLE: >> >> default 14:25:04.368568 -0800 authd Succeeded authorizing right >> 'com.apple.ServiceManagement.blesshelper' by client >> '/Users/jfoster/Library/Developer/Xcode/DerivedData/GemStone-akfvfyaoddyaavgbcxnrdhnovoal/Build/Products/Debug/GemStone.app' >> [5626] for authorization created by >> '/Users/jfoster/Library/Developer/Xcode/DerivedData/GemStone-akfvfyaoddyaavgbcxnrdhnovoal/Build/Products/Debug/GemStone.app' >> [5626] (13,0) >> default 14:25:04.889238 -0800 kernel AMFI: allowing exception >> handler for 'GemStone' (5626) because the process is not restricted. >> default 14:25:04.385444 -0800 GemStone existing: >> <string>1.3.3.9</string> >> default 14:25:04.900905 -0800 kernel AMFI: allowing exception >> handler for 'GemStone' (5626) because the process is not restricted. >> default 14:25:04.397113 -0800 GemStone replacement: >> <string>1.4.0</string> >> default 14:25:04.398426 -0800 authd Succeeded authorizing right >> 'com.apple.ServiceManagement.blesshelper' by client '/usr/libexec/smd' [251] >> for authorization created by >> '/Users/jfoster/Library/Developer/Xcode/DerivedData/GemStone-akfvfyaoddyaavgbcxnrdhnovoal/Build/Products/Debug/GemStone.app' >> [5626] (3,0) >> default 14:25:04.408694 -0800 GemStone >> SMJobBless(com.GemTalk.GemStone.Helper,...) returned true; attempting >> (1.4.0). >> default 14:25:04.923798 -0800 kernel AMFI: allowing exception >> handler for 'GemStone' (5626) because the process is not restricted. >> default 14:25:04.419988 -0800 GemStone now found: >> <string>1.3.3.9</string> >> > > _______________________________________________ > launchd-dev mailing list > launchd-dev@lists.macosforge.org > https://lists.macosforge.org/mailman/listinfo/launchd-dev
_______________________________________________ launchd-dev mailing list launchd-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/launchd-dev