# Java App im Mac Store veröffentlichen



## JanB (7. Jun 2017)

Hallo,

zurzeit versuche ich mithilfe des javapackagers einen signierten Paket installer zu erstellen, um meine App im Mac Store veröffentlichen zu können. Bis jetzt bin ich so vorgegangen:

1. Die nötigen Zertfikate für die App und den Installer anfordern und in die Schlüsselverwaltung laden

2. das Icon mit allen nötigen Größen erstellen

3. Die entitlements Datei erstellen (ist nur eine Test app, daher nur sanbox):

```
<?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>com.apple.security.app-sandbox</key>
        <true/>
    </dict>
</plist>
```

4. PKG erstellen:

```
javapackager -deploy -srcFiles Test.jar -native mac.appStore -BsystemWide=true -title Titel -name Name -outdir /Users/mac/Desktop/ -outfile temp -BappVersion=1.0.0 -appclass app.example.main -Bidentifier=app.example.main -Bicon=/Users/mac/Desktop/App.icns -Bmac.app-store-entitlements-path=App.entitlements -Bmac.category=public.app-category.business
```

Soweit so gut ....
Das Erstellen verläuft fehlerfrei, wenn ich jetzt aber versuche, die App via ApplicationLoader hochzuladen, bekomme ich folgende Meldungen:

ERROR ITMS-90511: "CFBundleIdentifier Collision. The Info.plist CFBundleIdentifier value 'com.oracle.java.8u131.jdk' of 'Name.app/Contents/PlugIns/Java.runtime' is already in use by another application."
ERROR ITMS-90296: "App sandbox not enabled. The following executables must include the "com.apple.security.app-sandbox" entitlement with a Boolean value of true in the entitlements property list: [( "app.example.main.pkg/Payload/Name.app/Contents/MacOS/Name", "app.example.main.pkg/Payload/Name.app/Contents/PlugIns/Java.runtime/Contents/Home/jre/lib/jspawnhelper" )] Refer to App Sandbox page at https://developer.apple.com/devcenter/mac/app-sandbox/ for more information on sandboxing your app."
Der erste Fehler ließ sich durch einen einfachen Umweg lösen: Ich änderte vor den Prozess einfach den bundle identifier in der plist.
Laut diesem Video organisiert javapackager die Dateisignierung vollkommen alleine, daher ist der zweite Fehler sehr unverständlich, zumal ich auf diesen Prozess 0 Einfluss habe.

Generell gibt es sehr wenig Informationen zu diesem Thema, folgende Seiten habe ich bisher gefunden:

http://speling.shemnon.com/blog/2014/04/10/getting-your-java-app-in-the-mac-app-store/ --> gleicher Fehler wie oben
http://www.intransitione.com/blog/take-java-to-app-store/ --> AppBundler ist offziell nicht mehr verfügbar
Hat jemand Erfahrung mit den javapackager und weiß das Problem zu lösen?
Danke.

Jan


----------

