Вопрос

Как сервис для моих пользователей, я хотел бы предоставить сценарий удаления, чтобы полностью удалить все трассировки моего приложения на Mac OS X. Приложение установлено с использованием пакета, а не просто перетаскивается в папку приложений, потому что это тип демона. приложение, которое также требует запуска сценария при установке для запуска.

Я думаю, что включить файл под названием uninstall.sh и поместите это в /Library/Application Support/com.<mycompany>.<myapplication>/ и обратитесь к этому из документации приложения. Цель в основном состоит в том, чтобы остановить демон, если запустить, разгрузить и удалить соответствующие PLIST, а также удалить любые файлы приложений. Звучит ли это разумно или есть лучшие методы для этого?

Также мне интересно, хорошей практикой также удалить следы пакета, используя pkgutil --forget - Если я этого не сделаю, в следующий раз, когда пакет будет установлен, он появляется как обновление вместо установки. Какие-нибудь рекомендации или указатели на информацию о наилучшей практике?

Нет ли стандартного способа сделать это на OS X?

Это было полезно?

Решение

Нет стандартного способа сделать это на OS X. Да, шокирующая, я знаю. Apple последовательно предупреждает всех от установщиков пакетов (среди прочего, предоставляя для них недостаточную документацию). Затем они используют исключительно установщики пакетов для своих собственных автономных приложений .... Go Figure.

Да, вы должны включить pkgutil --forget.

Если вашим клиентам удобно с таким сценарием, ваш подход звучит нормально. Если они хотят «дважды щелкнуть на него», то вам, вероятно, следует поместить удаление в /Applications, но избегайте этого, если можете.

Если у вас есть графический интерфейс, элемент статуса или панель предпочтений, то приятно поместить туда кнопку «удалить» или пункт меню, а не потребовать, чтобы они обтянулись с терминалом.

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

Другие советы

Неспособность удалить пакеты заставила меня занять много лет, поэтому я написал инструмент для удаления пакетов:

http://www.corecode.at/uninstallpkg/index.html

Это немного лучше, чем сценарии оболочки, чтобы сделать его плавающим, потому что он не удаляет какие -либо файлы, которые используются любыми другими установленными пакетами

У меня подобное приложение, и я столкнулся с той же проблемой. Подход, который я принял, был тем, который я видел в других приложениях. Вместо того, чтобы просто распространять установщик .pkg, оберните его в файл .dmg. Сценарий удаления может быть включен с .pkg в .dmg.

Сценарий удаления затем переименован в «uninstall.tool». Расширение.

То, как я решил это использовать Автоматор, создать заявление Документируйте, а затем добавьте действия диалога и сценария. Наконец, сохраните свой документ с приложением Automator, и вы получите простое приложение GUI для запуска удаления.

Часто действие удаления требует привилегий администратора - я решил это в Automator, запустив действие сценария оболочки, которое генерирует еще один скрипт оболочки, который затем может выполнить в действии AppleScript следующим образом:

on run {input, parameters}
    do shell script "/tmp/uninstaller.sh" with administrator privileges
    return input
end run

Немного нетрадиционно, но не все это. У меня установлено домашнее пиво и бочка. Я смог удалить .pkg со следующим:

 brew cask uninstall --force <pkg_name>

бывший. Brew Cask УБОЖАТЬ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top