2017-02-15 41 views
7

Tôi mới phát triển MacOS nhưng tôi có kinh nghiệm về Phát triển iOS. Tôi đang phát triển một ứng dụng cài đặt cho một gói XYZ.pkg Và tôi muốn cài đặt gói này bằng GUI của riêng tôi thay vì Trình cài đặt macOS mặc định. Gói có sẵn trong gói Ứng dụng của tôi và khi tôi cố gắng cài đặt gói thông qua lệnh nó bị lỗi.Cách cài đặt gói trong ứng dụng 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

Tôi hiểu bạn đang cố tạo trình cài đặt của riêng mình nhưng vẫn khuyên bạn sử dụng khung trình cài đặt. Thanh toán [Gói] (http://s.sudre.free.fr/Software/Packages/about.html) phần mềm vừa dễ sử dụng vừa dễ sử dụng. – Pejman

Trả lời

3

Vấn đề của bạn là khoảng trống sau đường dẫn.

let path = "/usr/sbin/installer" 

Quy trình ném ngoại lệ khi không thể tìm thấy nhị phân tại launchPath đã cho.

+0

tùy chọn không hợp lệ -pkg/$ ProjectPath/DerivedData/DFU_Update-cgrtxsaqsorvgbfxhkvqufvlbpja/Xây dựng/Sản phẩm/Gỡ lỗi/DFU Update.app/Contents/Resources/PaletteInstaller.pkg Cách sử dụng: trình cài đặt [-help] [-dominfo] [-volinfo] [ -pkginfo] [-allowKhông tin cậy] [-dumplog] [- verbose | -verboseR] [-vers] [-config] [-plist] [-file ] [-lang ] [-listiso] [-showChoicesXML] [-applyChoiceChangesXML ] [-showChoicesAfterApplyingChangesXML ] - pkg -target <[DomainKey | MountPoint]> –

+0

Đây là lỗi hiển thị trong Nhật ký của tôi và thay vì bắt đầu cài đặt, nó cung cấp nhật ký này. Tôi nên làm gì bây giờ.? –

+0

bạn cần phải thoát khỏi đường dẫn ... nó chứa một không gian. – catlan

3

Có một khoảng trống trong đường dẫn đến gói mà lệnh trình cài đặt diễn giải là phần cuối của tên gói và sau đó nó tìm thấy những gì trông giống như vô nghĩa sau đó. Nếu bạn đính kèm đường dẫn tài nguyên trong dấu ngoặc kép, điều đó sẽ hoạt động:

let argumentString = "-pkg \"\(pathOfResource)\"" 
Các vấn đề liên quan