为什么新Mac不显示我的屏幕保护程序?

时间:2015-03-31 17:41:21

标签: objective-c macos cocoa swift screensaver

我们编写了一个应用程序Screensaver Ninja,它通过将屏幕保护程序复制到〜/ Library / Screen Savers来为用户安装屏幕保护程序。这在我的机器和其他开发人员的机器上运行良好,但在我拥有的测试机器中,文件在那里,如果我让屏幕保护程序激活,它会选择它,但它不会出现在列表中:

enter image description here

这是我们用来安装它的代码:

func install() {
    var err: NSError?
    fileManager.copyItemAtURL(saverPackageUrl!, toURL: screensaversUrl!.URLByAppendingPathComponent("Ninja.saver"), error: &err)
    if err != nil {
        NSLog("Error installing Screensaver Ninja: \(err)")
    }
}

这就是我们选择它作为默认值的方式:

func setAsDefault() {
    var mutable: NSMutableDictionary
    if let moduleDict = CFPreferencesCopyAppValue("moduleDict", "com.apple.screensaver") as? NSDictionary {
        mutable = moduleDict.mutableCopy() as NSMutableDictionary
    } else {
        mutable = NSMutableDictionary()
    }
    mutable.removeObjectForKey("displayName")
    mutable["moduleName"] = "Ninja"
    mutable["path"] = saverPath
    mutable["type"] = 0
    CFPreferencesSetValue("moduleDict", mutable as CFPropertyList, "com.apple.screensaver", kCFPreferencesCurrentUser, kCFPreferencesCurrentHost)
    CFPreferencesAppSynchronize("com.apple.screensaver")
}

这是在运行该代码后它在我自己的机器中看起来的样子(我的预期):

enter image description here

为什么它不会在原始mac上工作的任何想法?

1 个答案:

答案 0 :(得分:1)

对于您和其他开发者(我打赌管理员或root用户),测试用户(可能是非管理员?)的权限是什么?

使用chmod 777文件名可能会修复它。