swift - 使用 Process 使用 hdiutil 创建 DMG
问题描述
我正在玩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"
。绝对与参数的格式有关,但我认为似乎是正确的?
解决方案
推荐阅读
- c# - 是否可以在不启动表单应用程序的情况下从 c# 类库运行 Windows 表单代码?
- macos - 如何让 --watch 标志在 OSX 命令行上工作?
- ios - Xamarin Forms IOS 应用程序图标 - 文件不存在
- java - 在生产者/消费者模式中使用多个生产者和消费者对java中的字符串进行排序有什么好处?
- python - 从字符串中提取 Word 模板
- html - 如何水平居中文本(h2)?我有问题
- php - 如何在 codeigniter v4 的子目录中创建控制器?
- aspnetboilerplate - 使用 Asp.net 样板 .NET Core 在多租户中进行用户管理
- angular - 具有相同来源的反应形式的多个 mat-chip-list
- recursion - 优化排序列表中的查找