È possibile utilizzare FileMerge come app standalone?

6

Mi chiedo se esiste un modo per utilizzare FileMerge come strumento autonomo. Non voglio installare Xcode, dal momento che non ne ho bisogno. Voglio solo l'app FileMerge. È possibile?

    
posta Daniel 02.11.2013 - 14:39
fonte

2 risposte

8

FileMerge 2.8, che viene fornito con collegamenti Xcode 5.0.1 ai framework che si trovano all'interno del pacchetto Xcode.app. Le librerie condivise utilizzate da FileMerge possono essere visualizzate eseguendo il comando:

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

L'output di questo comando indica che FileMerge deve utilizzare i framework DevToolsInterface, DevToolsCore e 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)

Il prefisso @rpath indica che dyld sarà utilizzare l'elenco dei percorsi di esecuzione per cercare i framework a cui si fa riferimento. In particolare, FileMerge contiene "../OtherFrameworks" nell'elenco dei percorsi di esecuzione. Quando si trovano all'interno del pacchetto Xcode.app, questi framework sono esattamente dove FileMerge si aspetta che siano.

Tuttavia, se copi FileMerge dal pacchetto Xcode.app, FileMerge si bloccherà all'avvio. Ciò si verifica perché i framework di riferimento (di cui sopra) non si trovano nell'elenco dei percorsi di esecuzione, il che causa la chiusura di dyld con un errore di "image not found" . Il motivo per cui non è in grado di trovare tali framework di riferimento è che non esiste una cartella nel relativo percorso "../OtherFrameworks" e che i framework non esistono in altre cartelle elencate nel percorso di esecuzione.

Per usare FileMerge senza l'app Xcode installata, hai un paio di opzioni:

  1. Copia FileMerge nella posizione desiderata e copia il contenuto di /Applications/Xcode.app/Contents/OtherFrameworks/ in una delle cartelle a cui fa riferimento l'elenco dei percorsi di esecuzione ( ~/Library/Frameworks o /Library/Frameworks sono probabilmente un paio delle scelte migliori ).

  2. Copia FileMerge nella posizione desiderata e copia il contenuto di /Applications/Xcode.app/Contents/OtherFrameworks/ in "../OtherFrameworks" relativo all'app FileMerge (ad esempio, se FileMerge è a ~/Applications , copia la cartella "OtherFrameworks" a ~/OtherFrameworks

Modifica

La risposta di cui sopra consente a FileMerge di avviarsi, ma l'applicazione terminerà quando si tenta effettivamente di confrontare i file. Apparentemente l'applicazione sta cercando informazioni sulla piattaforma sul percorso ../Developer/Platforms/MacOSX.platform/Info.plist . Ciò significa che è necessario copiare Info.plist da /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist a ../Developer/Platforms/MacOSX.platform/Info.plist (relativo a FileMerge.app). Ecco alcuni passaggi che potrebbero essere utilizzati per copiare FileMerge in una cartella in ~/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
    
risposta data 02.11.2013 - 17:43
fonte
-3

Sì, questo è possibile.

Apri il Finder e cerca XCode.app. Fare clic con il tasto destro e quindi "Mostra contenuto pacchetto". Troverai una cartella chiamata "Applicazioni". Ora trascina File Unisci fuori da esso ed è possibile eliminare Xcode.

    
risposta data 02.11.2013 - 14:59
fonte

Leggi altre domande sui tag