7

我是 macOS 开发的新手,但我确实有 iOS 开发经验。我正在为一个包开发一个安装程序应用程序XYZ.pkg 并且我想用我自己的 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
4

2 回答 2

3

包的路径中有一个空格,安装程序命令将其解释为包名称的结尾,然后它会在此之后找到看起来像废话的内容。如果将资源路径括在引号中,那应该可以:

let argumentString = "-pkg \"\(pathOfResource)\""
于 2017-02-24T16:52:03.523 回答
3

您的问题是路径后的空格。

let path = "/usr/sbin/installer"

当进程在给定的启动路径中找不到二进制文件时,会引发异常。

于 2017-02-21T13:34:19.517 回答