Uso un producto llamado install4j para crear los archivos DMG para mi aplicación. El código firma la aplicación correctamente dentro del archivo DMG y puede hacerlo desde sistemas operativos que no sean macOS.
Advertencia:install4j no es un software gratuito y, de hecho, es bastante caro.
Puede solucionar esto firmando solo JavaApplicationStub e info.plist de su aplicación y excluyendo la carpeta "Recursos" de la firma. Entonces tendría que cambiar su proceso de compilación para usar el contenedor prefirmado. Por supuesto, este no es el sentido del codiseño, pero funcionará;-)
Para lograr esto, siga los siguientes pasos:
- crea tu .app como de costumbre
- muévelo a tu mac
- cree un archivo "ResourceRules.plist" con el siguiente contenido:
ResourceRules.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>rules</key>
<dict>
<key>^Resources/</key>
<false/>
<key>^version.plist$</key>
<true/>
</dict>
</dict>
</plist>
-
ahora firme con los siguientes comandos:CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"codesign -s "Certificate Name" --resource-rules ResourceRules.plist -fv MyApp.app
-
Luego elimine todo en Resource y verifique la firma (codesign -v -v MyApp.app). Verás que sigue siendo válido
-
Use el resguardo firmado completo en su proceso de compilación. Puede cambiar todo en Recursos pero no puede cambiar info.plist.
No existe una forma documentada de firmar el código de una aplicación Mac OS X en Linux.
La única forma que he encontrado para hacer esto hasta ahora es usar SSH en una Mac y usarla.
Por otro lado, según @Steve McLeod (https://stackoverflow.com/a/55906962/28190), el paquete de instalación install4j ofrece esto:
Firma de código integrada en Windows y Mac OS X . En la sección "Configuración general", install4j ahora tiene una pestaña "Firma de código" donde puede configurar certificados de firma de código para Windows y Mac OS X. El diseño conjunto se aplicará a todos los lanzadores y aplicaciones de instalación en los archivos multimedia correspondientes. Las implementaciones para la firma de código son multiplataforma, por lo que puede firmar archivos multimedia de Windows y Mac OS X desde un servidor de compilación de Linux, por ejemplo.
Así que debe ser técnicamente posible.