我正在开发一个由主应用程序和助手组成的 Mac OS 应用程序:
Backup.app/
└── Contents
├── Library
│ └── LoginItems
│ └── BackupHelper.app
├── MacOS
│ └── Backup
Backup.app:要求用户选择路径并保存应用范围的安全书签。 BackupHelper.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
当我尝试直接启动 Backup.app 时,它可以正常工作,当我尝试使用相同的 NSTask 启动另一个应用程序时,它也可以正常工作。您知道为什么它不能专门用于 Backup.app 吗?
谢谢 !