Почему мой сервис не удаляется при удалении? (WIX) - PullRequest
20 голосов
/ 16 сентября 2009

Даже после перезагрузки служба все еще существует, хотя исполняемый файл исчез. Я использую 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.

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

Ответы [ 6 ]

14 голосов
/ 16 сентября 2009

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

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

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

  • Изменить идентификатор ServiceControl на "IdiomServer_ServiceControl"
  • Измените Имя в обоих элементах Сервиса на «Foobar» и проверьте, установлен и удален ли сервис Foobar. Если это работает, вам, возможно, просто нужно вручную удалить случайную запись IdiomServer с помощью команды "sc".
12 голосов
/ 02 февраля 2012

У меня тоже была похожая проблема. В моем случае мне просто нужно было убедиться, что атрибуты «Name» ServiceInstall и ServiceControl одинаковы, и проблема исчезла.

3 голосов
/ 11 сентября 2013

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

1 голос
/ 02 ноября 2010

У меня была проблема, аналогичная описанной Рупертом. В моем случае служба не была удалена из диспетчера управления службами, и файл .exe также остался позади. После долгих поисков ответ был довольно простым. В содержащем элементе атрибут GUID был установлен на "" (т.е. пустая строка). Замена на решила проблему

1 голос
/ 17 сентября 2009

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

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

0 голосов
/ 24 сентября 2014

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

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