Почему моя служба не удаляется при удалении? (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 - локальный администратор). Сначала я установил из сетевого ресурса, и это было тогда, когда удаление не завершилось. При копировании программы установки на локальный диск перед установкой удаленная работа просто великолепна!