.NET Compact Framework - автоматическое обновление CAB в Windows Mobile 6.5

Я разрабатываю функцию автоматического обновления для своего приложения Windows Mobile 6.5 .NET CF 3.5. Я пришел к следующему решению.

  1. Я использую SOAP WebService, чтобы проверить, доступна ли новая версия приложения.
  2. Если есть более новая версия, я получаю URL-адрес в ответе SOAP, скачайте ее. Новая версия - это просто полный установочный файл CAB.
  3. Как только версия загружена, я вызываю wceload с параметрами / silent и / noui в загруженном CAB. Я хочу установку без участия оператора, потому что пользователи этого приложения - водители автомобилей, которые не обладают достаточными навыками в управлении мобильными устройствами.

Процесс идет гладко, за одним исключением - параметры / noui или / silent заставляют wceload не отображать никакие окна. Мое приложение просто исчезает и в фоновом режиме устанавливается новая версия. Проблема в том, что драйверы иногда пытаются снова включить приложение слишком рано. Еще один момент: я бы хотел, чтобы мое приложение запускалось автоматически после завершения процесса обновления. Поэтому я создал отдельное exe-приложение, которое просто вызывает wceload и, если оно завершает установку, запускает обновленную версию. Все работает с исключением onr - этот установщик exe является частью моего CAB, поэтому он находится внутри него, и когда wceload устанавливает CAB, он закрывает установщик (потому что он является частью установщика CAB). Таким образом, процесс установки прерывается. У меня вопрос - есть ли способ «сказать CAB», что не следует прерывать конкретный exe из тех, которые являются частью этого CAB?

С Уважением


person cubesoft    schedule 28.03.2011    source источник


Ответы (3)


На самом деле он не отвечает на ваш вопрос, но вы можете сделать следующее:

  • запустите другой (небольшой) исполняемый файл, показывающий экран «Выполняется обновление».
  • делай свои дела за кулисами

[конец настройки] => он запускает ваше обновленное приложение [Подождите немного] => он закрывается, и обновленное приложение готово к использованию

person anael    schedule 28.03.2011

Установка CAB и WCELOAD ограничены во многих отношениях. Вам нужен какой-то пользовательский интерфейс, который сообщает пользователю, что что-то происходит, и вы хотите условно установить определенные части CAB, а это просто невозможно с помощью wceload из коробки. Возможно, вы сможете взломать часть этого вместе с специальной установочной DLL , но я думаю, что «условно устанавливаемые части» по-прежнему останутся сдерживающим фактором.

Одна альтернатива - не использовать wceload, а вместо этого создать свой собственный инструмент извлечения CAB. Затем вы можете создать свой собственный пользовательский интерфейс и пользовательскую логику на основе имени файла и т. Д. Я собрал SDK и пример установщика несколько лет назад, который позволил бы это - правда, это не бесплатно, но самый дешевый вариант - всего 5 долларов, так что это довольно близко.

Новые CAB-файлы на самом деле содержат XML-документ, описывающий действия по установке (кроме того на более старый дескриптор двоичного файла .000, который декодирует SDK, который я написал), поэтому также возможно, что вы могли бы выполнить все извлечение, просто используя его, и сэкономить 5 долларов.

person ctacke    schedule 28.03.2011

Не пользуйтесь такси. Используйте пакет tar.gz с исполняемым файлом и кабиной внутри. Используйте SharpZipLib для распаковки. Просто запустите исполняемый файл, чтобы выполнить работу. Используйте инструмент \ windows \ wceload для запуска установки cab.

person Redwolf    schedule 14.03.2017