Мы написали приложение, Screensaver Ninja, которое устанавливает заставку для пользователя, скопировав ее в ~/Library/Screen Savers. Это отлично работает на моей машине и на машине другого разработчика, но на тестовой машине у меня есть файл, если я разрешаю заставки активировать, он выбирает его, но он не отображается в списке:Почему новый Mac не отображает экранную заставку?
Это код, который мы используем для его установки:
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")
}
Вот как это выглядит в моя машина (что я ожидал) после выполнения этого кода:
Любые идеи, почему это не будет работать на нетронутых макинтош?
Где программирование в этом вопросе? – riodoro1
@ riodoro1 мы написали приложение, которое устанавливает Ninja.saver, скопировав его в ~/Library/Screen Savers. Мы изучаем, какие еще действия необходимо выполнить для правильной установки заставки на MacOSX (на нетронутой машине). – Pablo
@ riodoro1 Я могу скопировать и вставить код, который мы используем, чтобы скопировать файл, если это вас радует, но очень тривиальный код. – Pablo