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

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

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

我发现Info.plist got a NSHighResolutionCapable property和我添加了Booleanto我的应用程序的Info.plist并将其设置为false但无效.这似乎不等同于“低分辨率开放”选项.

链接文档说:如果认情况下选中“打开低分辨率”复选框,您可以通过以下方式更改认值:将InfoHp中的NSHighResolutionCapable属性设置为YES,反之则不起作用…我是什么我想是一个开箱即用的解决方案.我想避免客户需要自己配置.它应该在解压缩应用程序时设置.

所以有两个问题:

a)是否可以配置与文件一起检查的“低分辨率打开”复选框等 – 例如在Info.plist中?

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

编辑12月7日(添加plist详细信息):

如plist编辑器所示:

http://oldendorf.net/stackoverflow/as_seen_in_plist_editor.png

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

http://oldendorf.net/stackoverflow/as_seen_in_modern_xcode.png

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

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

http://oldendorf.net/stackoverflow/file_info.png

解决方法

我目前无法检查,但可能是在启动服务数据库中缓存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

如果没有任何帮助,那么(从我们的上述评论)似乎尝试在新的用户帐户工作.

相关文章

Css3如何实现鼠标移上变长特效?(图文+视频)
css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)
jquery如何实现点击网页回到顶部效果?(图文+视频)
css3边框阴影效果怎么做?(图文+视频)
css怎么实现圆角边框和圆形效果?(图文+视频教程)
Css3如何实现旋转移动动画特效