K vytváření souborů DMG pro svou aplikaci používám produkt s názvem install4j. Správně podepíše aplikaci v souboru DMG a může tak učinit z jiných operačních systémů než macOS.
Upozornění:install4j není svobodný software a ve skutečnosti je docela drahý.
Tento problém můžete obejít pouze podepsáním JavaApplicationStub a info.plist vaší aplikace a vyloučením složky „Resources“ z podepisování. Pak byste museli změnit proces sestavení tak, aby používal předem podepsaný kontejner. Samozřejmě to není smysl codesignu, ale bude to fungovat;-)
Chcete-li toho dosáhnout, proveďte následující kroky:
- vytvořte si .aplikaci jako obvykle
- přesuňte jej do počítače mac
- vytvořte soubor "ResourceRules.plist" s následujícím obsahem:
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>
-
nyní se podepište pomocí následujících příkazů:CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"codesign -s "Název certifikátu" --resource-rules ResourceRules.plist -fv MyApp.app
-
Poté smažte vše v Resource a ověřte podpis (codesign -v -v MyApp.app). Uvidíte, že je stále platný
-
V procesu sestavování použijte úplný podepsaný útržek. V Resources můžete změnit vše, ale nemůžete změnit info.plist.
Neexistuje žádný zdokumentovaný způsob podepisování kódu aplikace Mac OS X v Linuxu.
Jediný způsob, jak to zatím udělat, je SSH do Macu a jeho použití.
Na druhou stranu, podle @Steve McLeod (https://stackoverflow.com/a/55906962/28190) instalační balíček install4j nabízí toto:
Integrované podepisování kódu v systémech Windows a Mac OS X . V sekci „Obecná nastavení“ má install4j nyní záložku „Podepisování kódu“, kde můžete konfigurovat certifikáty pro podepisování kódu pro Windows a Mac OS X. Kodesign bude aplikován na všechny spouštěče a instalační aplikace v odpovídajících mediálních souborech. Implementace pro podepisování kódu jsou multiplatformní, takže mediální soubory Windows a Mac OS X můžete podepisovat například z linuxového sestavení serveru.
Takže to musí být technicky možné.