2017-02-15 21 views
7

私はmacOS Developmentの新人ですが、iOS Developmentでの経験はあります。 私はパッケージのインストーラアプリケーションを開発中ですXYZ.pkg そして、私はこのパッケージをデフォルトのmacOSインストーラの代わりに独自のGUIでインストールしたいと思います。 パッケージは私のアプリケーションバンドルで利用可能です。コマンドでインストールしようとするとクラッシュします。macOS Appsにパッケージをインストールするには

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

あなた自身のインストーラを作成しようとしていますが、インストーラフレームワークを使用することをお勧めします。簡単で使い勝手のよい[Packages](http://s.sudre.free.fr/Software/Packages/about.html)ソフトウェアをチェックアウトしてください。 – Pejman

答えて

3

問題は、パスの後のスペースです。

let path = "/usr/sbin/installer" 

プロセスは、指定されたlaunchPathでバイナリが見つからない場合に例外をスローします。

+0

無効なオプション-pkg/$ ProjectPath/DerivedData/DFU_Update-cgrtxsaqsorvgbfxhkvqufvlbpja /ビルド/製品/デバッグ/ DFU Update.app/Contents/Resources/PaletteInstaller.pkg 使用法:インストーラ[-help] [-dominfo] [-volinfo] [-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)\"" 
関連する問題