tag metadatos mac editar macos packagemaker uninstaller

macos - metadatos - Desinstalador para paquete en Mac OS X



tag editor download (5)

Como servicio para mis usuarios, me gustaría proporcionar una secuencia de comandos de desinstalación para eliminar por completo todos los rastros de mi aplicación en Mac OS X. La aplicación se instala mediante un paquete en lugar de simplemente arrastrarse a la carpeta Aplicaciones porque es un tipo de demonio. Aplicación que también requiere ejecutar un script en la instalación para ser lanzado.

Mi idea es incluir un archivo llamado uninstall.sh y colocarlo en /Library/Application Support/com.<mycompany>.<myapplication>/ y consultar esto en la documentación de la aplicación. El propósito es básicamente detener el demonio si se está ejecutando, descargar y eliminar la lista correspondiente, así como eliminar cualquier archivo de aplicación. ¿Esto suena razonable o hay mejores métodos para lograr esto?

También me pregunto si es una buena práctica eliminar también los rastros del paquete usando pkgutil --forget - si no hago esto, la próxima vez que se instale el paquete aparecerá como actualizado en lugar de instalado. ¿Alguna recomendación o sugerencia de información sobre las mejores prácticas?

¿No hay una forma estándar de hacer esto en OS X?


La forma en que resolví esto fue usar Automator , crear un documento de aplicación y luego agregar acciones de diálogo y script. Finalmente, guarde el documento de la aplicación Automator y terminará con una aplicación GUI simple para ejecutar la desinstalación.

A menudo, la acción de desinstalación requiere privilegios de administrador. Resolví esto en Automator ejecutando una acción de script de shell que genera otro script de shell que luego puede ejecutarse en una acción de applecript de la siguiente manera:

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


La imposibilidad de eliminar paquetes me ha molestado durante años, así que escribí una herramienta para desinstalar paquetes:

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

Es un poco mejor que los scripts de shell para hacerlo flotar alrededor porque se asegura de no eliminar nunca los archivos utilizados por otros paquetes instalados


Ligeramente poco convencional, pero no son todos estos. Tengo Homebrew y barril instalado. Pude desinstalar un .pkg con lo siguiente:

brew cask uninstall --force <pkg_name>

ex. brew cask uninstall - force dockertools


No hay una forma estándar de hacer esto en OS X. Sí, sorprendente, lo sé. Apple constantemente advierte a todos los que están lejos de los instaladores de paquetes (entre otras cosas, proporcionándoles documentación insuficiente). Luego, utilizan exclusivamente los instaladores de paquetes para sus propias aplicaciones independientes ... imagínense.

Sí, debes incluir pkgutil --forget .

Si sus clientes se sienten cómodos con este tipo de script, entonces su enfoque suena bien. Si quieren un "doble clic en él", entonces probablemente debería poner el desinstalador en /Applications , pero evite eso si puede.

Si tiene una GUI, un elemento de estado o un panel de preferencias, entonces es bueno colocar un botón de "Desinstalar" o un elemento de menú allí en lugar de requerir que desordenen el terminal.

Por cierto, si busca la Guía de entrega de software, se ha moved por un año aproximadamente, mientras la "actualizan".


Tengo una aplicación similar y me encontré con el mismo problema. El enfoque que adopté fue uno que he visto usar otras aplicaciones. En lugar de simplemente distribuir el instalador .pkg, envuélvalo en un archivo .dmg. El script de desinstalación se puede incluir con el .pkg en el .dmg.

El script de desinstalación se renombra a "uninstall.tool". La extensión .tool permite a los usuarios ejecutar la secuencia de comandos haciendo doble clic, en lugar de tener que ejecutarla desde la línea de comandos.