Saya menggunakan produk bernama install4j untuk membuat file DMG untuk aplikasi saya. Itu kode menandatangani aplikasi dengan benar dalam file DMG, dan dapat melakukannya dari OS selain macOS.
Namun peringatan:install4j bukan perangkat lunak gratis, dan sebenarnya cukup mahal.
Anda dapat mengatasinya dengan hanya menandatangani JavaApplicationStub dan info.plist aplikasi Anda dan mengecualikan folder "Resources" dari penandatanganan. Maka Anda harus mengubah proses pembuatan untuk menggunakan wadah yang telah ditandatangani sebelumnya. Tentu saja ini bukan maksud dari codesigning tetapi ini akan berhasil;-)
Untuk mencapainya, lakukan langkah-langkah berikut:
- buat .app Anda seperti biasa
- pindahkan ke mac Anda
- buat file "ResourceRules.plist" dengan konten berikut:
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>
-
sekarang tandatangani dengan perintah berikut:CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"codesign -s "Certificate Name" --resource-rules ResourceRules.plist -fv MyApp.app
-
Kemudian hapus semua yang ada di Resource dan verifikasi tanda tangannya (codesign -v -v MyApp.app). Anda akan melihat bahwa itu masih valid
-
Gunakan rintisan bertanda tangan lengkap dalam proses pembuatan Anda. Anda dapat mengubah semuanya di Sumber Daya, tetapi Anda tidak dapat mengubah info.plist.
Tidak ada cara yang terdokumentasi untuk menandatangani kode aplikasi Mac OS X di Linux.
Satu-satunya cara yang saya temukan untuk melakukan ini sejauh ini adalah dengan SSH ke Mac dan menggunakannya.
Di sisi lain, menurut @Steve McLeod (https://stackoverflow.com/a/55906962/28190) paket penginstal install4j memang menawarkan ini:
Penandatanganan kode terintegrasi pada Windows dan Mac OS X . Di bagian "Pengaturan Umum", install4j sekarang memiliki tab "Penandatanganan kode" tempat Anda dapat mengonfigurasi sertifikat penandatanganan kode untuk Windows dan Mac OS X. Perancangan kode akan diterapkan ke semua peluncur dan aplikasi penginstal di file media yang sesuai. Implementasi untuk penandatanganan kode bersifat lintas platform, sehingga Anda dapat menandatangani file media Windows dan Mac OS X dari server build Linux, misalnya.
Jadi secara teknis harus memungkinkan.