【问题标题】:Obj-C OS X Delete application from /ApplicationsObj-C OS X 从 /Applications 删除应用程序
【发布时间】:2014-09-05 20:41:45
【问题描述】:

我正在编写一个应用程序来从 OS X 中删除一个软件及其文件。我可以删除除 .app 和 /Applications 中的文件夹之外的所有其他内容。我正在使用AuthetificationExecuteWithPriviledges,我知道它已被弃用,所以在尝试将 .app 移动到垃圾箱时是否会给我带来管理问题?当我逐步完成该过程时,我看到一个NSCocoaErrorDomain,代码为513。我快速搜索了一下,发现它与权限错误有关。我的另一个理论是我的应用程序路径不正确。我在用: NSString *ibmNotesApplication = @"/Applications/IBM Notes.app";

如果您想知道我为什么要删除 Lotus Notes,那是因为 IBM 提供的 Notes 卸载程序没有我想要的所有功能。所以,我正在写一个删除笔记和所有与之相关的文件,这样我们就可以重新安装了。

这是一段代码,我将数组中的一个项目移动到垃圾箱。

 if ([filemanager fileExistsAtPath:object])
        {
            NSURL *objectURL = [NSURL fileURLWithPath:object];
            NSURL *trashedObject;
            NSError *error;

            //Moves item to trash bin and update log
            if([filemanager trashItemAtURL:objectURL resultingItemURL:&trashedObject error:&error])
            {
                NSLog(@"Trashed %@ to %@",objectURL, trashedObject);
                self.textfield.stringValue = [NSString stringWithFormat:@"%@%@%@%@%@%@", self.textfield.stringValue, @"Trashed ", objectURL, @" to ", trashedObject, @"\n"];
            }

【问题讨论】:

  • AppCleaner 为我工作:freemacsoft.net/appcleaner
  • 感谢格式化帮助mattt,我匆忙写下我的问题。 @trojanfoe,我真的很想编写自己的实用程序,而不是依赖其他工具来删除 Notes,以及一些 Eclipse plist 文件。
  • 不是 100% 确定 Authetification 是什么......但谷歌搜索让我回到这里......

标签: objective-c macos cocoa


【解决方案1】:

正如您在问题中提到的,函数 AuthorizationExecuteWithPrivileges 是一个已弃用的函数,并且已经有一段时间了。我建议您首先按照 Apple 的建议将特权进程分解为一个单独的特权帮助工具,该工具是在 launchd 的帮助下启动的。

您可以按照示例代码here。

如果权限问题仍然存在,那么至少您已经着手将代码重构为正确的处理方式,并且知道将来版本的操作系统将支持它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多