【发布时间】: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