Как изменить исполняемый файл в наборе приложений OS X

Я хотел бы запустить script до запуска Firefox и после его завершения. В Ubuntu я делаю это, создавая новый ярлык, который сначала вызывает мою функцию, затем вызывает команду firefox, а затем вызывает мою последнюю функцию. Поскольку команда firefox блокируется, пока приложение не завершит работу, моя последняя функция вызывается сразу же после завершения процесса.

Однако в OS X я не могу сделать это так хорошо, потому что в итоге у меня две значки на доке. Один для моего script превратился в приложение, а другой для приложения Firefox. Я бы предпочел просто иметь один значок док-станции и не прерывать обновления Firefox.

Моим текущим решением является переименование как MacOS/firefox {, - bin} с префиксом "real-", а затем имя моей оболочки script "firefox-bin". Это работает, но я уверен, что в следующий раз firefox пытается обновить себя, я тост.

Я попытался изменить свойство "CFBundleExecutable" в файле Info.plist пакета, чтобы быть моим script, но это не работает.

Может ли кто-нибудь предложить какие-либо другие предложения?

Ответ 1

Создайте пакет обычных приложений, но установите LSUIElement на нем, поэтому значок приложения script скрыт от док-станции и включите Firefox внутри пакета.

Простой способ сделать это - Platypus. Настройте Platypus следующим образом:

  • Нажмите "Параметры". Проверьте "Set $ 1 до пути к приложению ", поэтому ваш script может ссылаться на файлы внутри пакета.

  • Установите флажок "Запуск в фоновом режиме" - эти наборы LSUIElement для вас.

  • В списке "Файлы и папки для быть в комплекте с приложением в Ресурсы ", отпустите Firefox.

  • Измените вывод на "Нет", чтобы ваш журнал сообщения переходят в системную консоль.

  • Удалите файл значков Firefox (firefox.icns) на значке "Пользовательский значок".

  • Измените "Имя приложения" на Firefox.

Для script, который выглядит примерно так:

#!/bin/sh
echo before >&2
$1/Contents/Resources/Firefox.app/Contents/MacOS/firefox-bin
echo after >&2

вы получите вывод, например:

4/8/09 1:16:33 PM [0x0-0x801801].net.sabi.PlatypusScript[76610] before 
4/8/09 1:16:35 PM firefox-bin[76613] Database load time: 0.373 (717 objects) 
4/8/09 1:16:35 PM [0x0-0x801801].net.sabi.PlatypusScript[76610]
2009-04-08 13:16:35.699 firefox-bin[76613:10b] Database load time: 0.373 (717 objects) 
4/8/09 1:16:57 PM [0x0-0x801801].net.sabi.PlatypusScript[76610] after 

Если ваши пользователи запускают Firefox другими способами, например, с обработчиками URL-адресов и открыв файлы HTML, вместо этого вам нужно будет использовать собственное приложение, которое может передать соответствующие события Apple через Firefox, и добавить соответствующий URL-адрес и информацию обработчика файла в Info.plist. (aemreceive - удобная оболочка Python для приема Apple Event.)

Ответ 2

Используйте Automator рабочий процесс, если он доступен в вашей версии Mac OS.