Programme de désinstallation pour le package sur Mac OS X
Comme un service à mes utilisateurs, j'aimerais faire un script de désinstallation pour supprimer complètement toutes les traces de mon application sur Mac OS X. L'application est installée à l'aide d'un package plutôt que d'être simplement glissés dans le dossier Applications, car il est un démon de type application qui nécessite également d'exécuter un script à l'installation d'être lancé.
Ma pensée est d'inclure un fichier appelé uninstall.sh
et le placer dans /Library/Application Support/com.<mycompany>.<myapplication>/
et reportez-vous à présent à partir de la documentation de l'application. Le but est d'arrêter le démon s'en cours d'exécution, de décharger et de supprimer la plist ainsi que de supprimer tout les fichiers d'application. Est-ce son raisonnable ou il y a de meilleures méthodes pour accomplir cette?
Aussi je me demande si il est de bonne pratique de aussi enlever les traces de l'emballage à l'aide de pkgutil --forget
- si je ne fais pas ça, la prochaine fois que le paquet est installé, il apparaît que le cours de mise à niveau au lieu d'installé. Des recommandations ou des pointeurs vers une meilleure information?
Est-il pas de moyen standard de le faire sur OS X?
source d'informationauteur villintehaspam
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas moyen de le faire sur OS X. Oui, choquant, je sais. Apple constamment avertit tout le monde loin de programmes d'installation de packages (entre autres en fournissant une documentation insuffisante pour eux). Ils ont ensuite utiliser exclusivement des programmes d'installation de packages pour leurs propres applications autonomes.... allez comprendre.
Oui, vous devez inclure
pkgutil --forget
.Si vos clients sont à l'aise avec ce genre de script, puis votre approche sonne bien. Si ils veulent un "double-cliquez sur elle", alors vous devriez probablement mettre le programme de désinstallation dans
/Applications
mais à éviter si vous le pouvez.Si vous avez une interface graphique, le Statut de l'Élément, ou Panneau de Préférences, puis c'est agréable de mettre un bouton "Désinstaller" ou l'élément de menu, plutôt que d'exiger d'eux pour aller s'amuser avec le Terminal.
BTW, si vous allez à la recherche pour le Logiciel Guide de Livraison, il a été déplacé un an maintenant, alors qu'ils "mise à jour".
l'impossibilité de supprimer des paquets a m'énerve pendant des années, j'ai écrit un outil pour désinstaller des paquets:
http://www.corecode.at/uninstallpkg/index.html
son un peu mieux que les scripts shell pour le faire flotter autour de car il fait en sorte de ne jamais supprimer tous les fichiers qui sont utilisés par toutes les autres paquets installés
J'ai une application similaire, et suis tombé sur le même problème. L'approche que j'ai pris est celui que j'ai vu d'autres applications utilisent. Plutôt que de simplement distribuer les .pkg installer, l'envelopper dans une .fichier dmg. Le script de désinstallation peuvent être inclus avec l' .pkg dans le .dmg.
Le script de désinstallation est ensuite renommé "désinstaller.l'outil". L' .extension de l'outil permet aux utilisateurs d'exécuter le script en double-cliquant, plutôt que d'avoir à exécuter à partir de la ligne de commande.
La façon dont j'ai résolu ce problème était d'utiliser Automatorcréer un application document, puis ajouter la boîte de dialogue et des actions du script. Finalement, enregistrez votre application Automator document et vous vous retrouvez avec une interface simple d'application pour exécuter le processus de désinstallation.
Souvent la désinstallation d'action requiert des privilèges d'administrateur - j'ai résolu ce problème dans Automator par l'exécution d'un script shell d'action qui génère un autre script shell qui peut alors par s'exécuter dans un applescript action comme suit:
Peu conventionnelle, mais n'est-ce pas tout. J'ai Homebrew et fût installé. J'ai pu désinstaller un .pkg avec les éléments suivants:
ex. brew fût de désinstaller --force dockertools