Suche deutsche (Kurz-)Anleitung, ein Programm in den App-Store zu bringen

Ich babe mir bereits vor ca. einem Monat einen Developer-Account für 99,-$ bei Apple zugelegt, da ich jetzt doch mal meine Programme noitfizieren und zertifizieren (waren das die beiden Begriffe?) lassen möchte. Jedenfalls soll es für die Anwender einfacher werden und die Sicherheitsmeldungen von Apple unterbleiben.
Schon etwas länger habe ich App Wrapper 4.
Damit habe ich eigentlich alles, was mir die meiste Arbeit abnehmen sollte (denke ich). Blöd nur, dass es sich dann doch als aufwändiger heraus gestellt hat, als sich angenommen habe.

Als ich mir den Account zugelegt habe, hatte ich zumindest noch Zeit, dass ich feststellen musste, dass ich noch irgendwelche Zertifikate anlegen/erzeugen und diese dann irgendwie in den App Wrapper bekommen muss. Da habe ich dann auch noch eine recht umfangreiche (so schien es mir) Hilfe im App Wrapper gefunden. Leider alles in Englisch und viel zu lesen.

Die letzten Wochen waren dann wieder recht arbeitsreich und die Enkelkinder gehen halt auch vor, da bin ich nicht mehr dazu gekommen, mich dessen anzunehmen.

Wie es aktuell aussieht, habe ich Morgen vormittag und Abend wieder mal etwas mehr Zeit, die ich diesem Thema widmen möchte. :slight_smile:

Hat jemand einen Tipp, wie ich es möglichst schnell einrichte, meinen Entwickleraccount zu nutzen um meine Anwendungen mit den von Apple vorgesehenen Sicherheitsmerkmalen auszustatten?

Am liebsten wäre mir eine Anleitung in deutsch.

Ich denke, hier sind auch genügend Anwender von App Wrapper. Vielleicht gibt es da einen hilfreichen Tipp. Oder ist das gar nicht so kompliziert, wie ich es als ersten Eindruck wahrgenommen habe?

Gruß, Stefan Mettenbrink.

Ein Anleitung in Deutsch kenne ich leider nicht.

Zu den notwendigen Vorarbeiten gehört einerseits die interne Umstellung fü die im Mac App Store vorgeschriebene Sandbox - also kein freier Zugriff mehr ins Dateisystem, alles liegt an für Anwender unsichtbaren Stellen. Das sollte man vorab gründlich ausprobieren - macht sonst richtig Ärger…

Im Developer Bereich der Apple Webseite muss dann vorab das Programm eingetragen werden - eindeutige Bundle-Id und ein paar Angaben dazu.

Die Einstellungen im AppWrapper fangen dami an das als Ziel der Mac App Store ausgewählt wird. Dann schauen, ob alle benötigten Zertifikate im Schlüsselbund hinterlegt sind. Falls nicht: über Xcode > Preferences > Account Manager die fehlenden Zertifikate beziehen. Xcode legt die dann gleich richtig im Schlüsselbund ab.

Die weitere Einstellungen im AppWrapper sind dann programmspezifisch, z.b. ob Entitlements benötigt werden, welche Zugriffsrechte das Programm haben soll, das Icon etc.

Zum Hochladen an Apple nutze ich dann den von Apple bereitgestellten Transporter - aber das geht wohl auch direkt im AppWrapper…

Ich würde ja vorschlagen bei Problemen/Unklarheiten hier zu fragen. Hier sind ja einige, die ihre Programme im Mac App Store haben…

Wenn im Ergebnis dann eine Kurzanleitung dabei rauskommen sollte: prima :wink:

Die Zertifikatsverwaltung über XCode ist der einfachste Weg. Und meine Überlegung zu diesem Thema ist:
Wenn sowieso nun jährlich 99 Eier bezahlt werden müssen, um notarisieren zu können,
könnte ich den AppStore-Weg wohl auch gehen.
Also werde ich hier mitlesen…

Danke für Deine Beschreibung.
Allerdings finde ich die Regeln zum Sandboxing eine arge Einschränkung.
Das passt eigentlich überhaupt nicht zu meinem Bedarf. Mein Programm bietet die Möglichkeit, per d&d (oder Dateiauswahl) Dateien dem Datenbestand zuzuweisen. Diese Dateien werden dann aus dem Ursprungsordner in einen dafür vom Anwender gewählten Ordner kopiert und intern darauf verwiesen.
Die vom Anwender genutzten Dateien können ebenfalls in einem vom Anwender vorgegebenen Verzeichnis liegen (üblicherweise in einem Unterordner des Dokumenteordners). Auch kann der Anwender solche Dateien zusammenführen. Oder den Datenbestand in einem Austauschformat exportieren. Auch hier kann er den Ausgabeordner selbst wählen.

So wie ich die Sandboxing-Regeln in Deiner kurzen Beschreibung verstehe, soll das nicht gehen. Das hatte ich bisher nur für iOS und iPadOS so verstanden. Aber nicht unter macOS.
Wie machen das denn dann andere Programme. Ohne jetzt nachgesehen zu haben, gehe ich davon aus, dass ich in Pages genau die oben erwähnten Möglichkeiten habe. Wie kann es dann den Weg in den App-Store geschafft haben?

Wenn die Regeln tatsächlich so strickt sind, wie es sich für mich angehört hat, wird das nichts mit dem App-Store.

Ich beschränke mich also erst mal darauf, mein Programm zu signieren. Der Hinweis die benötigten Zertifikate in Xcode anzulegen ist da sicher der erste Ansatz. Ich meine, da war ich auch schon, wusste aber nicht, was ich da alles anlegen muss. Zumal die Begriffe nicht so recht zu meinen vorgefundenen Begriffen passten. Ich glaube, ich musste auch mehrere verschiedene Zertifikate anlegen. Da habe ich sicher etwas falsch gemacht.
Was genau benötige ich denn um mein Programm zu signieren (für Gatekeeper) und zur Zertifizierung, dass es von einem eingetragenen Entwickler stammt?

Das würde mir erst mal reichen. Dann kann ich es auf meiner Homepage weiterhin normal anbieten und die Anwender bekommen die Sicherheitswarnungen nicht mehr.

Wenn ich das mit App Wrapper machen kann, wäre das wohl schon der halbe Weg zur Einreichung in den Store. Ich hatte mir seinerzeit mal etwas Zeit genommen und in App Wrapper schon so ziemlich alles notwendige eingegeben. Es fehlten halt noch Zertifikate. Dafür wollte ich seinerzeit kein Geld ausgeben.

Zu den Dateizugriffen unter macOS habe ich das gerade gefunden:

Das sieht jetzt nicht nach einer generellen Einschränkung aus. Wenn der Anwender aus der App heraus auf alle Ordner des Benutzers zugreifen kann, wäre das OK für mich.

Evtl. habe ich mich da etwas unklar ausgedrückt: nur der Zugriff ohne Benutzerzustimmung ist ausserhalb der Sandbox nicht möglich. Über Datei Öffnen/Sichern Dialoge kann auch ins normale Dateisystem zugegriffen wetden.

Apples eigene Programme sind da übrigens ein ganz schlechter Vergleich: die dürfen deutlich mehr als Programne von Drittanbietern, haben u.a. auch Zugriff auf interne APIs etc.

Signieren und notarisieren ist deutlich einfacher als etwas in den MAS einzustellen.

An sich müsste der AppWrapper bei einem Vorabcheck anzeigen, welche Zertifikate fehlen…

Auf jeden Fall muss bei Apple für den AppWrapper ein programmspezifisches Passwort hinterlegt werden, sonst werden Einsendungen via AppWrapper nicht akzeptiert. Die Stelle dafür war damals etwas versteckt (oder ich habe mich doof angestellt)…

Ein weiteres Problem sind die Security Scoped Bodgemarks (eh Bookmarks). Aus irgendeinem Grund sind Referenzen auf Ordner und Dateien gefährlich. Ich habe mir irgendwann den Code aus dem Forum herausgefischt. Wahrscheinlich von Sam.

Hab gerade mal nachgeschaut, was es so alles an Zertifikaten braucht, wenn man etwas signieren/notarisieren bzw. im Mac App Store freigeben möchte - “Testflight” aus dem MAS ist nicht dabei, da ich das nicht nutze:

Allgemein:
Apple Worldwide Developer Relations Certification Authority
Developer ID Certification Authority

Für die Veröffentlichung auf der eigenen Webseite:
Developer ID Application
Developer ID Installer

Für die Veröffentlichung im Mac App Store:
Apple Distribution
3rd Party Mac Developer Installer

Wenn alles korrekt eingestellt ist, sollte ein (Vorab-)Check in AppWrapper ungefähr so aussehen:

Auch wenn ich noch nicht wirklich weiter gekommen bin, melde ich mich mal mit einem kurzen Update.

Thomas Tempelmann hat mich auf SD NOTARY aufmerksam gemacht (Dank an dieser Stelle dafür):
“Ich finde das Programm “SD Notary 2” hier viel einfacher (weil weniger Optionen) - das signiert und notarisiert, und fertig.”

Würde mir ja erst mal genügen. Also einfach mal geladen und gestartet. Leider meldet mir das, ich hätte kein Xcode (Xcode 14 ist installiert und läuft). Die Vorgängerversion (hatte ich mir auch geladen) hat das Problem nicht und zeigt mir schon mal einen Dialog mit Dingen die mir fehlen. Z. B. die "Developer ID signing identity).

Der Dialog ist deutlich weniger umfangreich als bei App Wrapper, half mir aber nicht wirklich weiter. Ich habe dann mal den AW gestartet um zu vergleichen.
Das was mr angezeigt wurde war von vor über einem Jahr und ich hatte keine Ahnung, was ich da alles gemacht hatte. Also einfach nochmal angefangen und mit cmd-n ein neues Projekt begonnen. Ein kleines Tool von mir dort in den Dialog gezogen und dann einen Dialog erhalten, der mir einen Haufen Einstellungen abfordert.

Oberster Punkt: Code signing
Also dort mal die Optionen gewählt und ein paar Angaben gemacht. War für mich selbsterklärend.
Dann das Auswahlmenü benutzt um mein “Code signing team” zu wählen.
Ein erforderliches Zertifikat muss man unter https://developer.apple.com/account anlegen. Habe ich geschafft, kann also nicht schwer sein. :slight_smile:
Danach muss man das Zertifikat herunterladen und per Doppelklick in das Schlüsselbund übernehmen. Dann kann man es in AW übernehmen.
Leider habe ist hier auch gleich meinen ersten Fehler bemerkt. Ich habe wohl beim Anlegen des Accounts Daten per copy/paste eingetragen und nun ein Zertifikat “Stefan Mettenbrink Umtausch bis 1” (:man_facepalming:)

Wie sich heraus gestellt hat, wurde das aus meinem “Teamname” (?) übernommen. Jedenfalls ist das etwas, was auch dem Anwender angezeigt wird und so ganz sicher nicht bleiben sollte. Ändern kann man das nur über den Apple Support. Dafür darf man sich auch noch mit einem Foto des Personalausweises identifizieren. Also macht das besser nicht nach. :wink:
Das ganze dauert dann auch gleich mehrere Tage. Vor allem, wenn der Support auch noch einen Rechtschreibfehler einbaut, den man auch wieder korrigieren lässt.

Inzwischen habe ich die Übersicht verloren und weiß nicht mehr genau, wo ich welche Informationen finde/gefunden habe (Ich hatte duzende Apple Seiten auf). Zumindest finde ich in meinen Accountangaben “Umtausch…” nicht mehr.

Allerdings habe ich noch immer unter Certificate List ein Zertifikat mit dem Namen “Stefan Mettenbrink Umtausch bis 1” :frowning:
Ich habe nicht herausgefunden, wie ich das umbenennen kann und wenn ich ein neues anlegen möchte, kann ich eines hochladen, wüsste aber nicht, woher ich das nehmen sollte.

Ich habe den Eindruck, dass ich mit AppWrapper und den dortigen Angaben zu fehlenden Informationen gut weiter käme. Allerdings möchte ich das nicht mit dem blöd benannten Zertifikat machen. Wer weiß, wo man das später noch alles sieht.
Leider habe ich keine Möglichkeit gefunden, das zu ändern, zu löschen oder neu zu erzeugen.

Falls jemand bis hier mitgelesen hat:
Irgendwelche Tipps?

Ja, der beste Tip den ich bekommen habe und auch gerne weitergebe ist Xcode für das gesamte Zertifikathandling (Erstellung, Download, Einbinden in das Schlüsselbund, etc) zu benutzen.
In Xcode zu Preferences und dort zu Accounts gehen, da gibt es dann für die hinterlegte Entwickler-Identität zwei Tasten, von denen “Manage Certificates” die Richtige ist. In einer Liste werden die auf dem Rechner installierten Zertifikate angezeigt (und auch gezeigt ob der “private key” verfügbar ist). Mit dem Plus Symbol links unter der Liste lassen sich dann Zertifikate neu anfordern. XCode kümmert sich dabei um alles (CSR erstellen, Zertifikat beantragen, herunterladen und korrekt ins System einbinden).

Wenn das erledigt ist und zumindest die Zertifikate “Developer ID Application” und Developer ID Installer" für die Verteilung per Webseite verfügbar sind, dann geht es wieder zurück zum AppWrapper, der die neuen Zertifikate dann auch erkennt und nutzt…

Das ist doch mal ein guter Tipp.
Ich hatte Xcode bisher gar nicht genutzt und lediglich installiert, weil ich es für die Signierung/Notifizierung benötige.

Gestern kamen die Enkelkinder, da habe ich dann auch nichts mehr diesbezüglich geschafft. Im Moment schlafen sie noch, mal sehen wie viel Zeit mir bleibt.
Ich habe den Eindruck, früher habe ich mehr Freizeit am Rechner verbracht :slight_smile:

In Xcode sieht es eigentlich gut aus.
Ich habe dort meinen Account und konnte dort auch sehen, dass das Team richtig benannt ist.
Unter Manage Certificates habe ich einfach mal alle Varianten hinzugefügt, die mir das Auswahlmenü anbietet :slight_smile:
Zwischenzeitlich habe ich im Schlüsselbund alle Developer Zertifikate gelöscht.
In Xcode wird mir darum auch als Staus der Zertifikate “Not in Keychain” angezeigt.
Es gibt im Einstellungsdialog von Xcode im Bereich Accounts auch einen Button “Download Manual Profiles” der dann auch irgendwas macht. Ich weiß aber nicht, wohin das geladen wird.
Jedenfalls nicht direkt in die Schlüsselbundverwaltung und nicht im Downloadordner.

Ahhh… ich habe neue Zertifikate auf der Developer Seite von Apple (zusätzlich zu meinem falsch benanntem Zertifikat). Mal schauen …

App Wrapper zeigt nur noch 3 Warnungen :slight_smile:
Mac App Store Submission
Certificate has invalide “Trust” settings or is self-signed

3rd Party Mac Developer Installer
Not Found
Da gibt es einen Download Button, der öffnet dann aber wieder meine Zertifikate Seite bei Apple. Die Zertifikate hatte ich gerade herungter geladen und per Doppelklick in das Schlüsselbund übernommen.

Apple Development: Stefan Mettenbrink (ZA…
Certificate has invalide “Trust” settings or is self-signed


Oh, App Wrapper hat einen Button “Diagnostics Report …”. Da gibt viel englischen Text. Offenbar mit diversen Tipps. Mals schauen, ob mir das hilft.

Hier mal der Text (Textstellen, die möglicherweise schützenswerte Daten enthalten habe ich durch #***# ersetzt):
macOS version 13.4 (build 22f66)
Xcode and required tools check
1 Xcode tools are not configured correctly. Please open Xcode, select “Preferences” from the “Xcode” menu. Select “Locations” from the toolbar, and choose a version from the menu next to “Command Line Tools”.
1 xcode-select: error: tool ‘xcodebuild’ requires Xcode, but active developer directory ‘/Library/Developer/CommandLineTools’ is a command line tools instance
0 /usr/bin/codesign 47.100.2
0 /Library/Developer/CommandLineTools/usr/bin/codesign_allocate 949.0.1
0 /usr/bin/productbuild 830.1
0 /usr/sbin/spctl 448.120.9
0 /Library/Developer/CommandLineTools/usr/bin/stapler 31.0.1
2 Notarization issue: 72 xcrun: error: unable to find utility “altool”, not a developer tool or in PATH
-3 iTMSTransporter failed to find, even at backup location “/Library/Developer/CommandLineTools/Contents:Applications:Application Loader.app:Contents:itms:bin:iTMSTransporter”.
0 /Users/Shared/awhelper 362.2.0.5.4
Xcode licensed: 1 xcode-select: error: tool ‘xcodebuild’ requires Xcode, but active developer directory ‘/Library/Developer/CommandLineTools’ is a command line tools instance

— Stefan Mettenbrink (##)
!5 AD 2024-07-08 login-db !Certificate has invalid “Trust” settings or is self-signed.; "Apple Development: Stefan Mettenbrink (#
#)"
!3 AA 2024-07-08 login-db !Certificate has invalid “Trust” settings or is self-signed.; “Apple Distribution”
✓ WA 2027-02-02 login-db “Developer ID Application”
✓1 WA 2027-02-02 login-db “Developer ID Application”
✓2 WI 2027-02-02 login-db “Developer ID Installer”

— Intermediate authority certificates
! 2023-02-07 login-db !Certificate Has Expired; “Apple Worldwide Developer Relations Certification Authority” ##
! 2023-02-07 System !Certificate Has Expired; “Apple Worldwide Developer Relations Certification Authority” #
#
✓ 2027-02-02 Unknown “Developer ID Certification Authority” #*#

Das hilft mir jetzt nicht wirklich :frowning:
Hat jemand eine Idee?
Auf der Apple Zertifikate Seite gibt es noch immer das Zertifikat mit “Umtausch 1” im Namen. Ich kann das nicht löschen. OK, ich muss es ja auch nicht nutzen. Ich hätte es aber schon gern aus der Liste.

Ich habe mir noch mal SD Notary angesehen und dort ein kleines Tool per d&d auf das App Icon gezogen. Die erforderlichen Angaben waren selbsterklärend.
Lediglich das “app-specific-passwort” nicht. Allerdings hatte ich das irgendwann mal angelegt und noch den Zettel liegen :slight_smile:
Also lets go - Submitt …

Wieder ein Fehler:
08:42:13.287: Checking if Apple ID, key for app-specific password in login keychain, and team provider are in sync…
08:42:13.448: Unknown problem using altool. Check that the app-specific password, Apple ID, and team provider name are correct.

Hmmm… doch das falsche app-specific password?
Ich tippe eher auf Probleme mit dem Utility “altool”. Das hat ja auch App Wrapper bemängelt:
|2|Notarization issue: 72 xcrun: error: unable to find utility altool, not a developer tool or in PATH|
|—|—|
|-3|iTMSTransporter failed to find, even at backup location /Library/Developer/CommandLineTools/Contents:Applications:Application Loader.app:Contents:itms:bin:iTMSTransporter.|

Wie behebe ich das?

Ich glaube mich erinnern zu können, das XCode dafür sog. Command Line Tools installieren muß. Das sollte es beim Start fragen.

Welche Zertifikate wofür benötigt werden hatte ich weiter oben schon mal erwähnt.

Meine Empfehlung wäre es wirklich, Zertifikate nur über XCode zu verwalten, nicht direkt über die Apple Webseite (Ausnahme: einmaliger Download des Worldwide Developer Relations Intermediate Certificate, wenn Xcode das nicht von alleine gemacht hat).

Die Command Line Tools werden auf jeden Fall benötigt, die braucht m.W. auch Xojo zum Signieren.

Command Line Tools:
Xcode > Preferences > Locations, dort dann bei Command Line Tools schauen, welche Version installiert ist (bei mir die zur XCode passende 14.2 auf Monterey)

Apple Worldwide Developer Relations Intermediate Certificate Expiration

Download (Worldwide Developer Relations - G3 (Expiring 02/20/2030 00:00:00 UTC))
https://www.apple.com/certificateauthority/

Das wird es sein.
Da ich Xcode nicht nutze, habe ich sicher nur die Installation gestartet und auf zusätzliche Tools “die ich nicht benötige” verzichtet. :roll_eyes:

In Xcode habe ich nichts gefunden, was mir die nachträgliche Installation der Command Line Tools ermöglicht. Wie bekomme ich die nachträglich installiert?

ich sehe gerade, Thomas hat dazu etwas geschrieben. Ich schau mal…

Ich habe die Command Line Tools nicht gefunden. Aber hier: stackexchange.com gab es einen Hinweis.
Ich habe dort “Install Command Line Developer Tools.app” gefunden, aber es lässt sich nicht starten :frowning:

Ich habe die Tools zum Download bei Apple gefunden:
https://developer.apple.com/download/all/
Installation läuft …

In Xcode habe ich alle Zertifikate anlegen können und die wurden auch im Schlüsselbund angezeigt. Leider wird den Zertifikaten Apple Development und Apple Distribution nicht vertraut.
Ich habe sie im Schlüsselbund gelöscht und in Xcode neu angelegt. Hilft aber nicht.

Irgendwie komme ich nicht weiter. Ich mach mal Pause.

“Apple Distribution” wird für den Vertrieb im Mac App Store benötigt, “Apple Development” für Entwicklerversionen - sind also beide nicht unbedingt noitwendig, wenn man nur die Veröffentlichung auf der Webseite plant…

Da es sich um eine von oben nach unten fortsetzende Vertrauenskette handelt, würde ich mal schauen, ob “Apple Worldwide Developer Relations Certification Authority” und “Developer ID Certification Authority” korrekt installiert und noch nicht abgelaufen sind…

Für hartnäckige Fälle gibt es von Greg das “Profile Triage”: Greg O'Lone - Xojo Products um Fehlern bei der Zertifikatskette auf die Spur zu kommen…