Нет необходимости создавать специальное приложение для обновления, по крайней мере, на WM 6 с .netcf 3.5. Я загружаю файл .cab с помощью веб-службы, а затем запускаю новый процесс и запускаю wceload, чтобы выполнить установку без вывода сообщений. Это заботится о закрытии моего работающего приложения, его удалении и последующей установке, как указано в
Документы MSDN здесь
В Windows Mobile версии 5.0 и более поздних, при использовании Wceload.exe для переустановки CAB-файла, Wceload.exe удаляет ранее установленную версию CAB-файла перед установкой новой версии. Во время удаления этого процесса Wceload.exe закрывает все запущенные в настоящий момент исполняемые файлы, которые были установлены на целевом устройстве, используя CAB-файл, основываясь на их имени файла. Wceload.exe также закрывает все исполняемые файлы, которые являются целью файловой операции, такой как перемещение или копирование. Чтобы закрыть исполняемый файл, Wceload.exe отправляет WM_CLOSE во все окна верхнего уровня, принадлежащие процессу. Если процесс не завершается своевременно после получения сообщения WM_CLOSE, то Wceload.exe принудительно закрывает его, вызывая TerminateProcess. Wceload.exe не пытается закрыть исполняемые файлы, отправленные в образе времени выполнения на целевом устройстве.
У меня также есть cesetup.dll для дополнительной очистки файлов во время удаления.
Большая проблема, с которой я столкнулся, заключается в том, что я не могу изменить папку установки для моего приложения при автоматической установке, и по умолчанию используется свойство% installDir% из моего файла .inf. И создание отдельного CAB-файла для каждого устройства, которое требуется обновить, - не очень хорошее решение.