Деинсталляция не работает для приложения MSI - Ошибка 1722
Я создал MSI, используя WIX 3.11. Я сделал некоторые настройки для установщика, чтобы установить приложение в пользовательскую папку. Я также пишу Установить путь к значению реестра в разделе HKLM\Software.
Я читаю значение реестра в командном файле для одного из моих вариантов использования.
Установка прошла успешно, и приложение работает нормально.
Но при удалении я сталкиваюсь с проблемой ниже -
Откроется окно удаления с сообщением - Перед продолжением установки необходимо закрыть следующие приложения: [MyApplication]
В журнале удаления при удалении службы я вижу ниже ошибку - Ошибка 1722. Проблема с этим пакетом установщика Windows. Программа, запущенная как часть установки, завершилась не так, как ожидалось. Обратитесь в службу поддержки или к поставщику пакета.
Если я удаляю сервис вручную, я не вижу никаких ошибок, и сервис удаляется. Не уверен, почему не удается удалить.
Пожалуйста, пролите немного света на это.
1 ответ
Остановите службу перед удалением: в скомпилированном MSI какие записи у вас есть в ServiceControl table
? Вам необходимо остановить службу до того, как ее исполняемый файл будет удален. См. Пример установки службы WiX, связанный с ниже.
Сбой пользовательского действия: также возможно, что у вас есть пользовательское действие, которое пытается запустить пакетный файл, который уже был удален при попытке его запустить. This can be a custom action that should not run on uninstall (conditioning is wrong), or you have sequenced it incorrectly so the batch file is gone from disk - courtesy of the uninstall - before the custom action can run successfully
, Вам нужно переместить пользовательское действие ранее в последовательности установки / удаления или лучше подготовить его, чтобы оно никогда не выполнялось при удалении. Обе проблемы очень распространены. Имейте в виду, что обычно не удается обусловить настраиваемые действия, чтобы они выполнялись неожиданно. Очень часто они запускаются во время значительных удалений обновлений нежелательно.
CA для пакетных файлов: что бы это ни стоило - и без обид: использование пакетных файлов в пользовательских действиях, на мой взгляд, является анти-паттерном MSI. В основном обработка ошибок не выполняется и, следовательно, отсутствует управление и восстановление после ошибок. И вообще нет поддержки отката MSI. На мой взгляд, лучше всего использовать пользовательские действия на C++ (минимальные зависимости, хорошая отладка, полнофункциональный язык, большой API-интерфейс). Просто так сказано. Все зависит от того, насколько велик ваш дистрибутив. Для внутренних приложений можно получить больше, чем для действительно глобального распространения пакетов. Это связано со сложностью развертывания (см. Раздел чуть ниже на странице). Есть так много источников ошибок.
Установка службы WiX: возможно, посмотрите на этот пример образец разметки WiX от Rainer Stropek: WiXSamples - github.com/rstropek. Пожалуйста, проверьте
ServiceControl element
,
Распространенные проблемы с MSI: я ненавижу "подбрасывать" этот контент. По сути, это то, что вы не можете легко найти в книгах - и на то есть веские причины. Некоторые эмпирические правила и мнения в хаотичной форме, но вот, если вы хотите проверить это: Как избежать типичных ошибок дизайна в моем решении развертывания WiX / MSI? Только честные мнения и практические советы - никаких претензий на "правильность", но это должно помочь установить надежность. С надеждой.