2013-12-06 1 views
5

У меня есть приложение, которое ломается в режиме HiDPI, если я не выбрал «получить информацию» в finder и там отметьте флажок «открыть в низком разрешении». Фиксация приложения не является вариантом, так как это было сделано с использованием программного обеспечения для разработчиков, которое уже не активно поддерживается его поставщиком.Как включить «использовать низкое разрешение» на дисплее Retina для приложения при отправке?

Теперь вот что: Когда я беру приложение, поставлю его на рабочий стол, застегните его, а затем установите флажок «Открыть с низким разрешением» в true, удалите приложение и разархивируйте оригинал, который установлен флажок , Таким образом, везде, где OS X хранит свойство «открыть с низким разрешением», это не вместе с файлом. Это означает, что при распространении приложения на другие системы Retina Mac он будет разбит снова, пока не будет вручную проверяться этот флажок для каждой системы.

Я обнаружил, что Info.plist got a NSHighResolutionCapable property и я добавил, что Boolean моего приложения Info.plist и установить его на false, но безрезультатно. Это, похоже, не эквивалентно опции «open in low resolution».

Связанный документ саис, что: Если «Открыть в низком разрешении» флажок установлен по умолчанию вы можете изменить значение по умолчанию: Установка NSHighResolutionCapable атрибута ДА, в Info.plist Ну, обратный не работает ... Что бы я хотел, это решение из коробки. Я бы хотел, чтобы клиенты не настраивали это самостоятельно. Его следует просто установить при распаковке приложения.

Так два вопроса:

а) Можно ли настроить, что равно «открыть в низком разрешении» флажок проверяется вместе с файлом - например, в Info.plist?

b) Где OS X хранит выбор, который я сделал для флажков «открыто в низком разрешении», которые я получаю через экран информации Finder?

EDIT декабря, 7 (детали добавлены Plist):

Как видно в редакторе Plist:

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

Как видно в современном Xcode на Mavericks:

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

Единственное отличие - это имя, которое отображается. Xcode называет его «High Resolution Способный» в то время как в файле он по-прежнему на самом деле «NSHighResolutionCapable»

Вот часть диалога о файле мы заботимся:

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

+0

Установки 'NSHighResolutionCapable' к ложному (' NO' в XCode) работ для меня - приложение должно открываться с низким разрешением, а флажок «Открыть в низком разрешении» должен быть проверен, но неактивен. Просто проверил, что XCode 5.0.2 работает на Mavericks. Можете ли вы показать содержимое своего Info.plist? – MattR

+0

@MattR Большое спасибо за ваш ответ, я добавил скриншоты как редактора plist, так и Xcode, также на Mavericks, и я добавил ссылку для загрузки в пакет приложения с этой проблемой. –

+0

C.O., попробуйте ввести новую учетную запись пользователя. Возможно, снятие флажка в Get Info также сохраняется в отдельном месте вне приложения, так же, как и проверка. Поэтому ваши тесты с Info.plist могут быть недействительными, потому что они «переопределены» с помощью пользовательской настройки. Еще одна попытка попробовать - дублировать другое приложение, для которого вы никогда не переключали этот параметр в окне Get Info и не пытались ли редактировать значение Info.plist. –

ответ

9

Я не в настоящее время чтобы проверить, но, вероятно, присутствие или отсутствие ключа NSHighResolutionCapable кэшируется в базе данных служб запуска. Именно там хранятся большинство свойств приложения, которые указаны в Info.plist. Тот факт, что копирование приложения на флэш-накопитель USB работало, похоже, подтверждает эту теорию.

Вы можете искать выход следующей команды для расслоения ID вашего приложения, а затем посмотреть, если есть что-то, очевидно, связанно с возможностями высокого разрешения:

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

Если есть, то, после того, как вы измените информацию о приложении .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

Принимает немного больше изящества, вам необходимо сбросить -ser-домен.

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f/Applications -вс местный, пользователь

Смежные вопросы