【问题标题】:Why is a fresh Mac not displaying my screen saver?为什么新的 Mac 不显示我的屏幕保护程序?
【发布时间】:2015-06-05 04:02:54
【问题描述】:

我们编写了一个应用程序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)")
    }
}

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

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

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

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

【问题讨论】:

  • 这道题的编程在哪里?
  • @riodoro1 我们编写了安装 Ninja.saver 的应用程序,将其复制到 ~/Library/Screen Savers。我们正在研究需要执行哪些其他操作才能在 MacOSX(原始机器上)上正确安装屏幕保护程序。
  • @riodoro1 我可以复制并粘贴我们用来复制文件的代码,如果这让您满意的话,但这是非常琐碎的代码。
  • 我看到该问题已被标记为要移至超级用户,我看不出超级用户比堆栈溢出更适合此类问题。

标签: objective-c macos cocoa swift screensaver


【解决方案1】:

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

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

【讨论】:

  • ... 还要检查 GateKeeper 的差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 2015-08-29
  • 2012-07-27
相关资源
最近更新 更多