如何在 macOS 应用程序中安装软件包
How to install package in macOS Apps
我是 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
你的问题是路径后面的space。
let path = "/usr/sbin/installer"
进程在给定的启动路径找不到二进制文件时抛出异常。
包的路径中有一个space,installer命令将其解释为包名的结尾,然后它发现后面看起来像废话。如果您将资源路径括在引号中,那应该有效:
let argumentString = "-pkg \"\(pathOfResource)\""
我是 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
你的问题是路径后面的space。
let path = "/usr/sbin/installer"
进程在给定的启动路径找不到二进制文件时抛出异常。
包的路径中有一个space,installer命令将其解释为包名的结尾,然后它发现后面看起来像废话。如果您将资源路径括在引号中,那应该有效:
let argumentString = "-pkg \"\(pathOfResource)\""