Dato un certo problemino che ho da tempo con il mac, ho fatto delle ricerche.
Avete presente quei link particolari a protocolli particolari che avviano applicazioni particolari?
Gli URL (Uniform Resource Locator) sono solitamente indirizzi web, mentre gli URI (Uniform Resource Identifier) sono appunto utilizzati dalle applicazioni per facilitare i collegamenti a vari tipi di documenti, oppure per effettuare delle azioni.
Alcuni esempi di URI possono essere:
- ftp://ftp.is.co.za/rfc/rfc1808.txt -- schema per servizi FTP
- http://www.math.uio.no/faq/compression-faq/part1.html -- schema per servizi HTTP
- mailto:mduerst@ifi.unizh.ch -- schema per indirizzi di posta elettronica
- news:comp.infosystems.www.servers.unix -- schema per newsgroup e articoli Usenet
- telnet://melvyl.ucop.edu/ -- schema per servizi interattivi telnet
- irc://irc.freenode.net/wikipedia-it -- schema per IRC
Queste tipologie di URI sono strettamente legate alle applicazioni
che gestiscono certi tipi di URI. Cliccando su un link del tipo irc:// ,
se avete un client irc, esso si aprirà, cercando di connettersi al
server e al canale specificati nel link. Gli uri telnet:// apriranno un client telnet, e così via.
Il problema principale degli URI, sono le associazioni alle applicazioni, infatti, una volta installate più applicazioni capaci di ricevere ed elaborare un determinato URI, può risultare difficile impostare l'applicazione predefinita per un certo URI.
Ci sono delle utility apposite per gestire le applicazioni predefinite, come per i tipi di file. Molto probabilmente un'applicazione che permette di impostare le associazioni ai tipi di file, fornirà delle funzionalità per gestire anche l'associazione degli URI alle applicazioni.
E' il caso di RCDefaultApp, applicazione freeware per mac, utilizzabile dal pannello delle preferenze di sistema. E' in italiano e funziona anche su Leopard.
Anche se non ne avete immediato bisogno, vi consiglio di provarla, ci si scoprono delle cosette interessanti (per esempio che google update registra un suo URI, google-updater://).
Volendo entrare nello specifico, Mac OS X ha un sistema piuttosto particolare e pure ben nascosto, per la gestione dei predefiniti. Trattasi del Launch Service Database. Se avete installato sul vostro mac i Developer Tools, avrete un documento in formato pdf fin troppo esaustivo che tratta l'argomento, vi basterà cercare "LaunchServicesConcepts" in spotligth, oppure, raggiungere il documento al path:
/Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/\
Documents/documentation/Carbon/Conceptual/LaunchServicesConcepts/LaunchServicesConcepts.pdf
Vi sarà sicuramente utile se siete dei programmatori. In caso non lo siate, l'unica cosa che vi puo' risultare utile, è capire come resettare il database in questione. E' infatti possibile che, per problemi di installazione/disinstallazione di un'applicazione, ci siano delle voci doppie nel menù a tendina "Apri con". La cosa, naturalmente si rivela utile anche in caso voi vogliate semplicemente fare pulizia, magari per uno dei seguenti motivi:
- Con il doppio click su un file, si apre l'applicazione sbagliata.
- L'icona di un tipo di file, di una cartella, o di un altro oggetto è sbagliata.
- Errore del Finder numero -10660. (Si ottiene anche quando si cerca di aprire un documento, al quale è associata un'applicazione che al momento è nel cestino).
Potete cancellare il Launch Service Database tramite il seguente comando, da riga di terminale.
- Su Leopard digitate:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister \ -kill -r -domain local -domain system -domain user
- Altrimenti, dovete cercare il file lsregister, utilizzando il comando:
locate lsregister
Una volta ottenuto il path, lanciate il programma con i seguenti parametri:
-kill -f -r -domain local -domain system -domain user
Per un metodo alternativo, seguite le istruzioni in questa pagina.
Per maggiori informazioni sull'utilizzo, lanciate lsregister senza alcun parametro, verrà visualizzato un breve help.
Su windows, invece, le informazioni relative alla gestione degli URI sono, indovinate un po', nel registro di sistema.
Al momento non conosco applicazioni che permettano di modificare l'applicazione prefefinita, per un dato URI, ma ho trovato una guida piuttosto esaustiva sulla Microsoft Developer Network, con tanto di esempio di applicazione in C per gestire gli URI.
Potete, invece, creare un file .reg, con un set di chiavi simile a questo:
[-HKEY_CLASSES_ROOT\la_mia_applicazione] [HKEY_CLASSES_ROOT\la_mia_applicazione] @="URL:la_mia_applicazione" "URL Protocol"="" [HKEY_CLASSES_ROOT\la_mia_applicazione\shell] [HKEY_CLASSES_ROOT\la_mia_applicazione\shell\open] [HKEY_CLASSES_ROOT\la_mia_applicazione\shell\open\command] @="\"C:\\PATH\\ALLA\\mia_applicazione.exe\" \"-%1\""
E' tutto, spero di essere stato esauriente a sufficienza.

UPDATE
Ho rilasciato una minuscola applicazione per ricostruire il launch service database sotto Leopard
La trovate qui:
http://darkrow.net/project/lsdbreconstruct
Invia nuovo commento