Збираючись з відповіді Даніеля Бека вище, ця інформація дійсно зберігається у роздрібному ресурсі файлу. Apple надає дві утиліти, під назвою "Rez" і "DeRez" з інструментами для розробників, які дозволяють маніпулювати вилами ресурсів. Зокрема, ви можете натиснути виделку ресурсу у файл з Rez.
Щоб змінити асоціацію одного файлу з командного рядка, спершу створіть файл потрібного типу та вручну змініть його асоціацію на додаток, у якому ви хочете його відкрити. Це створює ресурсну вилку ресурсу у файлі - якщо ви цього не зробите ' t це робити, не буде відомостей для копіювання. Потім витягніть вилку ресурсу з DeRez, як це (припустимо, файл foo.txt, і що програма, яку ви хочете використовувати, це Firefox.app).
DeRez foo.txt > foo.r
Це створить файл під назвою foo.r, який є декомпільованою виделкою ресурсу як текстовий файл. Це буде виглядати приблизно так:
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" /* ................ */
Ви можете відредагувати це, якщо ви хочете створити його з нуля, але ви повинні мати правильний формат , інакше він не працюватиме. Це просто шістнадцяткові закодовані символи, що описують шлях до потрібного пакету додатків, завершений нулем.
Можливо, ви побачите повідомлення про те, що виделка ресурсу порожня та неініціалізована. Якщо це так, ви не змінили асоціації на файл у вихідному файлі, тому вам потрібно зробити це, а потім запустити команду DeRez.
Після цього ви можете пересунути це в інший файл наступним чином (якщо припустимо bar.txt):
Rez foo.r -a -o bar.txt
Це оновлення bar.txt замість вилки ресурсу від foo.r.
Щоб перевірити це справно, оскільки ні Rez, ні DeRez не надрукували повідомлення про помилки, просто зробіть це:
DeRez bar.txt
Ви повинні побачити ту ж інформацію, що і раніше. Зрештою, просто відкрийте файл bar.txt, як зазвичай, і він має відкритись у правильній програмі, а не за замовчуванням.
Щоб змінити пакет, коли у вас є .r файл, ви можете використовувати стандартне розширення підстановки таким чином:
Rez foo.r -a -o *.txt
Це зробить усі файли, які відповідають підстановці.
Я зробив це 10.7, але я розумію, що це працює і на більш ранніх машинах.