2016-04-04 40 views
0

Ich versuche, eine Electron-basierte App an den Mac App Store zu senden. Um die App zu unterzeichnen ich dieses Skript bin mit (nach https://github.com/atom/electron/blob/master/docs/tutorial/mac-app-store-submission-guide.md):Einreichen der Electron App in den Mac App Store: Fehler "Ungültige Signatur"

#!/bin/bash 
# Name of your app. 
APP="MyApp" 
# The path of you app to sign. 
APP_PATH="MyApp.app" 
# The path to the location you want to put the signed package. 
RESULT_PATH="$APP.pkg" 
# The name of certificates you requested. 
APP_KEY="3rd Party Mac Developer Application: MYCOMPANY (XXX)" 
INSTALLER_KEY="3rd Party Mac Developer Installer: MYCOMPANY (XXX)" 

FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks" 

codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A" 
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/" 
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/" 
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/" 
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Framework.framework/Libraries/libnode.dylib" 
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Framework.framework/Electron Framework" 

# Signage of terminal-notifier 
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$APP_PATH/Contents/Resources/app/node_modules/node-notifier/vendor/terminal-notifier.app" 

if [ -d "$FRAMEWORKS_PATH/Squirrel.framework/Versions/A" ]; then 
    # Signing a non-MAS build. 
    codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Mantle.framework/Versions/A" 
    codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/ReactiveCocoa.framework/Versions/A" 
    codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Squirrel.framework/Versions/A" 
fi 
codesign -fs "$APP_KEY" --entitlements parent.plist "$APP_PATH" 

productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH" 

mit den beiden Berechtigungen Dateien: child.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>com.apple.security.app-sandbox</key> 
     <true/> 
     <key>com.apple.security.inherit</key> 
     <true/> 
    </dict> 
</plist> 

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

Nach dem Ausführen des Skripts verwende ich d den Application Loader, um die PKG-Datei an das MAS zu senden. Bis jetzt funktioniert es. Aber nach dem einreichenden Prozess empfange ich eine Mail von Apple mit dem folgenden Fehler:

Invalid Signature - This error occurs when you have signed your app's installer incorrectly. There are two certs required for this process: the "3rd Party Mac Developer Application" cert and the "3rd Party Mac Developer Installer" cert. When signing your package, you need to ensure that you are using the Installer cert to sign your package. Ensure that you are specifying this cert when submitting your app via the Xcode Organizer or when running productbuild from the command line.

ich verwenden, um die „3rd Party Mac Entwickler Installer“ cert das Paket zu unterzeichnen. Wie kann ich dieses Problem lösen?

Antwort

0

Ich würde empfehlen, überprüfen Sie electron-osx-sign. Aus den Auszügen Ihres Signierskripts ist es leicht zu sagen, wo der Prozess fehlgeschlagen ist. Also mit diesem Modul alle werden müssen Sie tun, sind:

$ electron-osx-sign path/to/my.app

Und der Rest bis Ansprüchen der Einstellung und verschiedene Versionen der enthaltenen Frameworks Unterzeichnung könnte für Sie getan werden.

0

Nachdem Sie das Paket von Electron-Packager generiert.
Sie sollten die info.plist im Paket bearbeiten. Fügen Sie ein Paar (Schlüssel, Wert) zu info.plist hinzu. Der Schlüssel ist "ElectronTeamId" und der Wert ist Ihre Team ID.
Um Ihre Team-ID zu finden, melden Sie sich im Apple Developer Center an und klicken Sie in der Seitenleiste auf Mitgliedschaft. Ihre Team-ID wird im Abschnitt "Informationen zur Mitgliedschaft" unter dem Namen des Teams angezeigt.

Verwandte Themen