Ich verwende ein Produkt namens install4j, um die DMG-Dateien für meine App zu erstellen. Es signiert die App korrekt in der DMG-Datei und kann dies von anderen Betriebssystemen als macOS tun.
Aber Achtung:install4j ist keine freie Software und eigentlich ziemlich teuer.
Sie können dies umgehen, indem Sie nur den JavaApplicationStub und die info.plist Ihrer Anwendung signieren und den Ordner „Resources“ von der Signierung ausschließen. Dann müssten Sie Ihren Build-Prozess ändern, um den vorsignierten Container zu verwenden. Das ist natürlich nicht der Sinn von Codesign, aber es wird funktionieren;-)
Führen Sie dazu die folgenden Schritte aus:
- erstellen Sie Ihre .app wie gewohnt
- verschieben Sie es auf Ihren Mac
- erstellen Sie eine Datei "ResourceRules.plist" mit folgendem Inhalt:
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>
-
signieren Sie jetzt mit den folgenden Befehlen:CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"codesign -s "Certificate Name" --resource-rules ResourceRules.plist -fv MyApp.app
-
Löschen Sie dann alles in Ressource und überprüfen Sie die Signatur (codesign -v -v MyApp.app). Sie werden sehen, dass es noch gültig ist
-
Verwenden Sie den vollständig signierten Stub in Ihrem Build-Prozess. Sie können alles in Resources ändern, aber Sie können info.plist nicht ändern.
Es gibt keine dokumentierte Möglichkeit, eine Mac OS X-Anwendung unter Linux zu signieren.
Die einzige Möglichkeit, die ich bisher gefunden habe, besteht darin, eine SSH-Verbindung zu einem Mac herzustellen und diesen zu verwenden.
Andererseits bietet das Installationspaket install4j laut @Steve McLeod (https://stackoverflow.com/a/55906962/28190) Folgendes:
Integrierte Codesignatur unter Windows und Mac OS X . Im Abschnitt „Allgemeine Einstellungen“ hat install4j jetzt eine Registerkarte „Code-Signierung“, auf der Sie Code-Signatur-Zertifikate für Windows und Mac OS X konfigurieren können. Codesigning wird auf alle Launcher und Installer-Anwendungen in den entsprechenden Mediendateien angewendet. Die Implementierungen für Codesignierung sind plattformübergreifend, sodass Sie beispielsweise Windows- und Mac OS X-Mediendateien von einem Linux-Build-Server signieren können.
Es muss also technisch möglich sein.