我有一个应用程序在HiDPI模式中断,除非我在finder中选择“get Info”并勾选“低分辨率打开”复选框。修复应用程序不是一个选项,因为它是使用不再由其供应商实际维护的创作软件制作的。
现在就是这样:当我拿到应用程序时,将其放在桌面上,然后将其压缩,然后将“低分辨率打开”复选框设置为true,删除应用程序并解压缩原始应用程序复选框保持选中状态。 因此,无论OS X将属性“以低分辨率打开”存储在哪里,它都不与文件一起存储。这意味着在将应用程序分发到其他Retina Mac系统时,它将再次被破坏,直到手动检查每个系统上的复选框为止。
我发现Info.plist
got a NSHighResolutionCapable
property我将Boolean
添加到我应用的Info.plist
并将其设置为false
但无济于事。这似乎不等同于“低分辨率开放”选项。
链接文档是: 如果默认选中“以低分辨率打开”复选框,则可以通过以下方式更改默认值:在Info.plist中将NSHighResolutionCapable属性设置为YES 嗯,反过来不起作用......我想要的是开箱即用的解决方案。我想避免客户需要自己配置。它应该在解压缩应用程序时设置。
所以有两个问题:
a)是否可以配置与文件一起检查的“低分辨率打开”复选框等 - 例如在Info.plist
?
b)OS X在哪里存储我通过Finder的信息屏幕进行的“以低分辨率打开”复选框所做的选择?
编辑12月7日(添加了plist详细信息):
如plist编辑所见:
正如现代Xcode on Mavericks所见:
唯一的区别是显示的名称。 Xcode称之为“高分辨率能力”,而在文件中它仍然是“NSHighResolutionCapable”
以下是我们关注的文件信息对话框的部分:
答案 0 :(得分:11)
我目前无法检查,但是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 :(得分:1)
需要更加细腻,您需要重置-user-domain。
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f / Applications -all local,user
答案 2 :(得分:0)
我会以错误的方式回答这些问题
b)首选项密钥称为LSHighResolutionModeIsMagnified
,并作为按应用程序条目存储在~/Library/Preferences/com.apple.LaunchServices/com.apple.LaunchServices.plist
a)您可以编写应用程序的首选项。我使用plistbuddy
来为3
设置低分辨率(数字OpenSCAD.app
),其中org.openscad.OpenSCAD
的束ID为/usr/libexec/PlistBuddy -c "Set :LSHighResolutionModeIsMagnified:org.openscad.OpenSCAD:1 3" ~/Library/Preferences/com.apple.LaunchServices/com.apple.LaunchServices.plist
{{1}}上提出的类似问题的答案。