In House Distribution: переустановка приложения поверх существующего, оставляет приложение в ошибке - PullRequest
4 голосов
/ 08 сентября 2011

У меня есть готовое приложение для внутреннего распространения.Я создал файл манифеста и простую страницу загрузки, чтобы загрузить приложение с личного сервера.

Если приложение не установлено на устройстве, оно загружается и устанавливается без проблем.После того, как приложение установлено, если я снова нажму кнопку загрузки, iOs спросит меня, хочу ли я установить приложение, как в первый раз, и затем начнется загрузка.

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

The 'MyApp' bundle at /private/var/mobile/Applications/15F088EB-B996-48CE-8331-A5CE85CDD74F/myapp.app does not have an executable path. Please check the bundle's Info.plist file.

Странные вещи:

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

2 - Допустим, я myapp.app с версией пакета 1.0, размещенной на моем сервере.Я устанавливаю его на устройство в первый раз, и он работает.Затем я обновляю размещенную версию до версии 2.0 пакета и снова выполняю ту же загрузку, приложение обновляется и запускается без проблем.

Вопрос 1: Есть идеи?Вопрос 2: есть ли способ справиться с этой разницей версий?Я имею в виду, как простой обходной путь, было бы здорово, если бы я мог отобразить что-то вроде: «Ваша версия обновлена» и не загружать новый пакет

Спасибо !!!

Ответы [ 3 ]

1 голос
/ 15 декабря 2011

У меня была точно такая же проблема, и я нашел странное решение, используя windows unzip и zip ...

Причиной этой проблемы для меня была перепаковка ipa с файлом, специфичным для клиента, после первоначальной сборки.Так что это может работать, а может и не работать, поскольку я не знаю основной причины вашей проблемы.

Мой ipa, plist и html-файл установки размещены на внутреннем Windows Server 2003 под управлением Tomcat.

Забыл добавить это раньше, но используемые zip / unzip были из общих файлов Symbian ...

Обязательные установки: (Мы устанавливаем их по умолчанию как часть нашей клиентской сборки и подготовки клиентасистемы)

  1. Perl (ActivePerl 5.6.1)
  2. S60 SDK 3-го издания для ОС SYMBIAN (9.1)

РЕШЕНИЕ:

  1. Убедитесь, что путь включает в себя «C: \ Program Files \ Common Files \ Symbian \ tools» и «.. \ Perl \ bin»
  2. , откройте приглашение в месте расположения файла ipa.
  3. Разархивируйте ipa, используя «unzip myapp.ipa», после чего вы увидите папку «Payload».
  4. Повторно заархивируйте пакет, используя «zip -r mynewapp.ipa Payload»

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

Я не уверен, что любой другой zip / unzip будет работать так же, как инструменты Symbians, но так как я требую, чтобы он был установлен для прежних версий s60,это то, что я использовал.Это решает мою проблему, поэтому я сейчас написал сценарий механизма развертывания, который выполняет повторное архивирование при выпуске новой версии.

При создании сценария развертывания я также обнаружил, что команда zip выдает разные результаты, если не запускается изтот же каталог, что и файлы.Получившийся ipa в этом случае был неустановим, поэтому перед использованием unzip и zip перейдите в каталог, содержащий ipa.

Надеюсь, это поможет.

1 голос
/ 23 сентября 2011

Решение сработало для меня действительно просто.Перед развертыванием новой версии измените значения «Версия пакета» и «Строка версии пакета, короткие» в файле Info.plist, чтобы отразить новую версию.Например, если установленное приложение имеет «Bundle version» 1.0, используйте 1.1.То же самое для строки версии Bundle, короткая тоже.

0 голосов
/ 20 января 2014

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...