2011-07-19 10 views
5

He visto algunas preguntas relacionadas con Stackoverflow que se relacionan con esta, pero ninguna de ellas parece abordar el comportamiento específico que estoy observando.El servicio de Windows no se detiene y no se elimina al desinstalar (Wix)

Tengo un servicio de Windows definido de la siguiente manera en un archivo Wix 3.0 .wxs.

<Component Id='Service' Guid='3c658a54-b236-11e0-bbf6-039615e482ae' > 

    <File Id='ServiceEXE' Name='m_agent_service.exe' 
      Vital='yes' Source='..\m_agent_service.exe' 
      KeyPath='yes' /> 

    <ServiceInstall Id='MerakiServiceInstall' 
     Vital='yes' 
     Name='MerakiPCCAgent' DisplayName='Meraki Client Insight Agent $(env.VERSION)' Description="Meraki Client Insight Monitoring and Management Service" 
     Type='ownProcess' Interactive='no' Start='auto' ErrorControl='normal'> 
    </ServiceInstall> 

    <ServiceControl Id='MerakiServiceControl' 
     Name='MerakiPCCAgent' 
     Start='install' Stop='both' Remove='uninstall' 
     Wait='yes' /> 
</Component> 

Cuando instalo el .MSI, el servicio está instalado y ejecutándose. Estupendo.

Cuando desinstalo (ejecutando msiexec/x o usando Agregar/Quitar software del Panel de control), el servicio sigue ejecutándose y no se elimina. De hecho, el registro del servicio en sí me dice que no se ha invocado el código de apagado del servicio. (Cuando uso "sc stop", por ejemplo, me hago ver código de servicio de desactivación de ejecución limpiamente.)

Estas son algunas partes sobresalientes de la msiexec/x registro de desinstalación:

MSI (s) (14:04) [11:33:54:692]: 1 application(s) had been reported to have files 
in use. 
Info 1603. The file C:\Program Files\Meraki\PCC Agent 1.0.67\m_agent_service.exe 
is being held in use by the following process: Name: m_agent_service, Id: 3120, 
Window Title: '(not determined yet)'. Close that application and retry. 
MSI (c) (40:78) [11:33:54:692]: File In Use: -m_agent_service- Window could not 
be found. Process ID: 3120 
MSI (c) (40:78) [11:33:54:692]: No window with title could be found for FilesInUse 

[...] 

Action start 11:33:57: UnpublishFeatures. 
MSI (s) (14:04) [11:33:57:379]: Doing action: StopServices 
MSI (s) (14:04) [11:33:57:379]: Note: 1: 2205 2: 3: ActionText 
Action ended 11:33:57: UnpublishFeatures. Return value 1. 
Action start 11:33:57: StopServices. 
MSI (s) (14:04) [11:33:57:379]: Doing action: DeleteServices 
MSI (s) (14:04) [11:33:57:379]: Note: 1: 2205 2: 3: ActionText 
Action ended 11:33:57: StopServices. Return value 1. 
Action start 11:33:57: DeleteServices. 
MSI (s) (14:04) [11:33:57:379]: Doing action: RemoveFiles 

[...] 

MSI (s) (14:04) [11:33:57:645]: Product: Meraki Client Insight Agent -- Removal 
completed successfully. 

MSI (s) (14:04) [11:33:57:645]: Windows Installer removed the product. Product N 
ame: Meraki Client Insight Agent. Product Version: 1.0.67. Product Language: 103 
3. Removal success or error status: 0. 
+0

¿El servicio que está creando depende de algunos otros archivos o ensamblajes? Si es así, entonces necesitas obtener la identificación del proceso del servicio y luego matar el proceso. entonces puedes desinstalar el servicio –

Respuesta

0

Compruebe el archivo de registro detallado y asegúrese de que el Componente se está modificando. Es posible que la Función esté desactivada o que un Componente/Condición esté causando la omisión del Componente.

5

Oh cariño, mientras estaba en el retrete tuve una idea genial y creo que lo he solucionado yo mismo después de todo, ¡lo siento por la publicación! Creo que voy a explicar lo que solucionó, por si acaso otros principiantes que siguen el mismo libro de Wix que yo se topan con el mismo problema.

Básicamente, cambié el Guid en mi componente, reinstalé, desinstalé y todo funcionó de nuevo. (Tengo en cuenta que cambiar Guids puede no ser la mejor práctica, pero esto funcionó para mí.)

Para explicarlo, creo que en realidad no hubo ningún problema con mi instalador: el problema estaba en la PC que estaba usando para probar la instalación. Mi primer intento de instalar este servicio de Windows se realizó sin ningún elemento ServiceControl, solo el elemento ServiceInstall. Luego probé la instalación, y funcionó, pero el servicio no se eliminó en la desinstalación, obviamente. Luego detuve manualmente y desinstalé el servicio de mi PC usando Services.msc.

Luego leí la siguiente sección de mi libro, me di cuenta de que también necesitaba un elemento ServiceControl, lo creé y volví a probar el instalador, pero estaba usando el mismo Guid. La desinstalación aún no funcionaba correctamente y supuse que había hecho algo mal en mi instalador, de ahí la publicación anterior.

Lo que supongo que sucedió es que la instalación anterior, utilizando el mismo Guid pero sin el elemento ServiceControl, ocasionó que mi PC se corrompiera de alguna manera y evitó que el nuevo desinstalador se completara correctamente.

Deje que esto sea una lección para mí - ¡nunca pruebe su instalador en su propia PC! Una de esas reglas que entiendo completamente y felizmente ignoro, hasta que me muerde :)

+0

Exactamente lo que estoy experimentando ahora. 10x :) – mynkow

+0

Igual aquí, prueba este si tienes este problema. – joepetrakovich

Cuestiones relacionadas