14 votos

Cómo crear una imagen de disco desde la línea de comandos

Actualmente parte de mi proceso de construcción es el siguiente;

  • Iniciar Utilidades/Utilidad de Disco
  • Seleccione Nueva Imagen
  • Establecer Guardar como en el widget
  • Establecer el nombre del widget
  • Establecer el tamaño a la medida 50 mb
  • Establecer formato Mac OS Extended

¿pero es posible hacer todo esto desde la línea de comandos?

20voto

Darren Puntos 46

Puede hacerlo con el hdiutil herramienta. La configuración adecuada en su caso sería:

hdiutil create -size 50m -fs HFS+ -volname Widget /path/to/save/widget.dmg

Obviamente cambia el "Widget" y la ruta a lo que necesites.

Algunas opciones adicionales que pueden ser útiles:

  • -srcfolder /path/to/source Esto creará la imagen de disco con los datos de la carpeta especificada como contenido.
  • -megabytes 50 utilizado en lugar de -size 50m . Esto utilizará megabytes de tamaño binario (2^20 bytes) en lugar de decimal (10^6 bytes).
  • -srcdevice /dev/diskXsY Esto es como srcfolder pero hace una copia basada en bloques desde otro dispositivo, como una partición del disco duro o un DVD. Es útil para hacer clones e imágenes de discos de instalación, etc.

0 votos

El enlace está muerto, aquí hay un enlace actualizado: developer.apple.com/legacy/library/documentation/Darwin/

0 votos

El enlace actualizado está ahora muerto. Aquí hay una versión archivada: developer.apple.com/legacy/library/documentation/Darwin/

2voto

AdriZ Puntos 121

Hice un pequeño bash script para automatizar la creación de una imagen de disco.

Crea un directorio temporal para almacenar todos los archivos necesarios y luego lo exporta en un nuevo archivo DMG. A continuación, se elimina el directorio temporal.

#!/bin/bash
# Create .dmg file for macOS

# Adapt these variables to your needs
APP_VERS="1.0"
DMG_NAME="MyApp_v${APP_VERS}_macos"
OUTPUT_DMG_DIR="path_to_output_dmg_file"
APP_FILE="path_to_my_app/MyApp.app"
OTHER_FILES_TO_INCLUDE="path_to_other_files"

# The directory of the script
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

# The temp directory used, within $DIR
WORK_DIR=`mktemp -d "${DIR}/tmp"`

# Check if tmp dir was created
if [[ ! "${WORK_DIR}" || ! -d "${WORK_DIR}" ]]; then
    echo "Could not create temp dir"
    exit 1
fi

# Function to deletes the temp directory
function cleanup {
    rm -rf "${WORK_DIR}"
    #echo "Deleted temp working directory ${WORK_DIR}"
}

# Register the cleanup function to be called on the EXIT signal
trap cleanup EXIT

# Copy application on temp dir
cp -R "${APP_FILE}" "${WORK_DIR}"
# Copy other files without hidden files
rsync -a --exclude=".*" "${OTHER_FILES_TO_INCLUDE}" "${WORK_DIR}"

# Create .dmg
hdiutil create -volname "${DMG_NAME}" -srcfolder "${WORK_DIR}" -ov -format UDZO "${OUTPUT_DMG_DIR}/${DMG_NAME}.dmg"

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X