2017-02-15 19 views
7

Jestem nowy w MacOS Development, ale mam doświadczenie w rozwoju iOS. Zajmuję się tworzeniem aplikacji instalatora dla pakietu XYZ.pkg I chcę zainstalować ten pakiet z mojego własnego GUI zamiast domyślnego instalatora macOS. Pakiet jest dostępny w pakiecie Moje aplikacje i podczas próby zainstalowania go za pomocą polecenia ulega awarii.Jak zainstalować pakiet w aplikacjach 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

Rozumiem, że próbujesz utworzyć własny instalator, ale nadal zaleca się korzystanie z frameworka instalatora. Kasa [Pakiety] (http://s.sudre.free.fr/Software/Packages/about.html) oprogramowanie, które jest zarówno łatwe, jak i przyzwoite. – Pejman

Odpowiedz

3

Twoim problemem jest przestrzeń po ścieżce.

let path = "/usr/sbin/installer" 

Proces zgłasza wyjątek, gdy nie może odnaleźć pliku binarnego w danej ścieżce launchPath.

+0

nieprawidłowa opcja -pkg/$ ProjectPath/DerivedData/DFU_Update-cgrtxsaqsorvgbfxhkvqufvlbpja/Build/Produkty/Debug/Aktualizacja DFU.app/Contents/Resources/PaletteInstaller.pkg Użycie: instalator [-help] [-dominfo] [-volinfo] [ -pkginfo] [-allowUntrusted] [-dumplog] [- verbose | -verboseR] [-vers] [-config] [-plist] [-file ] [-lang ] [-listiso] [-showChoicesXML] [-applyChoiceChangesXML ] [-showChoicesAfterApplyingChangesXML ] - pkg -target <[DomainKey | MountPoint]> –

+0

To jest pokaz błędu w moim logu i zamiast instalacji startowej daje ten log. Co mam teraz zrobić.? –

+0

musisz uciec ze ścieżki ... zawiera spację. – catlan

3

W ścieżce do pakietu znajduje się spacja, którą polecenie instalatora interpretuje jako koniec nazwy pakietu, a następnie znajduje to, co wygląda jak bzdura. Jeśli ścieżka zasobu jest zamknięta w cudzysłowie, to powinno działać:

let argumentString = "-pkg \"\(pathOfResource)\"" 
Powiązane problemy