Hallo zusammen,
ich versuche aktuell meine ersten Gehversuche, einen Windows Dienst in VB.NET zu erstellen. Direkt zu Anfang stehe ich allerdings bereits vor zwei - wahrscheinlich trivialen - Problem.
Zum einen bekomme ich den Dienste nicht installiert. Versucht habe ich das gemäß der Microsoft Anleitung mit
installutil Ausgabe
Allerdings erscheint der Dienst dann nicht in der Dienstverwaltung. Ein Dienstnamen hab ich in der vorgenerierten Sub
Testweise habe ich den Dienst dann mit
In meinem Testprojekt habe ich versucht das Timer Projekt von Microsoft nachzubauen. Testweise wollte ich alle 10 Sekunden einen Ordner mit der aktuellen Sekundenanzahl in
Sourcecode
Beim Starten des Dienstes wird der
Kann mir zu den Themen jemand Starthilfe geben?
Danke und Grüße!
ich versuche aktuell meine ersten Gehversuche, einen Windows Dienst in VB.NET zu erstellen. Direkt zu Anfang stehe ich allerdings bereits vor zwei - wahrscheinlich trivialen - Problem.
Zum einen bekomme ich den Dienste nicht installiert. Versucht habe ich das gemäß der Microsoft Anleitung mit
installutil
. Die Rückmeldung sieht dabei auch einigermaßen gut aus.Quellcode
- Microsoft (R) .NET Framework-Installationsprogramm, Version 4.8.9037.0
- Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
- Eine transaktive Installation wird ausgeführt.
- Die Installationsphase wird gestartet.
- Die Protokolldatei enthält den Fortschritt der Assembly C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.exe.
- Die Datei befindet sich in C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.InstallLog.
- Assembly C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.exe wird installiert.
- Betroffene Parameter:
- logtoconsole =
- logfile = C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.InstallLog
- assemblypath = C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.exe
- Keine öffentlichen Installer mit dem RunInstallerAttribute.Yes-Attribut in der Assembly C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.exe gefunden.
- Die Installationsphase ist abgeschlossen, und die Commitphase beginnt.
- Die Protokolldatei enthält den Fortschritt der Assembly C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.exe.
- Die Datei befindet sich in C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.InstallLog.
- Assembly C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.exe wird ausgeführt.
- Betroffene Parameter:
- logtoconsole =
- logfile = C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.InstallLog
- assemblypath = C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.exe
- Keine öffentlichen Installer mit dem RunInstallerAttribute.Yes-Attribut in der Assembly C:\Users\XXX\Desktop\ServiceTest\WindowsService1\bin\Debug\WindowsService1.exe gefunden.
- Die InstallState-Datei wird entfernt, da keine Installer vorhanden sind.
- Die Commitphase wurde erfolgreich abgeschlossen.
- Die transaktive Installation ist abgeschlossen.
Allerdings erscheint der Dienst dann nicht in der Dienstverwaltung. Ein Dienstnamen hab ich in der vorgenerierten Sub
InitializeComponent()
bereits festgelegtTestweise habe ich den Dienst dann mit
SC create
angelegt, das hat funktioniert. Den Dienst kann ich auch starten. Grundsätzlich stellt sich mir hier auch die Frage, wie es bei der Dienstentwicklung mit Debugging aussieht. Den Dienst kann ich ja scheinbar nicht direkt aus Visual Studio starten. Wie komm ich bei dem Dienst an einigermaßen Debugging Informationen? Da Dienste keine GUI haben, kann ich das auch nicht selber abbilden. In meinem Testprojekt habe ich versucht das Timer Projekt von Microsoft nachzubauen. Testweise wollte ich alle 10 Sekunden einen Ordner mit der aktuellen Sekundenanzahl in
C:\temp
anlegen.VB.NET-Quellcode
- Imports System.Timers
- Public Class Service1
- Dim timer As Timer = New Timer()
- Protected Overrides Sub OnStart(ByVal args() As String)
- ' Code zum Starten des Dienstes hier einfügen. Diese Methode sollte Vorgänge
- ' ausführen, damit der Dienst gestartet werden kann.
- Timer.Interval = 10000 ' 60 seconds
- timer.Start()
- My.Computer.FileSystem.CreateDirectory("C:\TEMP\start_" + DateTime.Now.Second.ToString)
- End Sub
- Protected Overrides Sub OnStop()
- ' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen.
- End Sub
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- My.Computer.FileSystem.CreateDirectory("C:\TEMP\" + DateTime.Now.Second.ToString)
- End Sub
- End Class
Beim Starten des Dienstes wird der
start_
Ordner zwar angelegt, allerdings die Ordner aus der Sub Timer1_Tick
nicht. Kann mir zu den Themen jemand Starthilfe geben?
Danke und Grüße!