2017-02-15 28 views
7

मै मैकोज़ विकास का नया हूं लेकिन मुझे आईओएस विकास में अनुभव है। मैं पैकेज XYZ.pkg के लिए एक इंस्टॉलर एप्लिकेशन विकसित कर रहा हूं और मैं डिफ़ॉल्ट मैकोज़ इंस्टालर के बजाय इस पैकेज को अपने स्वयं के जीयूआई के साथ स्थापित करना चाहता हूं। पैकेज मेरे एप्लिकेशन के बंडल में उपलब्ध है और जब मैं इसे कमांड के माध्यम से इसे क्रैश करने के लिए इंस्टॉल करने का प्रयास करता हूं।मैकोज़ ऐप्स में पैकेज कैसे स्थापित करें

guard let pathOfResource = Bundle.main.path(forResource: "SomePackageName", ofType: ".pkg") else { 
    return 
} 

self.loadingView.alphaValue = 1 
self.loadingView.layer?.isHidden = false 
self.activityIndicator.startAnimation(sender) 
let argumentString = "-pkg " + pathOfResource 
let argumentString1 = "-target /" 
let path = "/usr/sbin/installer " 
let arguments = [argumentString,argumentString1] 

let task = Process.launchedProcess(launchPath: path, arguments: arguments) 
task.waitUntilExit() 
self.activityIndicator.stopAnimation(sender) 
self.loadingView.alphaValue = 0 
+0

मैं समझता हूँ कि आप अपने खुद के संस्थापक बनाने के लिए कोशिश कर रहे हैं, लेकिन अभी भी सुझाव है कि आप संस्थापक चौखटे का उपयोग करें। चेकआउट [पैकेज] (http://s.sudre.free.fr/Software/Packages/about.html) सॉफ़्टवेयर जो उपयोग करने में आसान और सभ्य दोनों है। – Pejman

उत्तर

3

आपकी समस्या पथ के बाद की जगह है।

let path = "/usr/sbin/installer" 

प्रक्रिया एक अपवाद है जब यह दिया launchPath पर द्विआधारी नहीं मिल सकता है फेंकता है।

+0

अमान्य विकल्प -pkg/$ ProjectPath/DerivedData/DFU_Update-cgrtxsaqsorvgbfxhkvqufvlbpja/निर्माण/उत्पाद/डिबग/DFU Update.app/Contents/Resources/PaletteInstaller.pkg उपयोग: संस्थापक [-help] [-dominfo] [-volinfo] [ -pkginfo] [-allowUntrusted] [-डम्प्लॉग] [- verbose | -verboseR] [-vers] [-config] [-plist] [-file ] [-lang ] [-listiso] [-showChoicesXML] [-applyChoiceChangesXML ] [-showChoicesAfterApplyingChangesXML ] - pkg -लक्ष्य <[DomainKey | माउंटपॉइंट]> –

+0

यह मेरे लॉग में त्रुटि शो है और स्थापना शुरू करने के बजाय यह लॉग देता है। अब मुझे क्या करना चाहिए।? –

+0

आपको पथ से बचने की जरूरत है ... इसमें एक स्थान है। – catlan

3

पैकेजर के पथ में एक स्थान है जो इंस्टॉलर कमांड पैकेज नाम के अंत के रूप में व्याख्या करता है, और उसके बाद यह पता चलता है कि उसके बाद बकवास जैसा दिखता है। आप उद्धरण में संसाधन पथ संलग्न हैं, कि काम करना चाहिए:

let argumentString = "-pkg \"\(pathOfResource)\"" 
संबंधित मुद्दे