2015-03-26 6 views
9

मैं एक मैक ऐप बना रहा हूं जिसे कुछ फाइलों को अनार करने के लिए कमांड टूल 'अनार' के साथ बंडल किया गया है। ऐप सैंडबॉक्स है।कमांड लाइन हेल्पर के साथ सैंडबॉक्स किए गए ओएसएक्स ऐप 'रूट पथ प्राप्त करने में असमर्थ'

xcode में मैं एप्लिकेशन की रिसोर्स फ़ोल्डर में unrar आदेश उपकरण कॉपी (एक सब-पाथ 'Exec' नाम के साथ):

कॉपी फ़ाइलें: गंतव्य: संसाधन - सब-पाथ: Exec

भागो स्क्रिप्ट::

प्रतिलिपि चरण के बाद मैं एक रन स्क्रिप्ट हकों और कोड हस्ताक्षर इस प्रकार सेट करने के लिए क्या शेल:/bin/श

LOCATION="${BUILT_PRODUCTS_DIR}"/"${CONTENTS_FOLDER_PATH}" 
IDENTITY="3rd Party Mac Developer Application: CompanyName." 
codesign -f -s "$IDENTITY" --entitlements"/<path>/unrar.entitlements" "$LOCATION"/Resources/exec/unrar 

एप्लिकेशन को स्वयं मैं एक NSTask unrar आदेश पर अमल करने के लिए उपयोग में:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"unrar" ofType:@"" inDirectory:@"exec"]; 

NSTask *task = [[NSTask alloc] init]; 
[task setLaunchPath:filePath]; 
[task setArguments:[NSArray arrayWithObjects:@"e", rarfilepath,extractpath, nil]]; 
[_task launch]; 

unrar.entitlements शामिल हैं:

<key>com.apple.security.app-sandbox</key> 
<true/> 
<key>com.apple.security.inherit</key> 
<true/> 

ऐप चलाने पर, सबकुछ ठीक काम करता है और फाइलें निकाली जाती हैं।

लेकिन ... तो जब मैं systemlog मैं निम्नलिखित संदेश दिखाई जाँच:

secinitd [332]: unrar [94,747]: मुख्य निष्पादन के बंडल के लिए रूट पथ प्राप्त करने में असमर्थ:/Applications/अनुप्रयोग .app/सामग्री/संसाधन/निष्पादन/अनार

जब मैं उपर्युक्त रन स्क्रिप्ट नहीं चलाता तो संदेश गायब हो जाता है, लेकिन फिर एंटाइटेलमेंट 'unrar' कमांड टूल के लिए सेट नहीं होते हैं और सैंडबॉक्सिंग विफल हो जाती है।

मैं तीन दिनों के लिए अपनी सुनवाई खींच रहा हूं अब इस संदेश का क्या अर्थ है और इसे कैसे हल किया जाए, लेकिन मैं विचारों से बाहर हूं।

Google या stackoverflow खोजना या तो मदद नहीं करता है।

क्या कोई इसे हल करने में मेरी सहायता कर सकता है, कृपया।

धन्यवाद, आंद्रे।

(सभी पाठ के लिए क्षमा करें, लेकिन मैं अभी तक छवियों पोस्ट करने की अनुमति नहीं कर रहा हूँ।)

+0

कोई नहीं? कृपया मेरी मदद करें। – Eddie

+0

क्या आपको इसके लिए कोई समाधान मिला? – Tibidabo

उत्तर

0

मेरा मानना ​​है कि unrar निष्पादन योग्य फ़ाइल

MySandboxApp.app/Contents/Helpers/unrar 

संसाधन फ़ोल्डर में स्थित होना चाहिए गैर के लिए प्रतिबंधित है -उत्पादनीय सामग्री।

संबंधित मुद्दे