10

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 :).

grigoryvp
  • 3,655
  • 11
  • 39
  • 59

4 Answers4

18

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

  1. goes to your Desktop folder
  2. grabs DarwinPorts from the opendarwin site
  3. mounts the dmg
  4. goes to the newly mounted DarwinPorts volume
  5. installs the package, targeted to the root, as the root user
  6. ejects the mounted disc image.

you then can use Automator to do this...

code taken from this page

foxtdev
  • 3
  • 3
balexandre
  • 567
  • 2
  • 13
  • 26
4

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!

avstrallen
  • 816
  • 7
  • 9
  • 1
    to answer the question, and using ARD, see this link: http://www.apple.com/remotedesktop/softwaredistribution.html – balexandre May 28 '09 at 09:52
2

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...

Andor
  • 591
  • 5
  • 16
0
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)