Tôi có một ứng dụng Main.app và một ứng dụng Helper.app trong thư mục Main.app/Library/LoginItems. Main.app có thể được người dùng bắt đầu và sau đó người dùng có thể đặt Helper.app làm mục đăng nhập. (sử dụng SMLoginItemSetEnabled()), nó hoạt động hoàn hảo. Khi người dùng đặt Helper.app làm mục đăng nhập, nó cũng được khởi chạy.ra mắt một ứng dụng helper Mac OS X (LoginItem) từ các ứng dụng chính
Tuy nhiên, bạn cũng có thể khởi chạy ứng dụng Helper.app mà không đặt nó làm mục đăng nhập. Tôi đã cố gắng để làm điều này với
[[NSWorkspace sharedWorkspace] launchApplication: newPath];
mà đưa ra một lsboxd : Không cho phép quá trình để khởi động ... lỗi, và với
[NSTask launchedTaskWithLaunchPath:newPath arguments: [NSArray array]];
Mà đưa ra một từ chối cấm-Sandbox reinit lỗi. (? Có lẽ vì Helper.app là bên Main.app)
newPath được tìm thấy như sau:
NSMutableArray *pathComponents = [NSMutableArray arrayWithArray:[[[NSBundle mainBundle] bundlePath] pathComponents]];
[pathComponents addObject:@"Contents"];
[pathComponents addObject:@"Library"];
[pathComponents addObject:@"LoginItems"];
[pathComponents addObject:@"Helper.app"];
[pathComponents addObject:@"Contents"];
[pathComponents addObject:@"MacOS"];
[pathComponents addObject:@"Helper"];
NSString *newPath = [NSString pathWithComponents:pathComponents];
Làm thế nào tôi có thể sửa lỗi này? :)
Cảm ơn,
http://stackoverflow.com/questions/12971549/mac-os-sandbox-launching-main-application-from-helper - nó * * có thể là một vấn đề ký kết đó sẽ biến mất khi ứng dụng nằm trong cửa hàng ứng dụng – Petesh
1Password (với quy trình Trình trợ giúp 1 từ) dường như có thể thực hiện và chúng được sandboxed. Tôi thực sự tự hỏi làm thế nào họ đạt được nó. –
Tôi cũng đã tìm kiếm điều này và tôi đã thử nó theo cách bạn mô tả nó (ngoại trừ việc tôi đã mã hóa đường dẫn, tôi thực sự không thể hiểu tại sao bạn làm theo cách bạn làm) và nó hoạt động ngay lập tức. Tôi không biết những gì bạn đang làm sai (hoặc nếu tôi làm điều gì đó sai, mà làm cho nó làm việc cho tôi). – Sitses