4 Stimmen

Eigene Verteilung: Neuinstallation einer App über eine bestehende, führt zu einem Fehler in der App

Ich habe eine Bewerbung für die interne Verteilung vorbereitet. Ich habe die Manifestdatei und eine einfache Downloadseite erstellt, um die Anwendung von einem persönlichen Server herunterzuladen.

Wenn die App nicht auf dem Gerät installiert ist, wird die Anwendung problemlos heruntergeladen und installiert. Wenn ich nach der Installation der App erneut auf die Schaltfläche "Herunterladen" drücke, fragt mich iOs wie beim ersten Mal, ob ich die App installieren möchte, und dann beginnt der Download.

Nachdem der zweite Download abgeschlossen ist, tippe ich auf das Symbol, aber das Programm weigert sich zu starten, und die Konsole des iPhone-Konfigurationsprogramms gibt folgende Meldung aus

The 'MyApp' bundle at /private/var/mobile/Applications/15F088EB-B996-48CE-8331-A5CE85CDD74F/myapp.app does not have an executable path. Please check the bundle's Info.plist file.

Seltsame Dinge:

1 - Wenn dieser Fehler auftritt, schalte ich das Gerät aus, indem ich die Ruhetaste einige Sekunden lang gedrückt halte, und starte das Gerät neu, damit die App wieder funktioniert.

2 - Nehmen wir an, ich habe eine myapp.app, deren Bundle-Version 1.0 auf meinem Server gehostet wird. Ich installiere sie zum ersten Mal auf dem Gerät und sie funktioniert. Dann aktualisiere ich die gehostete Version auf eine Bundle-Version 2.0 und führe den gleichen Download erneut durch, die App wird aktualisiert und ohne Probleme gestartet.

Frage 1: Irgendwelche Ideen? Frage 2: Gibt es eine Möglichkeit, mit diesem Versionsunterschied umzugehen? Ich meine, als einfache Abhilfe wäre es toll, wenn ich etwas anzeigen könnte wie: "Ihre Version ist auf dem neuesten Stand" und laden Sie das neue Paket nicht herunter

Danke!!!

1voto

Levend Punkte 36

Die Lösung, die für mich funktioniert hat, ist wirklich einfach. Bevor Sie eine neue Version bereitstellen, ändern Sie die Werte "Bundle version" und "Bundle version string, short" in der Datei Info.plist, um eine neue Version wiederzugeben. Wenn die installierte Anwendung zum Beispiel die "Bundle-Version" 1.0 hat, verwenden Sie 1.1. Dasselbe gilt auch für "Bundle version string, short".

1voto

dask78 Punkte 51

Ich hatte genau das gleiche Problem und habe mit Windows unzip und zip eine seltsame Lösung gefunden...

Die Ursache für dieses Problem war bei mir das Umpacken der Ipa mit einer kundenspezifischen Datei nach dem ersten Build. Das kann bei Ihnen funktionieren oder auch nicht, da ich die eigentliche Ursache Ihres Problems nicht kenne.

Meine ipa, Installationsplist und eine Installations-HTML-Datei werden auf einem internen Windows Server 2003 mit Tomcat gehostet.

Ich habe vergessen, dies hinzuzufügen, aber die verwendeten "zip/unzip"-Dateien stammen von Symbian Common Files...

Erforderliche Installationen: (Wir installieren diese standardmäßig als Teil der Build- und Provisioning-Systeme unserer Kunden)

  1. Perl (ActivePerl 5.6.1)
  2. S60 3RD EDITION SDK FÜR SYMBIAN OS (9.1)

LÖSUNG:

  1. Stellen Sie sicher, dass der Pfad " C:\Program Dateien \Common Dateien \Symbian\tools " und " \Perl\bin "
  2. Öffnen Sie eine Eingabeaufforderung am Speicherort der ipa-Datei.
  3. Entpacken Sie die ipa mit "unzip myapp.ipa". Danach sollten Sie den Ordner "Payload" sehen.
  4. Packen Sie das Paket mit "zip -r mynewapp.ipa Payload" neu ein.

und viola, bei mir kann die neu gezippte ipa über sich selbst installiert werden, ohne den Fehler zu verursachen, den wir beide gesehen haben.

Ich bin mir nicht sicher, ob ein anderes zip/unzip auf die gleiche Weise funktioniert wie die Symbian-Tools, aber da ich es für die Installation von Legacy-S60-Provisioning benötige, habe ich das verwendet. Damit ist mein Problem gelöst, und ich habe jetzt einen Bereitstellungsmechanismus skriptiert, der dieses Re-Zippen durchführt, wenn eine neue Version veröffentlicht wird.

Bei der Erstellung des Deployment-Skripts habe ich auch festgestellt, dass der Befehl zip andere Ergebnisse liefert, wenn er nicht aus demselben Verzeichnis wie die Dateien ausgeführt wird. Die resultierende ipa war in diesem Fall deinstallierbar. Stellen Sie also sicher, dass Sie in das Verzeichnis wechseln, das die ipa enthält, bevor Sie unzip und zip verwenden.

Ich hoffe, dass dies eine Hilfe ist.

0voto

KudoCC Punkte 6852

Sie sollten zwei Schlüssel (CFBundleVersion & CFBundleShortVersionString) in Info.plist angeben.

CFBundleVersion (String - iOS, OS X) gibt die Build-Versionsnummer des Bundles an, die eine Iteration (freigegeben oder nicht freigegeben) des Bundles kennzeichnet. Die Build-Versionsnummer sollte eine Zeichenkette sein, die aus drei nicht negativen, durch Punkte getrennten Ganzzahlen besteht, wobei die erste Ganzzahl größer als Null ist. Die Zeichenfolge sollte nur numerische Zeichen (0-9) und Punkte (.) enthalten. Führende Nullen werden von jeder Ganzzahl abgeschnitten und ignoriert (d.h. 1.02.3 ist gleichbedeutend mit 1.2.3). Dieser Schlüssel ist nicht lokalisierbar.

CFBundleShortVersionString gibt die Versionsnummer des Bundles an, die eine freigegebene Iteration der Anwendung kennzeichnet.

Sie können die CFBundleVersion jedes Mal um 1 erhöhen, wenn Sie eine Adhoc-Version für Ihren Test oder Benutzer mit der gleichen Release-Version erstellen (CFBundleShortVersionString)

Beispiel: Ihr CFBundleShortVersionString ist 1.2.3, Ihre CFBundleVersion ist 1000. Wenn Sie einen Fehler beheben und eine Adhoc-Version zum Testen erstellen, können Sie CFBundleShortVersionString in 1001 ändern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X