.app не имеет пути к исполняемому файлу после установки поверх старой сборки

У меня есть сборка TestFlight, которую скачал один пользователь, затем мы выпустили новую версию, и они установили ее поверх этой сборки. Они получили эту ошибку при попытке запустить приложение:

Ср, 31 августа, 20:13:28 unknown SpringBoard[1176] : Пакет «X» в /private/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/X.app не имеет пути к исполняемому файлу. Пожалуйста, проверьте файл Info.plist пакета.

Я проверил plist приложения с помощью PhoneDisk, и исполняемый файл совпал с именем приложения. Любые идеи?


person roblocop    schedule 01.09.2011    source источник
comment
Я столкнулся с одной и той же проблемой на двух своих устройствах, использующих HockeyKit, на одном установлена ​​новейшая бета-версия 5.0, а на другом — 4.3.3. Удивительно, но перезагрузка устройства заставляет его работать, пока вы снова не перезапишете приложение. Я пробовал различать приложения до и после перезаписи, извлекая пакеты приложений с устройства с помощью PhoneView, и они идентичны.   -  person Justin Weiss    schedule 01.09.2011


Ответы (4)


В моем случае я не обновлял CFBundleShortVersionString между версиями, которые пытался загрузить. Как только я обновил версию с 1.1.9.1 до 1.1.9.2 и повторно загрузил сборку adhoc, сбой прекратился.

Я предполагаю, что Apple кэширует часть информации в Info.plist для специальных сборок, и просто CFBundleVersion недостаточно, чтобы снести кеш.

person Justin Weiss    schedule 01.09.2011
comment
Спасибо, ваш ответ только что помог мне избежать катастрофы с истекающим сертификатом предприятия и обновлением по беспроводной сети. В моем случае у нас вообще не было строкового значения короткой версии в старой версии. Добавление его в обновленное приложение все исправило. - person Mike Weller; 16.12.2011
comment
Я установил сборку App Store поверх сборки Xcode и получил эту проблему; спасибо за совет по кешу - перезагрузка iPhone все уладила (т.е. вы пытались выключить и снова включить его?). - person penfold; 14.05.2012
comment
Не знаю, почему гребаное яблоко продолжает это делать! ну, я должен быть в курсе, чтобы читать, что было новым и скрытым, каждый раз, когда они обновляются. - person Yoon Lee; 22.02.2014

Из «Core Foundation Keys»: «CFBundleShortVersionString (строка — iOS, Mac OS X) указывает номер версии выпуска пакета, который идентифицирует выпущенную итерацию приложения. Номер версии выпуска — это строка, состоящая из трех целых чисел, разделенных точками. . Первое целое число представляет основные версии приложения, например, версии, которые реализуют новые функции или значительные изменения. Второе целое число обозначает версии, которые реализуют менее важные функции. Третье целое число представляет собой отладочные выпуски. Значение этого ключа отличается от значения для «CFBundleVersion», который идентифицирует итерацию (выпущенную или невыпущенную) приложения. Этот ключ можно локализовать, включив его в ваши файлы InfoPlist.strings».

CFBundleShortVersionString также не должен содержать букв, допускаются только целые числа. Итак, если у вас есть что-то вроде 1.2.5b1, приложение не запустится, как ни странно, с ошибкой типа «... нет пути к исполняемому файлу ...».

person drct    schedule 03.07.2012

Я столкнулся с этой конкретной ошибкой в ​​случае, когда наша обычная версия приложения была n.n.n, а в обновлении мы перешли к версии приложения, которая была n.n.n.n.

У нас не было времени вникать в это глубоко, но простой возврат к исходной схеме нумерации решил проблему.

person sean808080    schedule 26.06.2013

Вы должны указать два ключа (CFBundleVersion и CFBundleShortVersionString) в Info.plist.

CFBundleVersion (String — iOS, OS X) указывает номер версии сборки пакета, который идентифицирует итерацию (выпущенную или невыпущенную) пакета. Номер версии сборки должен быть строкой, состоящей из трех неотрицательных целых чисел, разделенных точкой, причем первое целое число должно быть больше нуля. Строка должна содержать только цифры (0–9) и символы точки (.). Начальные нули усекаются от каждого целого числа и будут игнорироваться (то есть 1.02.3 эквивалентно 1.2.3). Этот ключ не локализуется.

CFBundleShortVersionString указывает номер версии пакета, который идентифицирует выпущенную итерацию приложения.

Вы можете добавлять CFBundleVersion на 1 каждый раз, когда вы создаете специальную версию для своего теста или пользователя с той же версией выпуска (CFBundleShortVersionString).

Например: ваша CFBundleShortVersionString — 1.2.3, ваша CFBundleVersion — 1000. Когда вы исправите ошибку и создадите специальную версию для тестирования, вы можете изменить CFBundleShortVersionString на 1001.

person KudoCC    schedule 20.01.2014