Accéder au bundle d'une autre application

Bonjour,


J'écris un petit utilitaire qui a besoin de se renseigner sur une application qu'on lui donne à  traiter. J'ai essayé de créer un NSBundle sur la base du chemin de l'application, puis de lire son Info.plist à  l'aide de objectForInfoDictionaryKey. Mais j'obtiens ceci:


 


Attempt to load executable of a type that cannot be dynamically loaded for CFBundle 0x102212e60 </Applications/Doors.app> (executable, not loaded)


 


Mon intention est juste de lire passivement les renseignements sur l'application, pas de modifier quoi que ce soit. Mais comment faire? En tous les cas, pas comme je le fais...

 

Merci d'avance!

Mots clés:

Réponses

  • mpergandmpergand Membre
    juillet 2013 modifié #2

    Pas de problème:



    NSBundle* bundle=[NSBundle bundleWithPath:@/Applications/Preview.app];
    NSDictionary* infoDic=[bundle infoDictionary];
    NSArray* docs=[infoDic objectForKey:@CFBundleDocumentTypes];
    // ou NSArray* docs=[bundle objectForInfoDictionaryKey:@CFBundleDocumentTypes];




    Montre ton code !


     


    [EDIT]


    j'ai compris, pas dur... 



    [bundle load];

    Attempt to load executable of a type that cannot be dynamically loaded for
    CFBundle 0x307640 </Applications/Preview.app> (executable, not loaded)

  • berfisberfis Membre
    juillet 2013 modifié #3

    Entretemps, j'ai codé ça:



    ... NSBundle* myBundle = [NSBundle bundleWithPath:self.originApp];
    [myBundle load];
    self.identifier = [myBundle bundleIdentifier];
    NSDictionary *infoDictionary = [myBundle infoDictionary];
    self.version = [infoDictionary valueForKey:@CFBundleShortVersionString];

    D'un coup, ça a marché sans erreur. Pourtant j'ai laissé [myBundle load]... Quid?


     


    Bon l'idée c'est un outil ultra-simple pour fabriquer un .pkg à  partir d'une appli fonctionnelle. Je dois fournir ces .pkg à  un autre utilitaire qui installe des applications sur 70 postes... mais elle veut les applications sous forme de packages... C'est ainsi.


     


    Après je suppose que je vais devoir envoyer des commandes style terminal mais ça c'est une autre histoire...


     


    En tout cas merci, tu me confirmes que la première étape est franchie: récolter les paramètres de la commande...




  •  


    Bon l'idée c'est un outil ultra-simple pour fabriquer un .pkg à  partir d'une appli fonctionnelle. Je dois fournir ces .pkg à  un autre utilitaire qui installe des applications sur 70 postes... mais elle veut les applications sous forme de packages... C'est ainsi.


     




     


    Il va falloir que tu détail ce que tu compte faire dans l'histoire car le point de départ et ton objectif me font dire que ça sent mauvais. Explique ton CdC histoire de t'éviter un mur...


     


    Sinon pour créer des packages utilise http://s.sudre.free.fr/Software/Packages/about.html c'est le mieux. 

  • Hello yoann,


     


    Merci pour le tuyau, en effet Packages est ultra-simple d'emploi... et surtout elle fonctionne.  ;)


     


    L'utilitaire qui nécessite des packages s'appelle DeployStudio, je dois lui fournir les applications que je veux distribuer sur 70 postes sous forme de packages.




  •  


    L'utilitaire qui nécessite des packages s'appelle DeployStudio, je dois lui fournir les applications que je veux distribuer sur 70 postes sous forme de packages.




     


    Et sinon le scénario copy file or folder de DeployStudio ?


     


    À propos, DeployStudio est essentiellement fait pour du déploiement de système from scratch et non de la distribution d'application au cours de l'exploitation d'un réseau. Pour ça on préfère du Munki, StarDeploy ou tout simplement Apple Remote Desktop.


     


    Encore une fois j'aurais tendance à  dire, donne moi ton problème de base et non comment tu pense le résoudre si tu veux des reco sur comment faire ça au mieux...

Connectez-vous ou Inscrivez-vous pour répondre.