Использование процесса для создания DMG с hdiutil - PullRequest
0 голосов
/ 20 апреля 2019

Я играю с Process() и пытаюсь заставить его создать DMG на рабочем столе.

Код, который я пытаюсь использовать:

func terminal(_ args:String...) -> integer_t{
print(args)
let task = Process()
let dataPipe = Pipe()
let errPipe = Pipe()


task.launchPath = "/usr/bin/hdiutil"
task.arguments = args
task.standardOutput = dataPipe
task.standardError = errPipe

task.launch()

task.waitUntilExit()

let data = dataPipe.fileHandleForReading.readDataToEndOfFile()
let output = String(data: data, encoding: String.Encoding.utf8)

let dataErr = errPipe.fileHandleForReading.readDataToEndOfFile()
let errOp = String(data: dataErr, encoding: String.Encoding.utf8)
print (errOp)


return task.terminationStatus}

terminal("create", "size 50m" ,"fs HFS+" , "volname test", "Users/me/Desktop")

Но в настоящее время выдается ошибка

hdiutil: create: Only one image can be created at a time.\nUsage:\thdiutil create <sizespec> [options] <imagepath>\n\thdiutil create -help\n

Думаю, у меня что-то не так с тем, как анализируются аргументы, но я не уверен, что.

Спасибо за любую помощь!

ОБНОВЛЕНИЕ:

Я думаю, может быть, это рассматривает аргументы как отдельные вызовы?Вершина возвращаемой ошибки гласит:

["create", "size 50m", "fs HFS+", "/Users/me/Desktop/test.dmg"] hdiutil: create: Only one image can be created at a time.

Я вернул - в аргументы, но теперь он говорит hdiutil: create: unknown option "-size 50M".Определенно что-то связано с тем, как аргументы отформатированы, но кажется правильным, я думаю ??

...