C.O*_*.O. 6 macos cocoa plist retina-display
我有一个应用程序在HiDPI模式中断,除非我在finder中选择"get Info"并勾选"低分辨率打开"复选框.修复应用程序不是一种选择,因为它是使用不再由其供应商实际维护的创作软件制作的.
现在就是这样:当我拿到应用程序时,将它放在桌面上,压缩它,然后将"低分辨率打开"复选框设置为true,删除应用程序并解压缩原始应用程序复选框保持选中状态.因此,无论OS X将属性"以低分辨率打开"存储在哪里,它都不与文件一起存储.这意味着在将应用程序分发到其他Retina Mac系统时,它将再次被破坏,直到手动检查每个系统上的复选框.
我发现Info.plist
有一个NSHighResolutionCapable
属性,我把它添加Boolean
到我的应用程序Info.plist
并设置为false
但无济于事.这似乎不等同于"低分辨率开放"选项.
链接文档说:如果默认情况下选中"以低分辨率打开"复选框,则可以通过以下方式更改默认值:将NSHighResolutionCapable属性设置为YES,在Info.plist中,反之则不起作用...我是什么我想是一个开箱即用的解决方案.我想避免客户需要自己配置.它应该在解压缩应用程序时设置.
所以有两个问题:
a)是否可以配置等于"低分辨率打开"复选框和文件一起检查 - 例如在Info.plist
?
b)OS X在哪里存储我通过Finder的信息屏幕进行的"低分辨率打开"复选框的选择?
编辑12月7日(添加plist详细信息):
如plist编辑器所示:
正如小牛队的现代Xcode中所见:
唯一的区别是显示的名称.Xcode称之为"高分辨率能力",而在文件中它仍然是"NSHighResolutionCapable"
这是我们关心的文件信息对话框的一部分:
Ken*_*ses 11
我目前无法检查,但可能NSHighResolutionCapable
是在启动服务数据库中缓存了密钥的存在与否.这就是存储Info.plist中指定的应用程序的大多数属性的位置.将应用程序复制到USB拇指驱动器的事实似乎证实了这一理论.
您可以搜索以下命令的输出以获取应用程序的包ID,然后查看是否存在与高分辨率功能明显相关的任何内容:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -dump
Run Code Online (Sandbox Code Playgroud)
如果有,那么,在修改应用程序的Info.plist之后,可能会这样做:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /path/to/the/modified.app
Run Code Online (Sandbox Code Playgroud)
如果没有,那么也许更强大:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -seed
Run Code Online (Sandbox Code Playgroud)
如果没有任何帮助,那么(从我们的上述评论)似乎尝试在新的用户帐户工作.
归档时间: |
|
查看次数: |
10113 次 |
最近记录: |