首页 文章

如何在运输时为应用程序启用Retina显示屏上的“使用低分辨率”?

提问于
浏览
6

我有一个应用程序在HiDPI模式中断,除非我在finder中选择“get Info”并勾选“低分辨率打开”复选框 . 修复应用程序不是一种选择,因为它是使用不再由其供应商实际维护的创作软件制作的 .

现在就是这样:当我拿到应用程序时,将它放在桌面上,压缩它,然后将“低分辨率打开”复选框设置为true,删除应用程序并解压缩原始应用程序复选框保持选中状态 . 因此,无论OS X将属性“以低分辨率打开”存储在哪里,它都不与文件一起存储 . 这意味着在将应用程序分发到其他Retina Mac系统时,它将再次被破坏,直到手动检查每个系统上的复选框 .

我发现Info.plist got a NSHighResolutionCapable property和我将 Boolean 添加到我的应用程序 Info.plist 并将其设置为 false 但无济于事 . 这似乎不等同于"open in low resolution"选项 .

链接文档说:如果默认情况下选中“打开低分辨率”复选框,您可以通过以下方式更改默认值:将InfoHp中的NSHighResolutionCapable属性设置为YES,反之则不起作用...我是什么'd like is an out of the box solution. I' d希望避免客户需要自己配置 . 它应该在解压缩应用程序时设置 .

所以有两个问题:

a)是否可以配置与文件一起检查的"open in low resolution"复选框等于 - 例如在 Info.plist

b)OS X在哪里存储我通过Finder的信息屏幕进行的“低分辨率打开”复选框的选择?

EDIT December, 7 (added plist details)

如plist编辑器所示:

正如小牛队的现代Xcode中所见:

唯一的区别是显示的名称 . Xcode将其称为“高分辨率能力”,而在文件中它仍然是“NSHighResolutionCapable”

这是我们关心的文件信息对话框的一部分:

2 回答

  • 11

    我'm not currently in a position to check, but it'可能是在启动服务数据库中缓存 NSHighResolutionCapable 键的存在与否 . 这就是存储Info.plist中指定的应用程序的大多数属性的地方 . 将应用程序复制到USB拇指驱动器的工作似乎证实了这一理论 .

    您可以搜索以下命令的输出以获取应用程序的包ID,然后查看是否存在与高分辨率功能明显相关的任何内容:

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -dump
    

    如果有,那么,在修改应用程序的Info.plist之后,可能会这样做:

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /path/to/the/modified.app
    

    如果没有,那么也许更强大:

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -seed
    

    如果这些都没有帮助,那么(从上面的评论中)似乎尝试在新的用户帐户中工作 .

  • 1

    需要更多技巧,您需要重置-user-domain .

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f / Applications -all local,user

相关问题