簡體   English   中英

SMJobBless和朋友

[英]SMJobBless and friends

我制作了一個提交給Mac AppStore的應用程序。 由於某些原因,他們拒絕了它,因為它正在使用SMJobBless API安裝幫助程序工具。

由於該幫助程序工具對於大多數應用程序功能不是必需的,因此我已將其刪除,並且我的應用程序已被接受。

因此,現在,我正在打包一個獨立的安裝程序,用於幫助程序工具,該工具可以從Internet上下載。

但是,在我將文件安裝到位之后,幫助程序工具拒絕運行...該幫助程序工具只有一個進入/ Library / LaunchDaemons的plist和一個進入/ Library / PrivilegedHelperTools的二進制文件。

現在我想知道,除了將文件移到適當位置之外,SMJobBless到底在做什么? 是否在launchctl中注冊了我的工具? 我嘗試了各種嘗試,將其手動添加到launchctl中,但沒有成功:輔助工具僅在請求簽入請求后退出。

輔助工具僅包含以下內容:

@autoreleasepool {
    launch_data_t       req             = launch_data_new_string(LAUNCH_KEY_CHECKIN);
    launch_data_t       resp            = launch_msg(req); // AT THIS POINT, RESP IS NULL. Why?
    launch_data_t       machData        = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_MACHSERVICES);
    launch_data_t       machPData       = launch_data_dict_lookup(machData, [kHelperBundleName UTF8String]);
    mach_port_t         mp              = launch_data_get_machport(machPData);
    launch_data_free                    (resp);
    launch_data_free                    (req);
    // Prepare connexion.
    NSMachPort          *rp             = [[NSMachPort alloc] initWithMachPort:mp];
    PrivilegedHelperProxy
                        *phProxy        = [[[PrivilegedHelperProxy alloc] init] autorelease];
    NSConnection        *con            = [NSConnection connectionWithReceivePort:rp sendPort:nil];
    [rp release];
    [con setRootObject:phProxy];
    [[NSRunLoop currentRunLoop] run];
}
return                                  EXIT_SUCCESS;

通過SMJobBless API進行安裝時,該服務可以完美運行,並且可以從我的APP中訪問根代理...

那么,與調用SMJobBless API一樣,安裝程序如何才能正常使用此幫助程序工具,需要執行哪些步驟?

謝謝,皮埃爾。

解決了。 幫助器工具的PList條目不包含任何ProgramArguments(這似乎與SMJobBless API無關)。 將它們添加到PList之后,幫助程序工具可以正確運行,並且安裝程序會正確注冊它。

不管怎么說,多謝拉! 皮埃爾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM