2009-08-06 13 views
18

Estoy desarrollando una aplicación en Cocoa. Necesito crear un archivo DMG para instalar mi aplicación como Adium (que proporciona una interfaz de usuario agradable para arrastrar el archivo de la aplicación a la carpeta de la aplicación). ¿Hay alguna herramienta para esto?Crear archivo DMG

+7

Para quien sea votado para cerrar esto, me acuerdo de que este/necesariamente/pertenece en SuperUser.com, simplemente porque hay maneras programáticas para lograrlo, y es más relacionado con la programación de los usuarios finales, ya que este sobre la aplicación despliegue. –

+1

Si un DMG no es realmente necesario, use un zip. Esto es mucho menos confuso para los nuevos usuarios de Mac OS X que un DMG. –

Respuesta

16

Utilidad de Discos (está en Aplicaciones \ Utilidades)

Va a File>New>Disk Image From Folder, a continuación, seleccione la carpeta que desea crear una imagen de. El archivo .dmg resultante replicará la carpeta que utilizó para crear la imagen, hasta las posiciones de los iconos.

+2

En serio, ¿por qué pagar por un shareware cuando existe esta práctica utilidad? – Philippe

+0

Este método no preserva las posiciones de los iconos de nivel superior y las opciones de visualización. –

+0

@MichaelTsai Sí lo hace, es necesario posicionar todo, entonces convertirlo en comprimido de la utilidad de disco, también para crear una imagen de fondo crear una carpeta con el nombre '.background', coloque su imagen allí, abrir su volumen, pulse' cmd + j' luego marque 'Background: Picture', y arrastre el archivo en' .background' dentro de él. esto debe hacerse antes de convertirlo en una imagen comprimida (solo lectura). –

8

El Dr. Nic armó una bonita gema de rubí que hace la mayor parte de este trabajo por usted, solo necesita suministrar el proyecto xcode y algunos gráficos. El enlace está aquí:

http://drnicwilliams.com/2009/02/03/choctop-packaging-and-deployment-of-cocoa-applications/

Es un gran paquete, se encarga de las tareas que son de otra manera un dolor ...

- Evan

+0

Gracias por mencionar esto, justo lo que estaba buscando. –

+0

Tengo que mencionar que el tamaño total de dmg creado por esta herramienta aumenta hasta 10M. –

17

Si usted tiene un único archivo que el usuario probablemente copie al directorio de Aplicaciones, una imagen de disco "habilitada para Internet" es una buena alternativa. Cuando descargas uno con Safari (lo sé, no todos usan Safari), lo monta automáticamente, copia el contenido en la ubicación de descarga, luego desmonta el DMG y lo mueve a la papelera. La aplicación no va automáticamente a Aplicaciones, sino que está en HD del usuario y no tienen que preocuparse por manipular la imagen del disco.

imágenes de disco pueden ser habilitado para Internet con un solo comando de terminal:

hdiutil internet-enable -yes "MyDiskImage.dmg" 

Esto debería funcionar en cualquier archivo DMG. Si desea que los usuarios vean sus bonitos antecedentes, es posible que no desee hacer esto. Sin embargo, para cargas simples, es una buena forma de hacerlo. (Por supuesto, algunas personas prefieren crear un archivo ZIP para este tipo de despliegue, de todos modos.)


encuentro que crear manualmente un DMG puede ser un dolor. En realidad, puedes automatizar la creación de un DMG simple en tu proyecto de Xcode. Simplemente cree un destino de script de shell (Proyecto → Nuevo objetivo ...) y use hdiutil en el script. El comando sería algo como esto (la sustitución de los nombres propios y directorios):

hdiutil create -fs HFS+ -volname "MyApp 1.0" -srcfolder \ 
"/directory/with/contents/to/package/" "~/Desktop/MyApp-1.0.dmg"` 

Usted tendrá que poner todas las cosas que desea incluir la imagen de disco en un solo directorio, pero si usted está No tiene miedo de usar cp en la Terminal, esto es fácil de hacer.

Si desea ver un ejemplo, yo uso este enfoque en CHDataStructures.framework. Si revisa el código y abre en Xcode, el segundo script en el destino de Implementación crea el DMG.

+1

Desafortunadamente, la configuración habilitada para Internet es [solo seguida] (http://c-command.com/dropdmg/manual-ah/internet- habilitada) por Mac OS X 10.2 a 10.6. E incluso en esas versiones, solo funciona cuando Safari descarga el archivo .dmg. –

3

Y debido a que no hay suficientes respuestas ya ...

creé una lectura-escritura DMG con el diseño que quería - una carpeta vacía imagen de fondo, el tamaño, el acceso directo al icono de la aplicación, y estar en pie en mi solicitud Escribí un script simple bash para hacer una copia de este DMG, montarlo, copiar mi aplicación sobre la carpeta vacía, desmontar el DMG, y luego convertirlo a solo lectura.

Pero DMG Canvas puede hacer todo este proceso por usted, y también proporciona una herramienta de línea de comandos que puede usar para automatizar este proceso a partir de sus compilaciones Xcode, por lo que realmente recomendaría eso sobre mi solución.

0

MacBreak Dev hizo un pequeño screencast sobre la creación de archivos DMG utilizando un flujo de trabajo de Automator. Hace las cosas muy fáciles, muy rápidas y puede tener un fondo personalizado para su DMG. Puede verlo en: http://www.pixelcorps.tv/mbkd_010

+0

El enlace no parece funcionar más desafortunadamente. – Cragly

2

Mozilla build scripts son una gran fuente si desea escribir su propia secuencia de comandos. Usando pkg-dmg puede personalizar la imagen de fondo, el nombre del volumen, añadir un icono de licencia, etc. Ejemplo:

pkg-dmg \ 
    --verbosity 2 \ 
    --volname "MegaFinder" \ 
    --source MegaFinder.app \ 
    --sourcefile \ 
    --target MegaFinder.dmg \ 
    --license Licence.txt \ 
    --icon MegaFinderVolumenIcon.icns \ 
    --copy MegaFinderCustomizedDS_Store:.DS_Store \ 
    --mkdir .background \ 
    --copy MegaFinderBackgroundImage.jpg:.background/backgroundImage.jpg \ 
    --symlink /Applications:Applications \ 
    --attribute V:.background \ 
    2>&1 > /dev/null 

El problema es la creación de la perfecta .DS_Store. Para los casos simples que usted puede crear .DS_Store personalizar el volumen dmg montado en el Finder (Mostrar opciones de visualización). Tendrá que crear una imagen de escritura, personalizarlo, desmonte (a confirmar los cambios) y, finalmente, montar de nuevo para copiar el .DS_Store resultante como MegaFinderCustomizedDS_Store (tal como aparece en el ejemplo anterior)

Si su aplicación suppports leopardo recomiendo DMG Canvas para administrar todo el proceso o al menos para obtener el .DS_Store. También tiene una herramienta de línea de comandos.

+0

Enlace actualizado a las secuencias de comandos de Mozilla fuente: http://hg.mozilla.org/mozilla-central/file/tip/build/package/mac_osx – ash

0

Puede usar DropDMG para configurar un diseño con una imagen de fondo, un enlace simbólico a la carpeta Aplicaciones, las posiciones de sus iconos, etc. Luego, cuando necesite crear su archivo .dmg, simplemente puede arrastrar la aplicación a DropDMG (o guiónelo a través de AppleScript o la herramienta de línea de comandos dropdmg) y haga que cree la imagen del disco en un solo paso.

1

La mejor manera de hacerlo como un paso de compilación automático es crear una plantilla.dmg que tenga exactamente el aspecto que desee (utilizando finder/diskutility, etc. pero sin realizar el último paso de compresión) y luego en su script de compilación :

  1. uso hdiutil para adjuntar la imagen
  2. uso cp etc para copiar la aplicación en la imagen montada
  3. hdiutil separar
  4. comprimir la imagen: hdiutil convertir "in.dmg" -quiet -format UDZO -imagekey zlib-level = 9 -o "MyApp-0.3.dmg"

Hay un archivo MAKE en https://github.com/remko/fancy-dmg/ que contiene estos pasos.