Mam usługa Windows, zbudowany przy użyciu C#, który jest instalowany za pośrednictwem projektu instalacji VS2008, i mam kilka problemów występujących w procesie deinstalacji:Prawidłowy sposób odinstalowania usługi Windows?
Usługa nie jest zatrzymany przed deinstalacją
Po uruchomieniu procedury deinstalacji generuje błąd dotyczący używanych plików. Kliknięcie przycisku Kontynuuj poprawnie instaluje instalator, ale usługa nadal pojawia się na liście, więc nie jest poprawnie odinstalowywana.
(Obecnie muszę uciekać się do usunięcia go ręcznie przy użyciu sc delete servicename).
Próbuję zatrzymać usługę przed deinstalacją za pomocą następującego kodu, ale nie wydaje się być przy Efekt:
protected override void OnBeforeUninstall(IDictionary savedState)
{
base.OnBeforeUninstall(savedState);
ServiceController serviceController = new ServiceController(MyInstaller.ServiceName);
serviceController.Stop();
}
Gdy ten kod nazywa i jak mogę zatrzymać usługę przed odinstalowaniem?
Folder instalacyjny nie usunięte po odinstalowaniu
Aplikacja tworzy także niektóre pliki w to folder instalacyjny po uruchomieniu. Po odinstalowaniu folder instalacyjny (C: \ Program Files \ MyApp) nie jest usuwany i zawiera pliki utworzone przez aplikację, ale wszystkie inne pliki, które zostały faktycznie zainstalowane przez instalatora, zostały pomyślnie usunięte.
Czy proces odinstalowywania może usunąć folder instalacji, w tym wszystkie wygenerowane pliki w tym folderze, a jeśli tak, to w jaki sposób?
Dzięki.
Chciałbym osobiście odpowiedzieć na twój pierwszy numer. Opublikuj go, jeśli kiedykolwiek to zrozumiesz. – PaulH
@Mun Dodałem [ten kod] (http://www.primordialcode.com/blog/post/msi-simple-delete-files-custom-action) do metody 'OnAfterUninstall', ale jest napisane, że plik jest używany przez inny proces lub odmowa dostępu –