Графическое удаление расширения ядра OS X - PullRequest
2 голосов
/ 04 января 2012

XCode не включает опции удаления для своего упаковщика.Обычно пользователи просто перетаскивают приложение в корзину, если хотят удалить его - большинство приложений содержатся в пакете приложения.

Однако у меня есть расширение ядра, которое необходимо удалить с помощью нескольких простых командных строк.Есть скрипт, который работает, но я должен предоставить графический деинсталлятор.

Я не ожидаю, что есть пример кода plug-n-play, который обеспечивает способ запуска скрипта при отображениииндикатор выполнения, но я надеюсь, что кто-то имел дело с этим или имеет несколько советов о том, как выполнить это быстро и легко

Сценарий состоит из двух строк без обратной связи, поэтому мы можем выполнять команды вприложением, если мы можем легко запрашивать и использовать права доступа root (т.е. позволить OS X обрабатывать разрешения - мы просто просим OS X предоставить их нам, что должно заставить его запрашивать их у пользователя аналогично тому, как это происходитс установщиком пакета) внутри приложения.

1 Ответ

1 голос
/ 05 января 2012

Существует довольно хороший подход, использующий проект Cocoa-Applescript в xcode для запуска сценария оболочки здесь:

http://www.mactech.com/articles/mactech/Vol.22/22.08/GUI-upyourScript/index.html

Он охватывает использование индикатора выполнения, обработку ошибок и получениеправильные права доступа root для запуска сценария оболочки.

К сожалению, здесь довольно много места для вырезания и вставки, но общие шаги таковы:

  1. Создание нового проекта xcode типа Cocoa-Applescript app
  2. Создайте и протестируйте нужный сценарий оболочки, добавьте его в свой проект
  3. Отредактируйте файл MainMenu.nib, добавив и назовите кнопку (theObject) и индикатор выполнения (pMainProgress), затем отредактируйтеназвание и другие аспекты пользовательского интерфейса по вкусу
  4. Привяжите кнопку к appleScriptcript в проекте (в Инспекторе с выбранной кнопкой установите флажок action и вставьте myprojectname.applescript)
  5. Измените appleScript на что-то похожее на следующее:
on clicked theObject
   -- setup
   set myPath to POSIX path of (path to me) as string
   -- Start progress bar
   set uses threaded animation of progress indicator "pMainProgress" of window "wMain" to true
   tell progress indicator "pMainProgress" of window "wMain" to start

   -- Do it!
   try
      do shell script quoted form of myPath & "Contents/Resources/backup.sh" with administrator privileges
   on error number 255
      display dialog "Sorry, an error occurred.  I can't make the copy."
   end try
   -- Stop progress bar
   tell progress indicator "pMainProgress" of window "wMain" to stop
   set uses threaded animation of progress indicator "pMainProgress" of window "wMain" to false

end clicked

Вы можете дополнительно настроить приложение (например, имя) и добавить текстовые поля в окно, чтобы предупредить наскакой шаг происходит, если вы запускаете несколько сценариев (поместите set the contents of text field "efStatus" of window "wMain" to "Copying files..." в свой сценарий после добавления текстового поля в пользовательский интерфейс с именем «efStatus»)

...