GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie signiere ich eine Mac OS X-Anwendung unter Linux?

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.


Linux
  1. So ändern Sie die MAC-Adresse mit macchanger unter Kali Linux

  2. So verbessern Sie die Startzeit von Anwendungen unter Linux

  3. So generieren Sie eine Zertifikatsignierungsanforderung (CSR) unter Linux

  4. So installieren Sie die Spotify-Anwendung unter Linux

  5. Wie finde ich die Anwendung für einen Mime-Typ unter Linux?

So aktivieren Sie die Option „Bearbeiten“ in der Shutter-Anwendung unter Linux

So geben Sie das Zeichen der indischen Rupie (₹) unter Linux ein

So ändern Sie die Netzwerk-MAC-Adresse in Linux

So ändern Sie die MAC-Adresse in Linux

So installieren Sie Windows-Software unter Linux mit Bottles

So löschen Sie den Bash-Verlauf in Linux und Mac