Почему моя служба не удаляется при удалении? (WIX)

Даже после перезагрузки служба все еще существует, хотя исполняемый файл не работает. Я использую WIX версии 3.0.5419.0

<Component Id="IdiomServer.exe" Guid="7a751e1e-5e9e-41d2-be60-dc905ab1ccad">
  <File Id="IdiomServer.exe" Source="$(var.IdiomServer.TargetDir)IdiomServer.exe" KeyPath="yes" />
  <ServiceInstall Id="IdiomServer_Service" Name="IdiomServer 4.0" Account="LocalSystem" Description="Idiom Repository Server" ErrorControl="normal" Start="auto" Type="ownProcess" Vital="yes" />
  <ServiceControl Id="IdiomServer_Service" Name="IdiomServer 4.0" Remove="uninstall" Stop="uninstall" Wait="yes" />
</Component>

Установка службы Windows работает нормально. При удалении он ничего не делает. Раздел файла журнала из деинсталляции:

MSI (s) (D8:5C) [09:43:58:033]: Doing action: StopServices
MSI (s) (D8:5C) [09:43:58:033]: Note: 1: 2205 2:  3: ActionText 
Action start 9:43:58: StopServices.
Action ended 9:43:58: StopServices. Return value 1.
MSI (s) (D8:5C) [09:43:58:033]: Doing action: DeleteServices
MSI (s) (D8:5C) [09:43:58:033]: Note: 1: 2205 2:  3: ActionText 
Action start 9:43:58: DeleteServices.
Action ended 9:43:58: DeleteServices. Return value 1.

Любая помощь будет высоко оценена.

Ответы

Ответ 1

У меня почти идентичный установщик, который отлично работает. Единственное отличие состоит в том, что мой элемент ServiceControl имеет другой идентификатор в элементе ServiceInstall и свойство "Start =" install ".

Я подозреваю, что ваша проблема - это либо идентификатор элемента ServiceControl, либо у вас блуждающий сервис.

Попробуйте следующее:

  • Измените идентификатор ServiceControl на "IdiomServer_ServiceControl"
  • Измените имя в обоих элементах службы на "Foobar" и проверьте, установлены ли и установлены ли службы Foobar. Если это сработает, вам просто нужно вручную удалить заблудшую запись IdiomServer командой "sc".

Ответ 2

У меня также была аналогичная проблема. В моем случае я просто должен был убедиться, что оба атрибута ServiceInstall и ServiceControl "Имя" совпадают, и проблема исчезла.

Ответ 3

У меня была та же проблема, что и служба, не удаляющая. Я скопировал элементы Component, Service Install и ServiceControl из другого проекта без изменения Guid или ID. После обновления с новыми идентификаторами GUID и идентификаторами служба теперь удаляет.

Ответ 4

Если вы меняете обработчик компонента, я подозреваю, что проблема может быть связана с несанкционированным счетчиком ссылок SharedDLL в реестре по адресу: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls

Это устаревшие ссылочные счетчики стиля, которые MSI может увеличивать (если их просят) - и они переопределяют собственный подсчет ссылок MSI. По какой-то немой причине Installshield увеличивает исходный показатель ref для всех файлов (независимо от того, являются ли они версиями или нет), и это часто приводит к таинственным "бродячим файлам при удалении", возникающим при разработке. То же самое может произойти в Wix, если вы включите общее количество ссылок dll, и в редких случаях количество ссылок может быть повреждено во время основных обновлений.

Ответ 5

У меня была аналогичная проблема с описанной Рупертом. В моем случае служба не была удалена из диспетчера управления службами, а также был оставлен .exe. После долгих копаний ответ был довольно прост. В содержащем <Component> для атрибута GUID было установлено значение "(то есть пустая строка). Замена с помощью < Component... GUID =" 56CD2588-B976-4198-B815-FAB7E1E57CD7" > разрешили проблему

Ответ 6

У меня была аналогичная проблема. Т.е. удаление удаляется каждый, но запись в списке сервисов (Win 7 - локальный администратор). Сначала я установил из сетевого ресурса, и это было тогда, когда удаление не завершилось. При копировании программы установки на локальный диск перед установкой удаленная работа просто великолепна!