8 votes

Est-il possible d'utiliser FileMerge en tant qu'application autonome ?

Je me demande s'il existe un moyen d'utiliser FileMerge en tant qu'outil autonome. Je ne veux pas installer Xcode, puisque je n'en ai pas besoin. Je veux juste l'application FileMerge. Est-ce possible ?

8voto

Jonathan Sampson Points 121800

FileMerge 2.8, livré avec Xcode 5.0.1, établit des liens avec les frameworks situés à l'intérieur du bundle Xcode.app. Les bibliothèques partagées utilisées par FileMerge peuvent être affichées en exécutant la commande :

otool -L /Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge

La sortie de cette commande indique que FileMerge doit utiliser les frameworks DevToolsInterface, DevToolsCore et DevToolsFoundation :

/Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge:
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1247.0.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1052.0.0)
    @rpath/DevToolsInterface.framework/Versions/A/DevToolsInterface (compatibility version 1.0.0, current version 3000.1.0)
    @rpath/DevToolsCore.framework/Versions/A/DevToolsCore (compatibility version 1.0.0, current version 2404.0.0)
    @rpath/DevToolsFoundation.framework/Versions/A/DevToolsFoundation (compatibility version 1.0.0, current version 3001.0.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 852.0.0)

Le préfixe @rpath indique que dyld utilisera la liste des chemins d'exécution pour rechercher les cadres référencés. Plus précisément, FileMerge contient "../OtherFrameworks" dans sa liste de chemins d'exécution. Lorsqu'ils sont situés à l'intérieur du bundle Xcode.app, ces frameworks sont exactement là où FileMerge s'attend à les trouver.

Cependant, si vous copiez FileMerge hors du bundle Xcode.app, FileMerge se plantera au lancement. Cela se produit parce que les frameworks référencés (référencés ci-dessus) ne sont pas dans la liste des chemins d'exécution, ce qui provoque le crash de dyld pour sortir avec une erreur de "image not found" . La raison pour laquelle il ne peut pas trouver les cadres référencés est qu'un dossier au chemin relatif "../OtherFrameworks" n'existe pas et les cadres n'existent pas dans les autres dossiers répertoriés dans le chemin d'exécution.

Pour utiliser FileMerge sans que l'application Xcode soit installée, vous avez plusieurs options :

  1. Copiez FileMerge à l'emplacement de votre choix, et copiez le contenu de /Applications/Xcode.app/Contents/OtherFrameworks/ à l'un des dossiers référencés dans la liste des chemins d'exécution ( ~/Library/Frameworks o /Library/Frameworks sont probablement les meilleurs choix).

  2. Copiez FileMerge à l'emplacement de votre choix, et copiez le contenu de /Applications/Xcode.app/Contents/OtherFrameworks/ d'être à "../OtherFrameworks" par rapport à l'application FileMerge (par exemple, si FileMerge se trouve à ~/Applications copier le dossier "OtherFrameworks" a ~/OtherFrameworks

Editer

La réponse ci-dessus permet de lancer FileMerge, mais l'application se termine lorsque vous tentez de comparer des fichiers. Apparemment, l'application recherche des informations sur la plate-forme au niveau du chemin d'accès ../Developer/Platforms/MacOSX.platform/Info.plist . Cela signifie qu'il est nécessaire de copier Info.plist de /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist a ../Developer/Platforms/MacOSX.platform/Info.plist (par rapport à FileMerge.app). Voici quelques étapes à suivre pour copier FileMerge dans un dossier à l'adresse suivante ~/Applications :

mkdir ~/Applications
cp -R /Applications/Xcode.app/Contents/Applications/FileMerge.app ~/Applications

cp -R /Applications/Xcode.app/Contents/OtherFrameworks/* ~/Library/Frameworks

mkdir -p ~/Developer/Platforms/MacOSX.platform
cp /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist ~/Developer/Platforms/MacOSX.platform

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X