为什么新的Mac没有显示我的屏幕保护程序? [英] Why is a fresh Mac not displaying my screen saver?

查看:46
本文介绍了为什么新的Mac没有显示我的屏幕保护程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们编写了一个应用程序屏保忍者,该应用程序通过将其复制到〜/Library/Screen来为用户安装屏保.储户.在我的机器和其他开发者的机器上,这都可以正常工作,但是在我拥有的测试机器上,文件在那里,如果我让屏幕保护程序激活,它将选择它,但是它不会出现在列表中:

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

  func install(){var err:NSError?fileManager.copyItemAtURL(saverPackageUrl !, toURL:screensaversUrl!.URLByAppendingPathComponent("Ninja.saver"),错误:& err)如果err!= nil {NSLog(安装Screensaver Ninja时出错:\(err)")}} 

这是我们将其选择为默认值的方式:

  func setAsDefault(){可变变量:NSMutableDictionary如果让moduleDict = CFPreferencesCopyAppValue("moduleDict","com.apple.screensaver")为?NSDictionary {mutable = moduleDict.mutableCopy()as NSMutableDictionary} 别的 {可变= NSMutableDictionary()}mutable.removeObjectForKey("displayName")mutable ["moduleName"] =忍者"mutable ["path"] = saverPathmutable ["type"] = 0CFPreferencesSetValue("moduleDict",可变为CFPropertyList,"com.apple.screensaver",kCFPreferencesCurrentUser,kCFPreferencesCurrentHost)CFPreferencesAppSynchronize("com.apple.screensaver")} 

这是运行该代码后在我自己的机器上(我所期望的)的样子:

有什么想法为什么不能在原始Mac上运行?

解决方案

与您和其他开发人员(我打赌管理员还是root)相比,测试用户(可以是非管理员)有哪些权限?/p>

使用chmod 777文件名可能会解决该问题.

We wrote an application, Screensaver Ninja, that installs an screensaver for the user by copying it to ~/Library/Screen Savers. This works fine in my machine and the other developer's machine but in a testing machine I have, the file is there, if I let the screensaver activate, it selects it, but it doesn't appear on the list:

This is the code we use to install it:

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

and this is how we select it as default:

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")
}

This is how it looks in my own machine (what I expected) after running that code:

Any ideas why it wouldn't work on a pristine mac?

解决方案

What are the permissions for the Test user (could they be non-admin?) vs those for you and other Developers (I bet Admin or root)?

Use chmod 777 filename might fix it.

这篇关于为什么新的Mac没有显示我的屏幕保护程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆