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

时间:2013-12-06 14:20:31

标签: macos cocoa plist retina-display

我有一个应用程序在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”

以下是我们关注的文件信息对话框的部分:

3 个答案:

答案 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}}

此信息改编自我在https://apple.stackexchange.com/questions/398846/where-is-the-open-in-low-resolution-setting-stored-for-an-app?noredirect=1#comment551034_398846

上提出的类似问题的答案。