¿Cómo hacer distribuible un dmg modificado?

Agregar archivos a un dmg y redistribuirlo

Objetivo :

Agregar algunos archivos de configuración a firefox.dmg (mozilla.cfg y policy.json) con el objetivo de redistribuir el dmg modificado

Cómo se modifica el dmg:

  • Descomprimir el dmg con herramientas como (hdiutils/ultraiso/transmac/dropdmg/disk-utilities)
  • Montar y agregar archivos al dmg descomprimido
  • Opcional (volver a comprimir el dmg con las mismas utilidades utilizadas para descomprimir)

Asunto :

Abrir el nuevo dmg en una máquina diferente da el resultado"firefox" is damaged and can't be opened, you should move it to trash

Lo que se probó:

  • Eliminar com.apple.quarantineatributo con el comando xattr -c funciona pero no es una solución confiable
  • Intenté eliminar _CodeSignaturedirectorios del dmg sin éxito
  • Creando un nuevo dmg que contiene archivos del anterior sin éxito
  • Intenté editar Info.plist sin éxito

Pregunta :

¿Cómo hacer que el nuevo paquete dmg se pueda usar en otras máquinas? (Cómo evitar el error del portero sin usar xattr -c)

Respuestas (2)

Firma de código DMG de Apple:

La firma de la aplicación de Apple requiere pagar el programa de desarrollo de Apple (99 $), se puede hacer libremente pero con un propósito limitado.

La firma de dmg se puede hacer de dos maneras:

  • Firmando el propio archivo dmg

  • Firmando el Application.appdirectorio dentro de la imagen dmg

Edición de archivos DMG firmados:

Aquí hay 3 formas posibles de editar aplicaciones firmadas:

  1. Renunciar a la solicitud después de la edición

  2. Elimine la firma por completo y edite la aplicación (la aplicación seguirá siendo instalable, se advertirá al usuario)

  3. Eliminar com.apple.quarantineatributo con el comando xattr -cdespués de editar la aplicación

Verificación de firma :

Dependiendo de la situación, se requieren uno o ambos comandos

codesign -v Application.app
codesign -v Application.dmg

Eliminación de la firma de la aplicación

Después de extraer el dmg, etc. Dependiendo de la situación, se requieren uno o ambos comandos

codesign --remove-signature Application.app
codesign --remove-signature Application.dmg

Explicando el fracaso:

El Application is damaged and can't be opened, you should move it to trashes el resultado de una eliminación parcial de la firma, porque la eliminación de _CodeSignaturedirectorios no es suficiente para eliminar la firma; codesign --remove-signaturetambién debe ejecutarse contra el paquete/aplicación/binario

Conferencia relacionada:

Crear dmg - Crear dmg desde el directorio - Agregar firma a dmg - Eliminar firma - Aplicación dañada - Cómo codificar la firma - Desarrollador gratuito - Firma gratuita

No puede modificar el DMG y hacer que siga pasando por GateKeeper sin volver a firmarlo. ¡Esta es básicamente toda la razón para tener la firma de código!

Básicamente tienes tres opciones:

1) Elimine la firma de código anterior y vuelva a firmar el DMG con su propia firma. Esto requiere que esté inscrito en el Programa de Desarrolladores de Apple.

2) Distribuya el DMG original, sin modificar, y acompáñelo con sus propias modificaciones. Esto podría hacerse como instrucciones para el usuario sobre qué copiar, o podría ser en forma de un script automático.

3) Eliminar las firmas por completo (tanto del DMG como de la aplicación). Luego, el usuario debe tener configurado GateKeeper para permitir la apertura de aplicaciones sin firmar (es decir, se le solicitará al usuario la primera vez que se abra).

¿Ya no se permiten DMG sin firmar en sistemas con Gatekeeper habilitado? Pensé que solo las aplicaciones necesitaban ser firmadas.
Si el desarrollador firma el DMG, la aplicación puede usar archivos de ese DMG. Si el desarrollador no firma el DMG, la aplicación no podrá acceder al contenido del DMG por medio de nombres de archivo relativos. Entonces, si el programa está diseñado para instalarse desde un DMG firmado donde usa archivos en el DMG, no funcionará si lo coloca en un DMG no firmado.
Como aún es posible instalar una aplicación sin firmar al aceptar el cuadro de diálogo 'desarrollador no identificado...' ¿cómo puedo eliminar la firma de Firefox además de eliminar el directorio _CodeSignature o reconstruir? (No quiero publicarlo en la tienda de aplicaciones, solo hacerlo utilizable mientras lo copio a otras máquinas)
Acaba de describir las únicas dos formas de eliminar la firma y luego dice que no desea hacerlo. No tienes otras opciones. Si desea eliminar la firma del código, puede hacerlo eliminándola.
Gracias por las respuestas, se agradece, lo siento, no estaba claro lo que quise decir es que después de eliminar "_CodeSignature", el guardián todavía detecta que firefox.dmg está dañado, ¿cómo puedo hacer que aparezca el cuadro de diálogo "desarrollador no identificado..." en lugar de el diálogo dañado?
@jksoegaard Supongo que el objetivo no es ejecutar la aplicación desde el dmg, sino que el usuario monte el dmg y luego copie la aplicación en/Appilcations (u otra carpeta en el disco duro principal). ¿Por qué, entonces, es necesario firmar el DMG?
La firma @Wowfunhappy permite que el guardián confíe en la aplicación y, por lo tanto, cuando se copia en /Application, el guardián sabe que proviene de un dmg firmado. y si la configuración está configurada para bloquear la aplicación no firmada, incluso después de copiarla cuando el dmg no está firmado, es imposible ejecutar la versión copiada
¡Y SÍ PODEMOS editar una aplicación y hacer que pase a través de GateKeeper sin volver a firmarla!
@intika Sí, también te escribí eso antes en mis comentarios. Si elimina la firma por completo, puede ejecutarla. Pero tendría que permitir la ejecución de aplicaciones sin firmar para que GateKeeper las acepte.