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

Reply via email to