¿Cómo construir un archivo dmg Mac OS X (en una plataforma que no sea Mac)?

¿Es posible crear un archivo .dmg (para distribuir aplicaciones) desde una plataforma que no sea Mac? Y si es así, ¿cómo?

Parece posible crear archivos DMG con algunas herramientas de terceros. Una búsqueda rápida en Google revela al menos algunas herramientas comerciales:

  • TransMac
  • MagicISO

No estoy seguro acerca de las opciones de OSS / freeware, pero al menos parece posible si así lo desea.

Editar: También me olvidé de MacDrive , que es otra gran herramienta para trabajar con sistemas de archivos HFS + en Windows. Como un DMG es básicamente una instantánea del sistema de archivos HFS +, probablemente con MacDrive también sea posible crear DMG.

Sí, mkfs.hfsplus lo hace.

dd if=/dev/zero of=/tmp/foo.dmg bs=1M count=64 mkfs.hfsplus -v ThisIsFoo /tmp/foo.dmg 

Esto crea un archivo dmg (en este caso 64M) que se puede montar en un mac. También se puede montar en Linux, con algo como

 mount -o loop /tmp/foo.dmg /mnt/foo 

luego de copiar el contenido que desea (en / mnt / foo). Desmóntelo, y el dmg puede copiarse a un mac y montarse allí.

Un proyecto en el que trabajo crea archivos DMG en Linux usando genisoimage:

 mkdir -p dmgdir/progname.app/Contents/{MacOS,Resources} ...copy your PkgInfo, Info.plist to Contents... ...copy your .icns to Resources... ...copy your other things to where you expect them to go... genisoimage -V progname -D -R -apple -no-pad -o progname.dmg dmgdir 

Si quieres ser realmente sofisticado, puedes robar el archivo .DS_Store de un DMG creado en una Mac con un nombre de nombre de volumen y un paquete de aplicaciones llamado progname.app (es decir, que coincida con lo que quieres crear de la Mac) donde ” .background/background.png un fondo en .background/background.png y un enlace simbólico a / Applications en el directorio raíz, y ponlo en dmgdir junto con tu propio enlace simbólico a /Applications .

 git clone https://github.com/hamstergene/libdmg-hfsplus cd libdmg-hfsplus && cmake . && make && cd dmg ./dmg --help 

Makefile:

 dmg: genisoimage -D -V "$(PROJECT) $(VERSION)" -no-pad -r -apple -o project-$(VERSION)-uncompressed.dmg $(DARWIN_DIR) ./dmg dmg project-$(VERSION)-uncompressed.dmg project-$(VERSION).dmg 

sin comprimir funciona de la caja, la compresión puede causar problemas: el origen / maestro al menos produce un error de ‘sum de comprobación’ en el leopardo de las nieves

Ver mkfs.hfsplus

No estoy seguro si alguien todavía está mirando este hilo, pero probé TransMac como lo recomendó Nik Reiman .

Usando esta herramienta, pude, ejecutando en Windows 7 , crear archivos dmg que se podían montar en OSX 10.8.3 .


Abajo

El único inconveniente para nosotros es que esta herramienta no parece ser compatible con la línea de comandos; para nosotros es un factor decisivo, ya que necesitamos poder contar con una herramienta automatizada que nuestro servidor de comstackción (basado en Windows) pueda usar para construir archivos dmg sobre la marcha.

Si distribuye aplicaciones para Mac, seguramente tendrá una Mac para escribirlas y probarlas. ¿Por qué no simplemente usar esa misma Mac para crear la imagen del disco?

[Editar] Alternativamente, si está distribuyendo una aplicación portátil, por ejemplo, un archivo .jar de Java, ¿para qué molestarse con una imagen de disco? Los Mac entienden muy bien los archivos .zip y .tar.gz.

Supongo que lo que quiero decir es que no entiendo cómo se necesitaría una imagen de disco DMG, pero no una Mac con la que crearla.