有没有办法在使用Cocoa应用程序从macOS卸载应用程序时收到通知?

时间:2017-05-04 19:20:53

标签: macos cocoa

我想让我的应用在卸载其他系统应用时做出反应(而不是我的应用)。是否有任何预期的Cocoa方法?如果没有,是否有可靠的(如果不是有意的话)这样做?

我确实有一个最有趣的观察列表,所以一个限于特定其他应用程序的解决方案很好,但一般解决方案会很棒。语言也不是一个问题; Objective-C和Swift是最简单的,但如果必须编写脚本,那也没关系。

我试图自己找到这个,但my Google-fu failed me

2 个答案:

答案 0 :(得分:2)

Mac应用程序并没有像其他系统那样“安装”。它们只是捆绑,用户可以从任何地方运行。

如果您要查看特定的.app文件名,可以设置NSMetadataQuery以观察对其的更改,并在用户将其移至回收站时收到通知。

答案 1 :(得分:1)

您可以使用-[NSWorkspace URLForApplicationWithBundleIdentifier:]。或者LSCopyApplicationURLsForBundleIdentifier,如果多个版本具有相同的包ID。但这可能是一种拉动式的实施,而不是基于通知的实施。

捆绑包标识符也可以与NSMetadataQuery通过kMDItemCFBundleIdentifier谓词一起使用。