2016-04-27 10 views
0

Soweit ich durch die Antworten vonStop/Löschen Local Dienst bei der Deinstallation über Wix/MSI

ist ist ziemlich prolematic einen Dienst zu beenden und deinstallieren, wenn Deinstallieren des Pakets, wenn der Dienst als LocalSystem gestartet wird.

Gibt es eine Möglichkeit, das zu erreichen? Ich kann mir nicht vorstellen, dass dies nicht möglich ist, ohne einen Datei-In-Verwendungs-Dialog oder das RestartManager-Popup zu erzwingen.

+0

Normalerweise sollte das überhaupt kein Problem sein, das Konto (lokales System oder was auch immer) ist nicht wirklich wichtig (wenn der Dienst tatsächlich stoppt, wenn es dazu aufgefordert wird). Das Installationsprogramm (MSI) wird unter Systemkonto ausgeführt, sodass es über ausreichende Berechtigungen zum Stoppen und Deinstallieren von Diensten verfügt. Stehen Sie vor einigen Problemen? – Nikolay

Antwort

2

Keines der von Ihnen angesprochenen Themen ist relevant. Stoppen von Diensten ist nicht oft ein Problem, ob es sich um ein lokales System handelt oder nicht. Es gibt wirklich nur einen allgemeinen Grund, warum Dienste nicht aufhören, wenn sie gefragt werden: Sie sind schlecht geschrieben. Sie sind nur Code, und wenn sie nicht rechtzeitig auf die Stop-Anfrage reagieren, dann gibt es ein Problem. Wenn sie sich entscheiden, 20 Minuten zum Herunterfahren zu nehmen, um ein empörendes Beispiel zu nehmen, können Sie dem Uninstaller keine Schuld geben. Ein Dienst wird möglicherweise auch nicht ordnungsgemäß beendet, wenn er sich in einem dieser Hosting-Prozesse befindet, so dass eine normale ausführbare Datei als Dienst ausgeführt werden kann, und ich denke, das ist bei den javaartigen Problemen der Fall.

Wenn es Probleme bei der Verwendung von Dateien in Diensten gibt, kann es passieren, dass sie nicht heruntergefahren werden, aber auch wenn sie nicht mehr funktionieren, aber der Prozess nicht aufhört (was oft der Fall ist) Hosting-ähnliche Dienste). Ein Dienst kann auf die Stoppanforderung reagieren, und Windows behandelt ihn nicht mehr als Dienst. Der Prozess muss jedoch nicht mehr ausgeführt werden - er kann weiterhin ausgeführt, bereinigt oder sonstwie ausgeführt werden, sodass weiterhin Dateien entstehen. In-Verwendung-Kontrollen. Es ist auch ein häufiges Problem bei Installer-Klassen in Visual Studio-Setup-Projekten (die nicht die Standard-MSI-Aktionen verwenden), da in den Setups, die Installer-Klassen verwenden, kein laufender Dienst heruntergefahren werden kann.

Wenn Sie ein bestimmtes Problem haben, sollten Sie es posten, aber das Stoppen der Dienste ist die ganze Zeit während der Deinstallation ohne Probleme.

+0

Ich habe eine konkretere Frage hier: http://stackoverflow.com/questions/36887205/msi-how-a-service-is-stopped-on-uninstall-during-installvalidate-could-that-w My Die Frage wurde auf Berechtigungsprobleme ausgerichtet, wenn der Dienst als LocalSystem gestartet wird. Aber könnten Sie bitte präziser sein, was Sie mit "schlecht geschriebenen" Dienstleistungen meinen? Mein Dienst ist in C++ geschrieben und hat einen registrierten ServiceControlHandler. Es konnte gestartet werden, normal beendet durch das Befehlszeilentool "sc" oder den Dienstdialog. Der Dienst wird innerhalb von Sekunden beendet und alle untergeordneten Prozesse des Dienstes werden ebenfalls beendet. – Karl

Verwandte Themen