2013-01-20 70 views
1

我正在嘗試構建一個小應用程序,用codesign實用程序和鑰匙串中的我的開發人員證書對一個Mac OS X應用程序進行編碼簽名。要做到這一點我用NSTask,這樣的:在Mac應用程序中使用來自Keychain的證書

[task setLaunchPath:@"/usr/bin/codesign"]; 
// ... 
NSString *certificateName = @"\"3rd Party Mac Developer Application: Firstname Lastname\""; 
NSString *appName = @"\"/path/to/My App.app\""; 
NSArray *args = [NSArray arrayWithObjects:@"-s", certificateName, appName, nil]; 
// ... 
[task launch]; 

我用一個NSPipe趕輸出和我得到這個錯誤信息:no identity found ...
但是如果我手動啓動該命令通過終端,應用程序簽名很好(所以它不是證書安裝不當的問題等)。

我認爲問題是因爲我的應用程序無法訪問鑰匙串中的證書(但我可以通過終端)。

有人已經遇到過這個問題嗎?

在此先感謝,最佳。

回答

2

你不應該嵌入參數額外引號NSTask

NSString *certificateName = @"3rd Party Mac Developer Application: Firstname Lastname"; 
NSString *appName = @"/path/to/My App.app"; 

空間的參數被自動處理,並且不需要引號。

+0

哦,我的...你是對的!我一定會對此進行測試。恥辱對我來說:s非常感謝:) – Beny

+0

啊,我記得我的錯誤...之前,我沒有額外的引號,但我忘記了'第三方Mac開發應用程序:'和'名字姓氏'之間的空間,所以同樣的消息'沒有發現身份證'(但不是出於同樣的原因)。一個愚蠢的問題,馬丁很快就解決了。 – Beny

相關問題