Domanda

Come servizio ai miei utenti vorrei fornire uno script di disinstallazione per rimuovere completamente ogni traccia di mia applicazione su Mac OS X. L'applicazione è installata utilizzando un pacchetto piuttosto che essere trascinati nella cartella Applicazioni, perché è un daemon-tipo di app che richiede anche per eseguire uno script in fase di installazione per essere lanciato.

Il mio pensiero è quello di includere un file chiamato uninstall.sh e metterlo in /Library/Application Support/com.<mycompany>.<myapplication>/ e fare riferimento a questo dalla documentazione dell'applicazione. Lo scopo è sostanzialmente quella di fermare il demone se in esecuzione, scarico ed eliminare il plist corrispondente e rimuovere eventuali file di applicazione. Vi sembra ragionevole o ci sono metodi migliori per ottenere questo risultato?

Inoltre mi chiedo se è buona pratica di rimuovere anche le tracce della confezione utilizzando pkgutil --forget - se non faccio questo, la prossima volta che si installa il pacchetto si presenta come in fase di aggiornamento, invece di installato. Eventuali raccomandazioni o puntatori a informazioni migliori prassi?

Non c'è un modo standard di fare questo su OS X?

È stato utile?

Soluzione

Non c'è un modo standard di fare questo su OS X. Sì, scioccante, lo so. Di Apple avverte costantemente tutti lontano da installatori di pacchetti (tra le altre cose, fornendo la documentazione sufficiente per loro). Essi quindi utilizzare esclusivamente gli installatori di pacchetti per le proprie applicazioni standalone .... vai a capire.

Sì, è necessario includere pkgutil --forget.

Se i clienti sono confortevoli, con questo tipo di script, quindi il vostro approccio suona bene. Se vogliono un "doppio-click-on-it", allora si dovrebbe probabilmente mettere il programma di disinstallazione nel /Applications, ma evitare che, se è possibile.

Se si dispone di una GUI, Stato Cod, o Preferenze pannello, quindi è bello mettere una voce pulsante o menu "Disinstalla" lì piuttosto che richiedere loro di andare pasticciare con Terminal.

A proposito, se si va alla ricerca per la Guida Software Delivery, è stato mosso per un anno o così ora, mentre "update" di esso.

Altri suggerimenti

l'impossibilità di rimuovere i pacchetti mi ha ostacolato per anni, quindi ho scritto uno strumento per disinstallare i pacchetti:

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

la sua un po 'meglio gli script di shell per farlo galleggiare intorno perché fa in modo di non rimuovere tutti i file che vengono utilizzati da altri pacchetti installati

Ho un'applicazione simile e sono imbattuto lo stesso problema. L'approccio che ho preso è stato quello che ho visto altre applicazioni uso. Piuttosto che limitarsi a distribuire il programma di installazione .pkg, avvolgetelo in un file .dmg. Lo script di disinstallazione può essere incluso con il .pkg nel .dmg.

Lo script di disinstallazione viene poi rinominato in "uninstall.tool". L'estensione .tool consente agli utenti di eseguire lo script con un doppio clic, piuttosto che dover eseguirlo dalla riga di comando.

Il modo in cui ho risolto questo era quello di utilizzare Automator , creare un applicazione del documento e quindi aggiungere le azioni di dialogo e di script. Infine salvare il documento applicazione Automator e si finisce con una semplice applicazione GUI per eseguire la disinstallazione.

Spesso l'azione di disinstallazione richiede privilegi di amministratore - Ho risolto questo in Automator eseguendo un'azione di script di shell che genera un altro script di shell che possono poi da corsa in un'azione AppleScript come segue:

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

Un po 'non convenzionale, ma non sono questi tutti. Ho Homebrew e botte installati. Sono stato in grado di disinstallare un .pkg con il seguente:

 brew cask uninstall --force <pkg_name>

es. birra botte disinstallazione --force dockertools

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top