Frage

Als Dienst für meine Benutzer möchte ich ein deinstalliertes Skript bereitstellen App, für die auch ein Skript bei der Installation ausgeführt werden muss, um gestartet zu werden.

Mein Gedanke ist, eine Datei namens aufzunehmen uninstall.sh und stecken Sie es in /Library/Application Support/com.<mycompany>.<myapplication>/ und beachten Sie dies aus der Anwendungsdokumentation. Der Zweck besteht im Grunde genommen darin, den Daemon beim Ausführen, Entladen und Löschen der entsprechenden Ebene zu stoppen und alle Anwendungsdateien zu entfernen. Klingt das vernünftig oder gibt es bessere Methoden, um dies zu erreichen?

Ich frage mich auch, ob es eine gute Praxis ist, auch Spuren des Pakets mithilfe zu entfernen pkgutil --forget - Wenn ich dies nicht tue, wird das nächste Mal, wenn das Paket installiert wird, als aktualisiert statt installiert. Irgendwelche Empfehlungen oder Zeiger auf Best-Practice-Informationen?

Gibt es keine Standardmethode, um dies unter OS X zu tun?

War es hilfreich?

Lösung

Es gibt keine Standardmethode, um dies unter OS X zu tun. Ja, schockierend, ich weiß. Apple warnt konsequent alle vor Paketinstallateuren (unter anderem durch unzureichende Dokumentation für sie). Sie verwenden dann ausschließlich Paketinstallateure für ihre eigenen eigenständigen Apps.

Ja, Sie sollten einschließen pkgutil --forget.

Wenn Ihre Kunden mit dieser Art von Skript vertraut sind, klingt Ihr Ansatz gut. Wenn sie ein "Doppelklick-on-it" wollen, sollten Sie wahrscheinlich das Deinstaller einfügen /Applications, aber vermeiden Sie das, wenn Sie können.

Wenn Sie ein GUI-, Status -Element- oder Präferenzfeld haben, ist es schön, dort eine "Deinstallation" -Taste oder einen Menüelement einzustellen, anstatt sie mit dem Terminal herumspielen zu müssen.

Übrigens, wenn Sie nach dem Software -Zustellungshandbuch suchen, ist es gewesen gerührt Seit ungefähr einem Jahr, während sie es "aktualisieren".

Andere Tipps

Die Unfähigkeit, Pakete zu entfernen, hat mich jahrelang gestartet, daher habe ich ein Tool zum Deinstallieren von Paketen geschrieben:

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

Es ist ein bisschen besser als die Shell -Skripte, um es zu tun

Ich habe eine ähnliche Anwendung und stieß auf das gleiche Problem. Der Ansatz, den ich gewählt habe, war einer, den ich gesehen habe, wie andere Anwendungen verwendet wurden. Wickeln Sie ihn in eine .dmg -Datei ein, anstatt einfach das .pkg -Installationsprogramm zu verteilen. Das Deinstall -Skript kann in das .pkg in der .dmg aufgenommen werden.

Das Deinstallationskript wird dann in "Deinstall.tool" umbenannt. Mit der .Tool -Erweiterung können Benutzer das Skript durch Doppelklicken ausführen, anstatt es aus der Befehlszeile auszuführen.

Die Art, wie ich das gelöst habe, war zu verwenden Automator, Erstelle ein Anwendung Dokumentieren Sie und fügen Sie dann Dialog- und Skriptaktionen hinzu. Speichern Sie schließlich Ihr Automator -Anwendungsdokument und Sie erhalten eine einfache GUI -Anwendung, um die Deinstallation auszuführen.

Oft erfordert die Deinstall -Aktion Administratorrechte - ich habe dies in Automator gelöst, indem ich eine Shell -Skriptaktion ausführte, die ein anderes Shell -Skript generiert, das dann in einer AppleScript -Aktion wie folgt ausgeführt wird:

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

Etwas unkonventionell, aber sind diese nicht alles. Ich habe Homebrew und Fass installiert. Ich konnte A .pkg mit Folgendem deinstallieren:

 brew cask uninstall --force <pkg_name>

ex. Brew Cask -Deinstallation -Force Dockertools

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top