.NET Compact Framework - автоматическое обновление CAB на Windows Mobile 6.5 - PullRequest
2 голосов
/ 28 марта 2011

Я разрабатываю функцию автоматического обновления для моего приложения 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?

Привет

Ответы [ 3 ]

0 голосов
/ 28 марта 2011

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

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

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

0 голосов
/ 14 марта 2017

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

0 голосов
/ 28 марта 2011

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

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

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

...