служба Windows не удаляется при удалении установки, созданной в WIX

Я создал установку, которая устанавливает службу Windows, но когда я ее удаляю, служба остается запущенной и не удаляется. Я создал msi-файл установки в Wix.

 <DirectoryRef Id="INSTALLDIR">
       <Component Id='MyComponent' Guid='CDBA9BC4-F839-4CAB-8AB0-4397EC079541'>
<File Id='LogFWService' Name='LogFWService.exe' Source="$(var.LFShared)\LogFWService.exe" KeyPath="yes" />
 <ServiceInstall Id="InstallLFService" Name="LogFWService" DisplayName="OpenFramework Logging Service" Start="auto" ErrorControl="normal" Description="Captures log events and inserts the log messages into database" Type="ownProcess">
           <ServiceDependency Id="MSMQ" />
 </ServiceInstall>

<ServiceControl Id="sc_InstallLFService" Name="LogFWService" Start="install" Remove="uninstall" Stop="both" Wait="yes"/>
       </Component>
     </DirectoryRef>

Даже я использовал атрибут удаления файла, но он по-прежнему не удаляет службу Windows при удалении. Пожалуйста, помогите, если кто-нибудь знает об удалении службы Windows.


person Jony Lalwani    schedule 06.09.2011    source источник


Ответы (2)


У меня была аналогичная проблема. Я не уверен на 100%, но думаю, что он исчез после того, как я изменил GUID установочного компонента. Предыдущий GUID был скопирован из другого проекта вместе со всей установочной разметкой для установки службы Windows, и я забыл заменить его новым GUID.

Кстати, вы можете удалить "оставшуюся" службу, используя команду propmt command sc:

sc удалить "YourServiceNameHere"

person Michał Bronkowski    schedule 13.10.2011
comment
У меня такая же проблема. Кто-нибудь может мне помочь с этим? - person User; 28.03.2014

У меня такое случалось при тестировании нескольких версий одного и того же установщика wix в среде разработки. Проблема в том, что он не может удалить объект (компонент), потому что существует зависимость, которая все еще объявлена. Обычно это происходит из-за того, что некоторые ключи реестра остались после предыдущих попыток.

Поиск следующих и удаление соответствующих (не всех) ключей

  • ID ключевого файла в компоненте
  • GUID компонента
  • Имя каталога / папки (может быть включено количество ссылок в \ HKLM \ MS \ Win \ CurVer \ Installer \ Folders)
  • Имя ключевого файла (также учитывается количество ссылок, но не в ключе Folders)

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

В идеале вы должны тестировать установщики на машине, которую можно вернуть в предыдущее состояние.

person StingyJack    schedule 15.09.2015