MacOS X:删除应用程序时删除 plist 文件

Posted

技术标签:

【中文标题】MacOS X:删除应用程序时删除 plist 文件【英文标题】:MacOS X: Remove plist file when the app is removed 【发布时间】:2012-04-28 16:34:15 【问题描述】:

我在应用启动时显示许可表单,但它应该仅在应用首次启动时显示。不总是。所以,我试图在 plist 或用户默认值中存储一个标志,但是在应用程序删除(移动到垃圾箱)时,plist 或 userdefaults 没有从系统中删除,因此我无法完成我的任务。

这是我一直在下面尝试的,

我在 plist 文件中存储一个标志并在应用程序启动期间保存文件(在 Documents 目录中),所以下次我可以从那里读取并确定应用程序是否第一次运行。我在这里失败了,因为即使应用程序已从系统中删除(移动到垃圾箱),我也无法删除此 plist 文件。

我也尝试在 NSUserDefaults 中设置一个标志,但是在删除应用程序并再次构建并启动应用程序后,它仍然保留了我之前存储的值。我想知道,从系统中删除应用程序时,NSUserDefaults 不会被删除?

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];        
    [ud setObject:@"1" forKey:@"APPLAUNCHED"]; // store user default
    [ud synchronize];

有人可以建议吗?

谢谢。

【问题讨论】:

【参考方案1】:

删除应用程序时,用户默认设置和应用程序沙箱都不会自动删除。我认为没有办法做到这一点。

【讨论】:

您好,感谢您的回复。我看到用户默认值在删除(移到垃圾箱)二进制文件后没有被删除。因此,当我再次构建应用程序并尝试启动应用程序时,我无法显示许可表单。 没错。这是预期的行为。删除您的应用程序然后重新安装它的用户,他们的偏好和文档完好无损。作为副作用,他们不必再次填写许可证表格。我认为,如果最终用户对磁盘空间的使用很着迷,那么删除未使用的文件和沙箱是最终用户的责任。 但是,它应该是,我们必须在第一次启动应用程序时显示许可证。我怎样才能解决这个问题?当应用程序移到垃圾箱时,如何删除用户默认值或 plist?请提供任何帮助或建议。 如果应用更新后需要显示license,可以将当前应用版本存储在NSUserDefaults,并与实际应用版本进行比较,决定是否显示。如果应用只是被删除并重新安装(没有更新),则无法判断它是否在上次启动后被删除。 你能告诉用户如何通知用户从 Mac Lion 机器上删除用户默认设置吗?我至少可以在发行说明中添加它。

以上是关于MacOS X:删除应用程序时删除 plist 文件的主要内容,如果未能解决你的问题,请参考以下文章

XCode 在调试时自动删除 plist

解决clover配置文件conf.plist中nv_disable=1或者nvda_drv=1不生效或者说不能删除的问题

macOS: 初探本地资源库中的Security.plist文件的用途

sh MacOS X删除Java 9

SWIFT:初始写入/删除后无法删除 Plist 文件

Xcode 构建设置 - 在生产构建时从 plist 中删除代码