I have a .dmg MacOS package (with 'continue' buttons, EULA etc) that i need to install on multiple computers. Is it a way to do so silently via a bash/python/ruby/etc script just like silent MSI installation in Windows? I can automate installation writing script that will click buttons for me, but that looks kinda unnatural :).
to instal a DMG you can do this:
cd ~/Desktop curl -O http://darwinports.opendarwin.org/downloads/DarwinPorts-1.2-10.4.dmg hdiutil attach DarwinPorts-1.2-10.4.dmg cd /Volumes/DarwinPorts-1.2/ sudo installer -pkg DarwinPorts-1.2.pkg -target "/" hdiutil detach /Volumes/DarwinPorts-1.2/
In a nutshell, this
- goes to your Desktop folder
- grabs DarwinPorts from the opendarwin site
- mounts the dmg
- goes to the newly mounted DarwinPorts volume
- installs the package, targeted to the root, as the root user
- ejects the mounted disc image.
you then can use Automator to do this...
code taken from this page
If you're administrating multiple Macs, I highly recommend investing in a copy of ARD - I'm sure there is a scripting answer to your question, but I've been using ARD for so long, I'm afraid I don't know it!
Is that a DMG plus a PKG?
Because DMG, as is, cannot be installed, it just a volume, an image, like an ISO. So probably what you have is a DMG plus a PKG or an installer inside...
If it's a PKG, probably can be installed remotely or silently, but if it's another installer, it can be more tricky, note sure right now...
Remote desktop also, as adamvs says, can deploy packages into your installs...
echo "mounting server" mount_afp afp://username:password@yourserver hdiutil attach /Volumes/yourserver/pathtodmg.dmg /usr/sbin/installer -pkg /Volumes/pathtopkgfile.pkg -target / -verboseR echo "umounting the repository" umount /Volumes/yourserver status=$? if [ $status != 0 ] then echo "Something went wront unmounting the server... no problem... we'll just remove the directory" rmdir /Volumes/yourserver fi
I've found this to be really clean way of installing and is almost entirely silent (Except for the initial attach)