Продолжая ответ Дэниела Бека, приведенный выше, эта информация действительно хранится в ветке ресурсов файла. Apple предоставляет две утилиты, называемые «Rez» и «DeRez» с инструментами разработчика, которые позволяют вам манипулировать ветвями ресурсов. В частности, вы можете вставить ветку ресурса в файл с помощью Rez.
Чтобы изменить сопоставление отдельного файла из командной строки, сначала создайте файл правильного типа и вручную измените его сопоставление на приложение, в котором вы хотите его открыть. Это создает в файле ветвь ресурса - если вы не Для этого не будет информации для копирования. Затем извлеките ветвь ресурса с помощью 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, но я понимаю, что это работает и на более ранних машинах.