Come "annullare la registrazione" di un tipo di file / MIME con i servizi di avvio

3

Sto lavorando su un'applicazione basata su documenti in Cocoa, il file è di tipo bundle (una cartella che il Finder mostra come un singolo file molto simile a un'applicazione.)

Ho avuto tutto perfettamente funzionante, ma poi ho commesso l'errore di aggiungere un identificatore del tipo di nome di dominio inverso al mio tipo di file nel mio info.plist (qualcosa che ho poi appreso Apple avvisa esplicitamente di non fare here ). Bene, questo ha immediatamente rotto il mio tipo di file, i documenti della mia applicazione assomigliano alle cartelle nel Finder ora, quindi non esiste alcuna opzione 'apri' o 'apri con' su nessuno di essi e i dati all'interno sono esposti.

La rimozione dell'identificatore MIME dal mio plist e la ricostruzione non ripara la registrazione del tipo di file nei servizi di avvio, nemmeno dopo aver indicato esplicitamente LSRefresh durante la compilazione (è solo una build di debug).

Per favore, qualcuno di voi guru del terminale può dirmi come rimuovere il tipo di file dal database di Launch Services? Sono sicuro che se riuscirò a farlo, tutto verrà ripristinato al prossimo avvio dell'app.

    
posta Jef 18.04.2017 - 01:01
fonte

1 risposta

2

La registrazione e l'annullamento della registrazione di app e tipi di documenti avviene con:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister

Per ottenere aiuto con il comando usa semplicemente l'opzione h.:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -h

Nel tuo caso, proverei a utilizzare l'opzione di annullamento della registrazione:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -u <path to bundle>

A seconda della tua app / pacchetto potresti dover anteporre un sudo e / o riavviare in seguito.

Un altro passaggio consiste nel ricostruire completamente il database dei servizi di avvio:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user

e / o installare RCDefault.app e provare a rimuovere il MIME / bundle / qualunque cosa - che a volte è possibile .

    
risposta data 23.04.2017 - 06:05
fonte

Leggi altre domande sui tag