2017-02-15 26 views
7

저는 macOS Development의 최신 버전입니다.하지만 iOS 개발에 경험이 있습니다. 패키지 용 설치 프로그램 응용 프로그램을 개발 중입니다. XYZ.pkg 그리고이 패키지를 기본 macOS 설치 프로그램 대신 자체 GUI로 설치하려고합니다. 패키지는 내 응용 프로그램 번들에서 사용할 수 있으며 명령을 통해 설치하려고하면 충돌이 발생합니다.macOS 앱에 패키지를 설치하는 방법

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

자신 만의 설치 프로그램을 만들려고 시도하지만 설치 프로그램 프레임 워크를 사용하는 것이 좋습니다. Checkout [Packages] (http://s.sudre.free.fr/Software/Packages/about.html) 소프트웨어는 사용하기 쉽고 사용하기 쉽습니다. – Pejman

답변

3

문제는 경로 뒤의 공간입니다.

let path = "/usr/sbin/installer" 

주어진 launchPath에서 바이너리를 찾을 수없는 경우 Process에서 예외가 발생합니다.

+0

잘못된 옵션 -pkg/$ ProjectPath/DerivedData/DFU_Update-cgrtxsaqsorvgbfxhkvqufvlbpja/구축/제품/디버그/DFU Update.app/Contents/Resources/PaletteInstaller.pkg 사용법 : 설치 [-help] [-dominfo] [-volinfo] -pkginfo] [-allow 신뢰할 수 없음] [-dumplog] [- 자세한 정보 | -verboseR] -vers] -config] -pList] [-file ] -lang [-listiso] [-showChoicesXML] -applyChoiceChangesXML ] [-showChoicesAfterApplyingChangesXML ] - pkg -target <[DomainKey | MountPoint]> –

+0

이것은 내 로그에 표시되는 오류이며 설치를 시작하는 대신이 로그를 표시합니다. 이제 어떻게해야하지? –

+0

경로를 벗어나려면 ... 공백이 있어야합니다. – catlan

3

설치 프로그램 명령이 패키지 이름의 끝으로 해석하는 패키지의 경로에 공백이 있습니다. 그런 다음 그 다음에 난센스처럼 보이는 것을 찾습니다. 따옴표 안에 리소스 경로를 묶으면 다음과 같이 작동해야합니다.

let argumentString = "-pkg \"\(pathOfResource)\""