Déploiement Ad Hoc via iTunes

lgriffielgriffie Membre
09:14 modifié dans Apple Developer Programs #1
Bonjour à  tous,

Je suis en train de finaliser ma dernière application pour un client pour un projet qui s'est relativement bien passé sauf qu'aujourd'hui je rencontre une erreur qui est pour le moins étonnante.

En effet pour que mon client puisse apprécier le développement de son application tout le long du projet, je réalise des livraisons intermédiaires grâce au mode de distribution Ad Hoc et jusqu'à  maintenant ce mode fonctionne sans problème.

Sauf que la dernière livraison, lors de l'installation via iTunes le client rencontre le message suivant :

L'application n'a pas été installée sur l'iphone "nom de l'iphone" car ses ressources ont été modifiées


Bizarrement je n'ai pas ce message lorsque je réalise cette installation avec le même binaire et le même mode.

J'ai évidemment chercher sur google et j'ai rien trouvé.

Merci de votre aide.

Réponses

  • AliGatorAliGator Membre, Modérateur
    09:14 modifié #2
    Quand tu compiles une application iPhone, elle est signée ("Code Signing"), c'est à  dire pour faire simple qu'il réalise un checksum (une somme de contrôle) de l'ensemble du bundle de l'application et la valide avec un certificat. Le but est qu'on ne puisse pas ensuite modifier l'application ou plutôt qu'on puisse se rendre compte si elle a été modifiée (puisque dans ce cas la somme de contrôle ne sera plus valide).
    Ainsi si un petit malin voulait bidouiller le .app/.ipa de ton appli pour modifier des images ou pour cracker le code en le modifiant pour pirater ton appli ou modifier des ressources (comme le nom de l'auteur que tu aurais mis dans un plist ou autre, etc) il ne peut pas car alors la signature du code (la checksum, validée par un certificat) ne sera plus valide et iTunes s'en rendra compte tout de suite.

    C'est d'ailleurs cela que veut dire le message "car ses ressources ont été modifiées", ça veut dire que l'application que ton client essaye d'installer a été modifiée par rapport à  l'application que toi tu as compilée avec Xcode.

    Alors bien sûr dans ton cas la raison n'est pas que qqun a essayé de pirater ton application (à  moins que ton client ait fait une manipulation avant d'essayer d'installer ton appli genre modifier des fichier dans le dossier/bundle de l'appli mais j'en doute), mais plus probablement une corruption du package lors de l'envoi quand tu lui as filé le package par mail par exemple.
    Il y a aussi un aléa/bug connu entre divers outils utilisés pour compresser et décompresser le ZIP, si tu lui as filé l'appli compressée en ZIP par mail par exemple ça peut expliquer. En effet certains outils de décompression ZIP ne vont pas forcément avoir un algo pile poil comme l'outil qui a servi à  compresser le ZIP, rajoutant ou omettant par exemple un fichier invisible lors de la décompression...


    Le plus simple c'est donc :
    - Que tu fasses un "Clean" puis un rebuild de ton application iPhone pour être sûr d'avoir un bundle "propre"
    - Que tu copies le bundle de l'application sur une clé USB et la file au client qui va l'installer (autrement dit, sans passer par un ZIP intermédiaire)
    - Avant d'installer ton application, cela peut être une bonne chose également que ton client supprime de son iPhone l'ancienne version de l'application car quand on a se genre d'erreur, la présence d'une ancienne version qui viendrait perturber iTunes peut expliquer qu'il s'embrouille
    - Si tu ne peux pas filer l'appli par clé USB et est obligé de passer par le net pour le transfert, essaye par FTP, ou essaye un autre format de compression que ZIP (essaye de zipper avec un autre logiciel comme StuffIt par exemple ou essaye le format tar.gz ou .rar, ...)
  • lgriffielgriffie Membre
    09:14 modifié #3
    dans 1283001758:

    Le plus simple c'est donc :
    - Que tu fasses un "Clean" puis un rebuild de ton application iPhone pour être sûr d'avoir un bundle "propre"
    - Que tu copies le bundle de l'application sur une clé USB et la file au client qui va l'installer (autrement dit, sans passer par un ZIP intermédiaire)
    - Avant d'installer ton application, cela peut être une bonne chose également que ton client supprime de son iPhone l'ancienne version de l'application car quand on a se genre d'erreur, la présence d'une ancienne version qui viendrait perturber iTunes peut expliquer qu'il s'embrouille
    - Si tu ne peux pas filer l'appli par clé USB et est obligé de passer par le net pour le transfert, essaye par FTP, ou essaye un autre format de compression que ZIP (essaye de zipper avec un autre logiciel comme StuffIt par exemple ou essaye le format tar.gz ou .rar, ...)


    Avant de poster j'avais réalisé les actions suivantes

    - J'ai fais un Clean all target histoire de ne pas avoir d'erreur,
    - Demande au client de supprimer à  la fois dans iTunes ET dans l'iPhone,
    - J'avais regénéré le certificat (au cas où) et j'ai changé son nom pour éviter la reprise de l'ancien par iTunes.

    Toutes ces actions n'y ont rien fait. L'histoire du ZIP me paraà®t vraiment pertinente car le client est sous windows. Et quand j'ai fais l'installation moi-même j'ai dézippé l'archive avec mon mac (qui a servi à  construire l'archive).

    Je demande au client de tester de nouveau et je confirme.

    Merci
  • AliGatorAliGator Membre, Modérateur
    août 2010 modifié #4
    dans 1283002170:
    Toutes ces actions n'y ont rien fait. L'histoire du ZIP me paraà®t vraiment pertinente car le client est sous windows.
    Oui ça m'étonne pas je reconfirme, car ce pb avec le ZIP est un bug connu dans Vista et Windows 7 qui corrompt le zip à  l'extraction.

    Les solutions les plus simples sinon c'est :
    - soit que ton client utilise donc un autre logiciel pour décompresser le ZIP que le truc intégré à  son Windows
    - soit créer un fichier .ipa (qui est en fait une archive ZIP au contenu structuré d'une certaine manière et dont on a changé l'extension) que ton client pourra directement faire glisser dans iTunes (sans la faire décompresser par son Windows 7 ou Vista, donc) ce qui contournera le problème.


    Pour créer un fichier .ipa (à  envoyer au client) à  partir de ton bundle ".app" :
    - Crée un dossier nommé exactement "Payload" et met tout ton ".app" dans ce dossier
    - Compresse ce dossier "Payload" en ZIP, puis changes l'extension ".zip" en ".ipa"

    Optionnellement avant de zipper il est possible de mettre le fichier "iTunesArtwork" (qui est l'image de ton application à  afficher dans iTunes, format 512x512 à  sauver en JPEG ou PNG sous le nom "iTunesArtwork" sans extension) à  la racine du zip à  côté du dossier "Payload" pour avoir une belle icône dans iTunes plutôt que l'icône générique de l'app... mais bon
  • lgriffielgriffie Membre
    09:14 modifié #5
    dans 1283006541:

    dans 1283002170:
    Toutes ces actions n'y ont rien fait. L'histoire du ZIP me paraà®t vraiment pertinente car le client est sous windows.
    Oui ça m'étonne pas je reconfirme, car ce pb avec le ZIP est un bug connu dans Vista et Windows 7 qui corrompt le zip à  l'extraction.

    Les solutions les plus simples sinon c'est :
    - soit que ton client utilise donc un autre logiciel pour décompresser le ZIP que le truc intégré à  son Windows
    - soit créer un fichier .ipa (qui est en fait une archive ZIP au contenu structuré d'une certaine manière et dont on a changé l'extension) que ton client pourra directement faire glisser dans iTunes (sans la faire décompresser par son Windows 7 ou Vista, donc) ce qui contournera le problème.


    Pour créer un fichier .ipa (à  envoyer au client) à  partir de ton bundle ".app" :
    - Crée un dossier nommé exactement "Payload" et met tout ton ".app" dans ce dossier
    - Compresse ce dossier "Payload" en ZIP, puis changes l'extension ".zip" en ".ipa"

    Optionnellement avant de zipper il est possible de mettre le fichier "iTunesArtwork" (qui est l'image de ton application à  afficher dans iTunes, format 512x512 à  sauver en JPEG ou PNG sous le nom "iTunesArtwork" sans extension) à  la racine du zip à  côté du dossier "Payload" pour avoir une belle icône dans iTunes plutôt que l'icône générique de l'app... mais bon

    Merci pour l'information de iTunesArtwork. J'étais passé à  côté dans la documentation.  :o
  • lgriffielgriffie Membre
    09:14 modifié #6
    Bon mon problème n'est pas lié au zip car même en transmettant par FTP le fichier .app le problème reste entier.
Connectez-vous ou Inscrivez-vous pour répondre.