Answers:
如果要编写安装脚本,则需要更多步骤,因为.dmg
文件名,创建的卷的名称,应用程序的名称以及需要分离的设备的名称都可以不同。另外,他们可以在其中留有空间。
也.dmg
可以在其中包含一个.app
或多个.pkg
文件,并且这些文件需要不同的行为。
这是一个bash函数,用于从远程URL安装dmg:
# usage: installdmg https://example.com/path/to/pkg.dmg
function installdmg {
set -x
tempd=$(mktemp -d)
curl $1 > $tempd/pkg.dmg
listing=$(sudo hdiutil attach $tempd/pkg.dmg | grep Volumes)
volume=$(echo "$listing" | cut -f 3)
if [ -e "$volume"/*.app ]; then
sudo cp -rf "$volume"/*.app /Applications
elif [ -e "$volume"/*.pkg ]; then
package=$(ls -1 "$volume" | grep .pkg | head -1)
sudo installer -pkg "$volume"/"$package" -target /
fi
sudo hdiutil detach "$(echo "$listing" | cut -f 1)"
rm -rf $tempd
set +x
}
请注意,如果您.dmg
有.app
运行该文件的文件来安装程序,那么您将需要再次执行其他操作。
hdiutil: detach failed - No such file or directory
您可以尝试使用该命令open disk://host.tld/image.dmg
。
open
什么也没做,只是退出,没有错误信息。
open path/to/file.dmg
。不过我认为不会disk://host.tld/
。)
Docker.dmg
和我没有<image>.pkg
让DIT不工作