У меня проблемы с OTA-развертыванием написанного на заказ приложения. Я прочитал множество тем в других местах, и у меня была смешанная помощь, но в моем конкретном случае ничто из этого не помогло. Поэтому я подумал, что объясню свою точную ситуацию и попытаюсь получить здесь некоторую помощь.
Я использую BES версии 4.1.5 (Bundle 79) для Microsoft Exchange. Написанное нами приложение разделено на 5 модулей, которыми мы управляем, и еще 4 модуля, которые являются сторонними библиотеками, которые нам необходимы. Таким образом, для наших модулей номера версий регулярно меняются, но для других они почти всегда останутся такими же.
У нас есть файл alx, который идентифицирует все необходимые файлы, и фактически я могу без проблем создать конфигурацию программного обеспечения и развернуть приложение. Однако я пытаюсь поддерживать несколько версий нашего приложения на BES и иметь возможность выбирать, какую версию я хочу развернуть для каждого пользователя. Я пробовал это несколькими способами (как я уже сказал, я прочитал много других тем с решениями этой проблемы), но каждый, похоже, связан со своей проблемой.
Прежде всего, я попытался просто создать разные конфигурации для каждой версии приложения, но поскольку у каждой из них был одинаковый идентификатор приложения, BES сообщила мне, что я не могу этого сделать.
Я где-то читал, что решение заключалось в создании второй общей папки (например, \ Program Files \ Common Files \ RIM) и добавлении материала apploader и новой версии приложения в эту папку. Затем я мог бы создать вторую конфигурацию программного обеспечения с тем же идентификатором приложения. Результат этого казался многообещающим для начала. Когда я изменил конфигурацию, назначенную пользователю, новая версия вышла нормально. Но впоследствии BES сообщил, что состояние устройства было недопустимым, а это означало, что я не мог ничего нажимать, пока не активировал устройство. Я предполагаю, что это связано с тем, что первая конфигурация никогда не была запрещена, поэтому старая версия не была удалена, и устройство, по сути, сообщило, что на нем установлено несколько версий одного и того же приложения.
Следующее предложение, которое я получил, заключалось в изменении идентификатора приложения для каждой версии, например. чтобы включить номер версии. Это означало, что каждую версию приложения можно было включить в одну конфигурацию, и я мог установить одну из них как запрещенную, а другую как требуемую. Сначала это сработало, и была развернута первая версия. Но когда я переключился (т. Е. Старая версия стала запрещенной и требовалась новая), BES сообщила, что требуется обновление, и удалила старую версию. Устройство перезагружается, и старая версия исчезает, но новая версия не выгружается. Я проверил BES, но он все равно сказал, что требуется обновление. Я проверил файлы журналов и обнаружил:
[40000] (11/12 09:50:27.397):{0xEB8} {abc@abc.com, PIN=1234, UserId=2}SCS::PollDBQueueNewRequests - Queuing POLL_FOR_MISSING_APPS request
[40000] (11/12 09:50:28.241):{0xE9C} RequestHandler::PollForMissingApps: Starting Poll For Missing Apps.
[40304] (11/12 09:50:28.241):{0xE90} WorkerThreadPool:: ThreadProc(): Thread released with empty queue
[40000] (11/12 09:50:28.241):{0xE9C} SCS::RemoveAppDeliveryRequests - No App Delivery Requests purged for User id 2
[30000] (11/12 09:50:28.960):{0xE9C} Discard duplicate module group "name" on device
[30000] (11/12 09:50:28.960):{0xE9C} Discard duplicate module group "name" on device
[40000] (11/12 09:50:29.163):{0xE9C} RequestHandler::PollForMissingApps: Completed Poll For Missing Apps, elapsed time 0.922 seconds.
(Вы заметите, что я удалил фактические имена, адреса электронной почты и т. Д. По соображениям конфиденциальности. Но один вопрос: откуда взялось имя группы модулей? В моем случае оно близко к идентификатору приложения, но не включает номер версии который я добавил в конце, чтобы заставить его работать. Эта информация встроена в файл COD или что-то в этом роде ??)
Значит, он сообщает о дублирующейся группе модулей на устройстве? Что это значит? Я проверил свойства устройства (как указано в BES) и подтвердил, что модули со старыми номерами версий все еще присутствуют на устройстве. Значит, удалили приложение, а не модули ?? Я проверил устройство, и модули исчезли, так что это просто сообщение BES, что они все еще там ?? Я проверил базу данных, и в ней есть модули в таблице SyncDeviceMgmt. Если я удалю их из БД, BES изменится и отобразит «Требуется установка», и вот, выйдет новая версия приложения.
В конце концов, мой вопрос: есть ли у кого-нибудь еще какие-либо предложения о том, как справиться с обновлением нашего индивидуализированного приложения OTA с BES? Или может кто-нибудь указать на то, что я делаю неправильно в том, что я описал выше, что могло бы решить мои проблемы? Я предполагаю, что вопрос в том, почему база данных поддерживает, что модули находятся на устройстве после их удаления?
Спасибо за любую помощь, которую вы можете предоставить.
Таким образом, решение состоит в том, чтобы убедиться, что каждая конфигурация, которую вы создаете в BES для каждой версии, должна ссылаться на все различные версии модулей. Таким образом, в конфигурации для установки v1.0 все модули 1.0 должны быть установлены как обязательные, а все остальные модули для других версий - запрещены.
Следует помнить, что всякий раз, когда вы добавляете новую версию, вам нужно вернуться ко всем другим конфигурациям, добавить эти новые модули и установить для них запрет на использование.