21

ユーザーへのサービスとして、Mac OS X上のアプリケーションの痕跡をすべて完全に削除するアンインストールスクリプトを提供したいと思います。アプリケーションは、デーモンタイプであるため、アプリケーションフォルダーにドラッグするだけでなく、パッケージを使用してインストールします。インストール時にスクリプトを実行して起動する必要があるアプリ。

私の考えは、と呼ばれるファイルを含めてuninstall.shそこに配置/Library/Application Support/com.<mycompany>.<myapplication>/し、アプリケーションのドキュメントからこれを参照することです。目的は基本的に、実行中のデーモンを停止し、対応するplistをアンロードして削除し、アプリケーションファイルを削除することです。これは合理的に聞こえますか、それともこれを達成するためのより良い方法がありますか?

また、を使用してパッケージの痕跡も削除することをお勧めしpkgutil --forgetます。これを行わないと、次にパッケージをインストールしたときに、インストールではなくアップグレードされたものとして表示されます。ベストプラクティス情報への推奨事項またはポインタはありますか?

OS Xでこれを行う標準的な方法はありませんか?

4

5 に答える 5

17

OS Xでこれを行う標準的な方法はありません。はい、衝撃的です、私は知っています。Appleは一貫して、パッケージインストーラーから離れるようにすべての人に警告しています(とりわけ、不十分なドキュメントを提供することによって)。次に、独自のスタンドアロンアプリ専用のパッケージインストーラーを使用します。

はい、含める必要がありますpkgutil --forget

顧客がこの種のスクリプトに満足している場合、あなたのアプローチはうまく聞こえます。「ダブルクリックオンイット」が必要な場合は、おそらくアンインストーラーを配置する必要があり/Applicationsますが、可能であればそれは避けてください。

GUI、ステータスアイテム、または設定パネルがある場合は、ターミナルをいじくり回すのではなく、「アンインストール」ボタンまたはメニューアイテムを配置すると便利です。

ところで、ソフトウェア配信ガイドを探しに行くと、彼らがそれを「更新」している間、それは1年かそこらで移動されました。

于 2011-09-09T00:25:31.583 に答える
7

パッケージを削除できないことは何年もの間私を悩ませてきたので、私はパッケージをアンインストールするためのツールを書きました:

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

インストールされている他のパッケージで使用されているファイルを削除しないようにするため、シェルスクリプトよりも少し優れています。

于 2013-07-02T12:33:36.017 に答える
4

私は同様のアプリケーションを持っていて、同じ問題に遭遇しました。私が採用したアプローチは、他のアプリケーションが使用しているのを見たものです。.pkgインストーラーを単に配布するのではなく、.dmgファイルにラップします。アンインストールスクリプトは、.dmgの.pkgに含めることができます。

その後、アンインストールスクリプトの名前が「uninstall.tool」に変更されます。.tool拡張子を使用すると、ユーザーはコマンドラインからスクリプトを実行するのではなく、ダブルクリックしてスクリプトを実行できます。

于 2011-11-02T17:26:04.180 に答える
4

これを解決する方法は、Automatorを使用し、アプリケーションドキュメントを作成してから、ダイアログアクションとスクリプトアクションを追加することでした。最後に、Automatorアプリケーションドキュメントを保存すると、アンインストールを実行するための単純なGUIアプリケーションができあがります。

多くの場合、アンインストールアクションには管理者権限が必要です-私はAutomatorで、次のようにapplescriptアクションで実行できる別のシェルスクリプトを生成するシェルスクリプトアクションを実行することでこれを解決しました。

on run {input, parameters}
    do shell script "/tmp/uninstaller.sh" with administrator privileges
    return input
end run
于 2012-05-24T12:36:08.940 に答える
1

少し型破りですが、これらすべてではありません。Homebrewとcaskをインストールしています。次の方法で.pkgをアンインストールできました。

 brew cask uninstall --force <pkg_name>

元。醸造キャスクアンインストール--forcedockertools

于 2016-02-18T21:02:47.027 に答える