Cuando desinstalo mi servicio aparece el error donde dice que debo detener tal o cual servicio antes de desinstalarlo. Esto no es satisfactorio: el desinstalador debería detenerlo automáticamente.Wix: detención de un servicio de Windows en la desinstalación
Encontré un blog o una publicación de grupo de noticias hace unos meses y lo hice funcionar correctamente, pero ahora ha dejado de funcionar para mí. Y no tengo un enlace a la publicación ... ¿alguien más sabe dónde está? :) Creo que cambié algo sutil y dejó de funcionar. Encuentro a Wix extremadamente difícil de solucionar.
Estoy usando el siguiente include para recuperar la propiedad X_ WIN_ SERVICE_ NAME (lo siento, no sé cómo evitar _ escapando aquí) del registro. No importa en la instalación porque en ese caso lo configuré explícitamente con un archivo de entrada. Este include se usa antes que cualquier componente en mi archivo wxs.
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?ifndef SetupXWinServiceRegistryProperties ?>
<?define SetupXWinServiceRegistryProperties ?>
<?define XWinServiceRegistryKey='Software\X\Y'?>
<Property Id="X_WIN_SERVICE_NAME">
<RegistrySearch Id="XWinServiceNameSearch"
Root="HKLM"
Key="$(var.XWinServiceRegistryKey)"
Name="ServiceName"
Type="raw"/>
</Property>
<?endif?>
</Include>
La siguiente incluyen el componente se utiliza para guardar el valor de registro de instalación:
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?ifndef WriteXWinServiceRegistryProperties ?>
<?define WriteXWinServiceRegistryProperties ?>
<Component Id="CompWriteXWinServiceRegistryProps"
Guid="some guid">
<!-- Write properties to the registry. Then they will be
accessable during uninstall. -->
<RegistryValue Root="HKLM"
Key="$(var.XWinServiceRegistryKey)"
Name="ServiceName"
Type="string"
Value="[X_WIN_SERVICE_NAME]"
Action="write" />
</Component>
<?endif?>
</Include>
He comprobado mi sistema después de la instalación y el valor de registro está correctamente escrito allí. La parte en mi componente donde el servicio está configurado se ve así:
<ServiceInstall Id="ServiceInstallXWinService"
Name="[X_WIN_SERVICE_NAME]"
Start="auto"
DisplayName="xxx"
Description="yyy"
Account="[X_WIN_SERVICE_USER]"
Password="[X_WIN_SERVICE_PASSWORD]"
Type="ownProcess"
ErrorControl="normal"
Vital="yes" />
<ServiceControl Id="ServiceInstallXWinService"
Name="[X_WIN_SERVICE_NAME]"
Stop="both"
Remove="uninstall"
Wait="yes" />
¿Alguna idea?
tiene razón, debe haber sido algo sutil porque después de algunos cambios no relacionados está funcionando de nuevo: S – evilfred