Tengo un servicio de Windows, construido usando C#, que se instala a través de un proyecto de instalación de VS2008, y estoy teniendo un par de problemas que ocurren con el proceso de desinstalación:¿Forma correcta de desinstalar un servicio de Windows?
servicio no se detiene antes de desinstalar
Cuando se ejecuta la rutina de desinstalación, se produce un error sobre los archivos en uso. Al hacer clic en continuar, se completa el instalador correctamente, pero el servicio aún aparece en la lista, por lo que no se desinstala correctamente.
(En la actualidad, tengo que recurrir a eliminarlo manualmente utilizando sc delete servicename).
Estoy tratando de detener el servicio antes de desinstalar usando el siguiente código, pero no parecen estar teniendo efecto:
protected override void OnBeforeUninstall(IDictionary savedState)
{
base.OnBeforeUninstall(savedState);
ServiceController serviceController = new ServiceController(MyInstaller.ServiceName);
serviceController.Stop();
}
Cuando se llama a este código, y cómo puede dejar que el servicio antes de desinstalar?
carpeta de instalación no se elimina después de desinstalar
La aplicación también crea algunos archivos dentro de ella la carpeta de instalación cuando se ejecuta. Después de la desinstalación, la carpeta de instalación (C: \ Program Files \ MyApp) no se elimina y contiene los archivos creados por la aplicación, aunque todos los demás archivos que el instalador instaló en realidad se han eliminado correctamente.
¿Es posible que el proceso de desinstalación elimine la carpeta de instalación, incluidos todos los archivos generados dentro de esa carpeta y, de ser así, cómo?
Gracias.
Me gustaría una respuesta a su primer problema yo mismo. Por favor, publícalo si alguna vez lo resuelves. – PaulH
@Mun Agregué [este código] (http://www.primordialcode.com/blog/post/msi-simple-delete-files-custom-action) al método 'OnAfterUninstall', pero dice que el archivo está siendo utilizado por otro proceso o acceso denegado –