Автозапуск самописного приложения в mac os x

Рейтинг: 4Ответов: 2Опубликовано: 07.04.2015

Добрый день!

С помощью среды разработки Xamarin Studio (бесплатная версия) создал консольное приложение (Файл->Новый->Проект->C#->Консольный проект).
Моё приложение слушает UDP-порт, и при получении пакета, дёргает веб-сервис).

Приложение компилируется и запускается из среды разработки. Приложение успешно запускается из командной строки:
mono /Users/myname/Projects/UDPListener/bin/Debug/UDPListener.exe

Но я никак не могу разобраться, как заставить приложение автоматически запускаться при включении MAC-mini и логине пользователя.

Создал udp.plist, положил его в /Library/LaunchAgents.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 <dict>
  <key>Label</key>
  <string>UDPListener</string>
  <key>Program</key>
  <string>/usr/bin/mono</string>
  <key>ProgramArguments</key>
  <array>
     <string>/Users/myname/Projects/UDPListener/bin/Debug/UDPListener.exe</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>LaunchOnlyOnce</key>
  <true/>
 </dict>
</plist>

Далее:

#правим права доступа 
chown root:wheel /Library/LaunchDaemons/udp.plist 
#правим атрибуты 
chmod 755 /Library/LaunchDaemons/udp.plist

Перезагружаюсь...

В мануале написано:
Активировать или дезактивировать работающий сценарии можно выполнив команды:

#launchctl load /Library/LaunchAgents/[имя.вашего.файла].plist   
#launchctl unload /Library/LaunchAgents/[имя.вашего.файла].plist

Пробовал выполнять эти команды. Перезагружался. Не запускается моё приложение.

Помогите, пожалуйста. Как мне запускать моё приложение при логине пользователя?

Ответы

▲ 4Принят

Можно создать приложение запускающее shell script:

  • Запустите Automator.app
  • Выберите тип документа Application
  • Найдите действие Run shell script в библиотеке слева или через строку поиска
  • Перетащите это действие в рабочую область справа
  • Вставьте ваш скрипт mono /Users/myname/Projects/UDPListener/bin/Debug/UDPListener.exe
  • File -> Save

Теперь добавьте это приложение в автозагрузку:

  • System Preferences -> Users & Groups
  • Выберите пользователя -> Login Items
  • Добавьте в список созданный в Automator .app файл

При логине данного пользователя программа запустится.

▲ 2

Попробуй создать папку UDPListener.app и положи свой exe по след пути UDPListener.app/Contents/MacOS/UDPListener (расширение у файла лучше убрать)

в plist пропиши путь до папки UDPListener.app:

<array>
     <string>/yourPath/UDPListener.app</string>
</array>

Должно помочь