沙盒助手应用程序中的 NSTask 失败,并显示“无法设置沙盒配置文件数据”

Sim*_*iau 6 macos nstask appstore-sandbox

我正在开发一个由主应用程序和助手组成的 Mac OS 应用程序:

Backup.app/
??? Contents
    ??? Library
    ?   ??? LoginItems
    ?       ??? BackupHelper.app
    ??? MacOS
    ?   ??? Backup
Run Code Online (Sandbox Code Playgroud)

Backup.app:要求用户选择路径并保存应用范围的安全书签。 备份助手应用程序:备份此路径。

Backup.app 和 BackupHelper.app 都是沙盒化的。
使用 SMLoginItemSetEnabled 注册 backupHelper 应用程序以在登录时启动。

当BackupHelper.app需要访问Backup.app保存的书签时,
我希望它调用Backup.app(带有一些参数)来获取最终的NSURL(带有applesecurityscope参数的那个)

我尝试使用 NSTask 启动 Backup.app,它以 NSTaskTerminationReasonUncaughtSignal 终止,我得到了这个堆栈跟踪:

Process:         Backup [18095]
Path:            /Applications/Backup.app/Contents/MacOS/Backup
Identifier:      Backup
Version:         1.0 (1)
Code Type:       X86-64 (Native)
Parent Process:  BackupHelper [18093]
Responsible:     BackupHelper [18093]
User ID:         501

Date/Time:       2013-11-04 10:23:06.016 +0100
OS Version:      Mac OS X 10.9 (13A603)
Report Version:  11
Anonymous UUID:  84A150C3-31C4-BE29-AAC9-338910633B1C

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000

Application Specific Information:
Could not set sandbox profile data: Operation not permitted (1)

Application Specific Signatures:
SYSCALL_SET_PROFILE

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libxpc.dylib                       0x00007fff9079c5a1 _xpc_runtime_init_once + 2482
1   libdispatch.dylib                  0x00007fff8e59c2ad _dispatch_client_callout + 8
2   libdispatch.dylib                  0x00007fff8e59c21c dispatch_once_f + 79 
Run Code Online (Sandbox Code Playgroud)

当我尝试直接启动 Backup.app 时,它工作正常,当我尝试使用相同的 NSTask 启动另一个应用程序时,它也能正常工作。您知道为什么它不能专门用于 Backup.app 吗?

谢谢 !