2013-09-24 17 views
1

Я создаю приложение для Mac, и для этого приложения требуется установка двух программ на Mac, прежде чем он будет функционировать правильно, поэтому мне нужно каким-то образом проверить, установлены ли программы. Это те:приложение для какао: проверка наличия определенных программ

  • system_timer
  • шеньчжэнь

Я уже установил их на мой макинтош с:

sudo gem install system_timer 
sudo gem install shenzhen 

в терминале.

Приложение должно быть распространено внутренне, и я не могу попросить всех установить эти две программы на своих машинах, поэтому мне нужно, чтобы мое приложение выполняло это автоматически, если они не установлены.

Как бы я это сделал?

Любая помощь очень ценится.

ответ

1

Вы можете использовать popen для запуска команд оболочки which system_timer и which shenzhen, а затем проверить результаты.

+0

'popen (" which system_timer "," r ")' возвращает файл, который я понятия не имею, как обращаться, правильно ли это? – Niclassg

+0

popen возвращает дескриптор файла в stdout выполненной команды. Вызовите 'which system_timer' из консоли в системе, где он установлен, а где нет, и посмотрите разницу в выходе. –

+0

Я пробовал команду в терминале, и ничего не происходит, она просто переходит к следующей строке, как ничего не случилось. – Niclassg

0

В идеальном мире вы хотели бы найти способ упаковки необходимых ресурсов в свой комплект приложений, вместо того чтобы требовать от ваших пользователей привилегий вашего корневого приложения, чтобы диспетчер пакетов устанавливал пакеты по всему миру. К сожалению, system_timer имеет собственные требования к построению, а shenzhen имеет множество зависимостей, поэтому это может быть не так просто, как могло бы быть.

Предполагая, что вы просто хотите, чтобы сделать эквивалент sudo gem install ... я бы рекомендовал выполнение gem с повышенными привилегиями, используя что-то вроде кода here (обязательно проверьте файл README там - это не один вкладыш) для вызова это с привилегиями root. Это будет использовать текущий рекомендованный API повышения привилегий и представит пользователю нормальное диалоговое окно для ввода пароля.

Смежные вопросы