Hallo,
kennt jemand Beispiel-Code, der einen Widows-Dienst mit Hilfe einer abgeleiteten Installer-Klasse deinstalliert und wieder neu installiert?
Situation: Ein Dienst greift in bestimmten Intervallen auf einen Web-Service zu. Dieser Dienst muss von Zeit zu Zeit automatisch und im Hintergrund aktualisiert werden. Dies geschieht in einem separaten Prozess.
Die Aufgabe habe ich durch den Aufruf eines msi-Paketes gelöst. Dies ist aber nicht befriedigend, da der Anwender nach der Erstinstallation evtl. die Identität, unter der der Dienst ausgeführt hat geändert hat. Diese soll jedoch erhalten bleiben nach einer Aktualisierung.
Vor einer Aktualisierung müsste ich mir also im Code Account, Username, Password und StartType merken und nach der Aktualisierung wieder eintragen.
Meine Idee war es, eine Installer-Klasse abzuleiten, einen ServiceInstaller und einen ServiceProcessInstaller hinzuzufügen (wie es beim Setup-Projekt ja auch getan wird), die Daten auszulesen, einen Rollback und Uninstall und anschliessend wieder ein Install und Commit auszuführen.
Die MSDN ist zu diesem Thema leider nicht sehr hilfreich, da sie mir lediglich empfiehlt, die Methoden nicht direkt aufzuriufen.
Mir ist auch die Reihenfolge der Aufrufe, sowie die Handhabung des IDictionary nicht ganz klar.
Hatte schon jemand ein ähnliches Problem oder kennt geeigneten Beispiel-Code für dieses Problem?
Viele Dank im Voraus
kennt jemand Beispiel-Code, der einen Widows-Dienst mit Hilfe einer abgeleiteten Installer-Klasse deinstalliert und wieder neu installiert?
Situation: Ein Dienst greift in bestimmten Intervallen auf einen Web-Service zu. Dieser Dienst muss von Zeit zu Zeit automatisch und im Hintergrund aktualisiert werden. Dies geschieht in einem separaten Prozess.
Die Aufgabe habe ich durch den Aufruf eines msi-Paketes gelöst. Dies ist aber nicht befriedigend, da der Anwender nach der Erstinstallation evtl. die Identität, unter der der Dienst ausgeführt hat geändert hat. Diese soll jedoch erhalten bleiben nach einer Aktualisierung.
Vor einer Aktualisierung müsste ich mir also im Code Account, Username, Password und StartType merken und nach der Aktualisierung wieder eintragen.
Meine Idee war es, eine Installer-Klasse abzuleiten, einen ServiceInstaller und einen ServiceProcessInstaller hinzuzufügen (wie es beim Setup-Projekt ja auch getan wird), die Daten auszulesen, einen Rollback und Uninstall und anschliessend wieder ein Install und Commit auszuführen.
Die MSDN ist zu diesem Thema leider nicht sehr hilfreich, da sie mir lediglich empfiehlt, die Methoden nicht direkt aufzuriufen.
Mir ist auch die Reihenfolge der Aufrufe, sowie die Handhabung des IDictionary nicht ganz klar.
Hatte schon jemand ein ähnliches Problem oder kennt geeigneten Beispiel-Code für dieses Problem?
Viele Dank im Voraus
Comment