Question Programme de désinstallation pour le package sur Mac OS X


En tant que service à mes utilisateurs, je souhaiterais fournir un script de désinstallation pour supprimer complètement toute trace de mon application sur Mac OS X. L'application est installée à l'aide d'un package plutôt que d'être simplement déplacée dans le dossier Applications car il s'agit d'un démon. application qui nécessite également d'exécuter un script lors de l'installation pour être lancé.

Ma pensée est d'inclure un fichier appelé uninstall.sh et placez-le dans /Library/Application Support/com.<mycompany>.<myapplication>/ et se référer à cela à partir de la documentation de l'application. Le but est essentiellement d'arrêter le démon s'il est en cours d'exécution, de décharger et de supprimer le plist correspondant, ainsi que de supprimer tous les fichiers d'application. Cela semble-t-il raisonnable ou existe-t-il de meilleures méthodes pour y parvenir?

Aussi je me demande si c'est une bonne pratique de supprimer également les traces du paquet en utilisant pkgutil --forget - Si je ne le fais pas, la prochaine fois que le package est installé, il apparaît comme étant mis à niveau au lieu d'être installé. Des recommandations ou des indications sur les meilleures pratiques?

N'y a-t-il pas de méthode standard sur OS X?


16
2018-03-15 13:58


origine


Réponses:


Il n'y a pas de moyen standard de le faire sur OS X. Oui, choquant, je sais. Apple met systématiquement en garde tout le monde contre les installateurs de packages (en leur fournissant notamment une documentation insuffisante). Ils utilisent ensuite exclusivement des programmes d’installation de paquets pour leurs propres applications autonomes.

Oui, vous devriez inclure pkgutil --forget.

Si vos clients sont à l’aise avec ce type de script, votre approche semble correcte. S'ils veulent un "double-clic-dessus", vous devriez probablement mettre le programme de désinstallation dans /Applications, mais évite ça si tu peux.

Si vous avez une interface graphique, un élément de statut ou un panneau de préférences, alors il est intéressant de placer un bouton ou un élément de menu "Désinstaller" plutôt que de demander aux utilisateurs de passer outre avec Terminal.

BTW, si vous allez chercher le Guide Software Delivery, il a été déplacé pendant environ un an maintenant, alors qu'ils le "mettent à jour".


16
2017-09-09 00:25



L'impossibilité de supprimer des paquets m'a interpellé pendant des années, j'ai donc écrit un outil pour désinstaller les paquets:

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

c'est un peu mieux que les scripts shell pour le faire circuler car il s'assure de ne jamais supprimer les fichiers utilisés par les autres paquets installés


6
2017-07-02 12:33



J'ai une application similaire et j'ai rencontré le même problème. L'approche que j'ai adoptée a été celle que d'autres applications ont utilisée. Plutôt que de simplement distribuer le programme d'installation de .pkg, enveloppez-le dans un fichier .dmg. Le script de désinstallation peut être inclus avec le fichier .pkg dans le fichier .dmg.

Le script de désinstallation est ensuite renommé en "uninstall.tool". L'extension .tool permet aux utilisateurs d'exécuter le script en double-cliquant, plutôt que de l'exécuter depuis la ligne de commande.


3
2017-11-02 17:26



La façon dont j'ai résolu cela était d'utiliser Automator, créé un application document puis ajouter des actions de dialogue et de script. Enfin, enregistrez votre document d'application Automator et vous obtenez une application graphique simple pour exécuter la désinstallation.

Souvent, l'action de désinstallation nécessite des privilèges d'administrateur - j'ai résolu ce problème dans Automator en exécutant une action de script shell qui génère un autre script shell qui peut ensuite être exécuté dans une action script comme suit:

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

3
2018-05-24 12:36



Légèrement peu conventionnel, mais pas tous. J'ai Homebrew et le fût installé. J'ai pu désinstaller un .pkg avec les éléments suivants:

 brew cask uninstall --force <pkg_name>

ex. désinstallation du tonneau --force dockertools


1
2018-02-18 21:02