Проблема удаления MSI: Ошибка 1001 -> Сохраненный словарь состояний содержит противоречивые данные и может быть поврежден - PullRequest
3 голосов
/ 08 июля 2011

Мне нужно создать несколько служб Windows, и, очевидно, я хотел бы упаковать их в хороший установщик.

Поскольку я не был знаком с созданием / установкой Сервиса, я в основном использовал код из следующего примера:

Установка расширенного сервиса

Я не изменил ProjectInstaller или InstallActions и просто подключил свои собственные службы (мониторинг / преобразование файлов).

Сборка и компиляция кода работает A-OK:

  1. Установщик работает, службы установлены (но НЕ запущены, как можно было ожидать)
  2. Мои службы сами все работают
  3. Uninstall FAILS с указанием ошибки из заголовка

Что очень странно:

Если после неудачной деинсталляции я запускаю «Восстановить», а затем вручную удаляю * .Installstate из папки установки, деинсталлятор волшебным образом работает.

Это сводит меня с ума.

Думаю, я мог бы просто задокументировать эту причуду для потенциальных пользователей моего сервиса, но мне не нравится не знать, что на самом деле происходит.

Отладка такого рода вещей действительно трудна (даже не знаю, как), а документация очень скудна (даже не существует).

Кто-нибудь с советами?

Ответы [ 5 ]

3 голосов
/ 28 апреля 2016

Я решил эту проблему следующим образом:

  • Перейти в папку установки
  • Отредактируйте файл xxxxxxx.InstallState с помощью блокнота или редактора XML (где xxxxx - это название вашей службы)
  • Перейти к ArrayOfKeyValueOfanyTypeanyType узлу, а затем к Keys узлу
  • Удалить anyType ребенок
  • Перейдите в узел Значения и удалите все anyType child
  • Сохраните файл и попробуйте удалить

Это работает для меня. С уважением

2 голосов
/ 24 июля 2012

У меня возникла та же проблема, и мне удалось ее исправить, добавив надлежащие условия в настраиваемые действия. В моем случае я добавил Не установлено к моему установщику службы Windows на этапе установки и удаления. После этого не было ошибок. Надеюсь, это поможет! Для получения дополнительной информации по этим вопросам здесь .

1 голос
/ 24 ноября 2011

Зайдите в панель управления и сначала восстановите настройки. После успешного ремонта вы сможете удалить.

1 голос
/ 04 октября 2011

Я знаю, что это старый пост, но я исправил свою проблему, вызвав базу классов Installer, прежде чем выполнять свои пользовательские действия. Я случайно добавил свой код базовыми вызовами.

0 голосов
/ 12 августа 2016

У меня была похожая проблема, когда пакет установщика Windows (.msi) не удалялся, как ожидалось.Обходной путь для меня заключался в использовании командной строки для удаления с помощью InstallUtil.exe.Затем переустановите службу, используя InstallUtil.exe.После этого я наконец смог использовать старую MSI для удаления.После того, как я удалил с помощью старого MSI, я смог использовать НОВЫЙ MSI для установки, и все работало как нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...