Mac OS Xのパッケージ用のアンインストラー
-
24-10-2019 - |
質問
ユーザーへのサービスとして、Mac OS Xのアプリケーションのすべてのトレースを完全に削除するアンインストールスクリプトを提供したいと思います。アプリケーションは、デーモンタイプであるため、アプリケーションフォルダにドラッグされるのではなく、パッケージを使用してインストールされます。また、インストール時にスクリプトを実行する必要があるアプリも起動します。
私の考えは、呼ばれるファイルを含めることです uninstall.sh
そしてそれを入れます /Library/Application Support/com.<mycompany>.<myapplication>/
アプリケーションドキュメントからこれを参照してください。目的は、基本的に、対応するプリストを実行し、アンロードし、削除し、アプリケーションファイルを削除する場合、デーモンを停止することです。これは合理的に聞こえますか、それともこれを達成するためのより良い方法がありますか?
また、使用してパッケージのトレースを削除することが良い習慣かどうか疑問に思っています pkgutil --forget
- これを行わないと、次にパッケージがインストールされたときに、インストールの代わりにアップグレードされているように表示されます。ベストプラクティス情報への推奨事項またはポインターはありますか?
OS Xでこれを行う標準的な方法はありませんか?
解決
OS Xでこれを行う標準的な方法はありません。はい、衝撃的です、私は知っています。 Appleは、パッケージインストーラーからすべての人を一貫して警告しています(とりわけ、ドキュメントが不十分なドキュメントを提供することで)。その後、独自のスタンドアロンアプリにパッケージインストーラーを独占的に使用します。
はい、含める必要があります pkgutil --forget
.
顧客がこの種のスクリプトに満足している場合、あなたのアプローチはうまく聞こえます。彼らが「ダブルクリックオン」が必要な場合は、おそらくアンインストーラーをに置く必要があります /Applications
, 、しかし、できればそれを避けてください。
GUI、ステータスアイテム、または設定パネルがある場合は、端末を混乱させる必要があるのではなく、「アンインストール」ボタンまたはメニュー項目をそこに配置するのは素晴らしいことです。
ところで、あなたがソフトウェア配信ガイドを探しに行くなら、それは 動いた 彼らがそれを「更新」している間、今1年かそこらの間。
他のヒント
パッケージを削除できないことが何年も私を悩ませてきたので、パッケージをアンインストールするツールを書きました。
http://www.corecode.at/uninstallpkg/index.html
シェルスクリプトよりも少し優れているのは、他のインストールされているパッケージで使用されているファイルを削除しないようにするため、浮かんでいるのです。
同様のアプリケーションがあり、同じ問題に遭遇しました。私が取ったアプローチは、他のアプリケーションが使用しているのを見たものでした。 .pkgインストーラーを単に配布するのではなく、.dmgファイルにラップアップします。 Uninstallスクリプトは、.dmgの.pkgに含めることができます。
アンインストールスクリプトは、「uninstall.tool」に変更されます。 .tool拡張機能により、ユーザーはコマンドラインから実行する必要があるのではなく、ダブルクリックしてスクリプトを実行できます。
私がこれを解決した方法は、使用することでした 自動車, 、作成します 応用 次に、ダイアログとスクリプトのアクションを文書化してから追加します。最後に、Automatorアプリケーションドキュメントを保存すると、UNINSTALLを実行するための簡単なGUIアプリケーションになります。
多くの場合、アンインストールアクションには管理者の特権が必要です - 私は、次のようにApplescriptアクションで実行できる別のシェルスクリプトを生成するシェルスクリプトアクションを実行することにより、Automatorでこれを解決しました。
on run {input, parameters}
do shell script "/tmp/uninstaller.sh" with administrator privileges
return input
end run
わずかに型破りですが、これらすべてではありません。私は自宅と樽を設置しています。 .pkgをアンインストールすることができました。
brew cask uninstall --force <pkg_name>
元。 Brew Cask Uninstall -Force Dockertools