Vit*_*ner 16 dmg-image hdiutil macos
我正在使用 puppet 自动化我的 Mac 安装。作为其中的一部分,我需要安装几个 .dmg 格式的程序。
我使用以下方法安装它们:
sudo /usr/bin/hdiutil mount -plist -nobrowse -readonly -quiet -mountrandom /tmp Program.dmg
Run Code Online (Sandbox Code Playgroud)
问题是某些 .dmg 文件附带了许可证,因此脚本无法接受许可证。(使用 puppet 运行时没有 stdin/out,所以我无法手动批准它继续。)
有没有办法预先批准或强制批准许可证?
小智 18
当我遇到一个包含 EULA 的 .dmg 时,这对我有用,我想通过命令行安装它而无需用户交互......
/usr/bin/hdiutil convert -quiet foo.dmg -format UDTO -o bar
/usr/bin/hdiutil attach -quiet -nobrowse -noverify -noautoopen -mountpoint right_here bar.cdr
Run Code Online (Sandbox Code Playgroud)
(注意:我有理由确信并非所有上述选项都需要绕过 EULA,例如-nobrowse
, -noverify
, -noautoopen
, -mountpoint
。但是,我使用了它们并且我没有在没有它们的情况下进行测试,所以我不想声称我没有测试过。)
我最终得到的是一个目录
bar.cdr
foo.dmg
right_here/
Run Code Online (Sandbox Code Playgroud)
其中right_here/
包含 的内容,foo.dmg
而不会提示您输入 EULA。
完成后一定要分离!
/usr/bin/hdiutil detach right_here/
Run Code Online (Sandbox Code Playgroud)
更多信息:hdiutil(1) Mac OS X 手册页。
青年会
小智 7
如果只需要输入“Y”,则将 yes 命令通过管道输入 hdiutil 命令:
yes | /bin/hdiutil [...]
Run Code Online (Sandbox Code Playgroud)
这将模拟按“y”并在命令行中返回。
要键入其他内容,只需将其作为参数放在命令行上:
yes accept | ...
Run Code Online (Sandbox Code Playgroud)
这将在脚本中输入“接受”。
请注意,如果脚本多次要求输入,yes 命令将输入多个条目。您可能会看到类似 'broken pipe' 的输出 - 这仅意味着您通过管道输入的命令退出而 'yes' 仍在发送输入。
小智 6
我最近遇到了一个带有 EULA 的 DMG,这让我很恼火,因为我无法围绕它编写脚本。我发现如果我将 DMG 转换为 CDR,它会在安装 CDR 时绕过 EULA。
这是我所做的:
hdiutil convert foo.dmg -format UDTO -o bar.cdr
hdiutil attach bar.cdr
rm foo.dmg <--optional
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
如果您有 GUI 并且能够并行执行两个命令行调用,则可以使用
/System/Library/CoreServices/DiskImageMounter.app/Contents/MacOS/DiskImageMounter /path/to/file.dmg
Run Code Online (Sandbox Code Playgroud)
和
osascript accept.scpt
Run Code Online (Sandbox Code Playgroud)
后者执行以下 AppleScript:
tell application "System Events"
delay 5 # wait 5 seconds -- I tested it using two terminal tabs and needed the time
key code 48 # press tab 4 times in the license window
key code 48
key code 48
key code 48
keystroke " " # press space to click "accept"
end tell
Run Code Online (Sandbox Code Playgroud)
在 中bash
,我能够写
/System/Library/CoreServices/DiskImageMounter.app/Contents/MacOS/DiskImageMounter file.dmg & osascript accept.scpt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6172 次 |
最近记录: |