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

pup*_*eno 8 macos cocoa objective-c screensaver swift

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

在此输入图像描述

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

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

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

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")
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

任何想法为什么它不适用于原始的mac?

Cra*_*rts 1

测试用户(他们可以是非管理员吗?)与您和其他开发人员(我打赌管理员或根用户)的权限是什么?

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