Raccogliendo dalla risposta di Daniel Beck sopra, queste informazioni sono effettivamente memorizzate nel fork delle risorse del file. Apple fornisce due utility, chiamate "Rez" e "DeRez" con gli strumenti di sviluppo, che consentono di manipolare le fork di risorse. In particolare, puoi inserire un fork di risorse in un file con Rez.
Per modificare l'associazione di un singolo file dalla riga di comando, prima crea un file del tipo giusto e cambia manualmente la sua associazione con l'applicazione in cui vuoi aprirlo. Questo crea il fork delle risorse nel file, se non Per fare ciò, non ci saranno informazioni da copiare. Quindi, estrai il fork delle risorse con DeRez, in questo modo (presupponendo un file foo.txt e che l'applicazione che desideri utilizzare è Firefox.app).
DeRez foo.txt > foo.r
Questo creerà un file chiamato foo.r che è il fork delle risorse decompilato come file di testo. Sarà simile a questo:
data 'usro' (0) {
$"0000 001A 2F41 7070 6C69 6361 7469 6F6E" /* ..../Application */
$"732F 4669 7265 666F 782E 6170 7000 0000" /* s/Firefox.app... */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
Puoi modificarlo se vuoi crearne uno da zero, ma devi avere il formato esattamente giusto o non funzionerà. Sono solo caratteri con codifica esadecimale che descrivono il percorso del pacchetto di app desiderato, terminato con uno zero.
È possibile che venga visualizzato un messaggio in cui viene indicato che il fork delle risorse è vuoto e non inizializzato. In tal caso, non è stata modificata l'associazione per file sul file di origine, quindi è necessario farlo, quindi rieseguire il comando DeRez.
Una volta ottenuto questo, puoi inserirlo in un altro file come segue (supponendo che bar.txt esista):
Rez foo.r -a -o bar.txt
Questo aggiorna bar.txt in atto con il fork delle risorse da foo.r.
Per verificare che abbia funzionato correttamente, poiché né Rez né DeRez stampano i messaggi di errore, basta fare questo:
DeRez bar.txt
Dovresti vedere le stesse informazioni di prima. Dopo tutto ciò, basta aprire il file bar.txt come faresti normalmente e dovrebbe aprirsi nell'applicazione corretta, non in quella predefinita.
Per eseguire una modifica in batch, una volta ottenuto il file .r, è possibile utilizzare un'espansione jolly standard come questa:
Rez foo.r -a -o *.txt
Questo farà tutti i file che corrispondono al carattere jolly.
L'ho fatto su 10.7, ma ho capito che funziona anche su macchine precedenti.