Hallo Leute,
ich bin gerade dabei ein Windows Service zu erstellen. Dabei möchte ich nicht auf div. Installer (z.B. InstallShield) zurückgreifen. Ich habe tatsälich auch einige Tutorials gefunden (Stackoverflow - c#, Publishing Windows Service, etc..). Mit nachfolgenden Code lässt sich das Windows Service auch perfekt installieren, sodass es im DienstExplorer angezeigt wird:
Die Main in Program.cs
Spoiler anzeigen
Nachdem es installiert wurde, sollte es gestartet werden. Dazu ist der zweite bereich der Methode zuständig:
Doch hierbei kommt es zu dem eingestellten Timeout. Es wird
Wobei das Service aber unter "MeinService" erstellt wurde (Ich kann es über die Eingabeaufforderung mit
Wenn ich das Service über die Dienste starte kommt es ebenfalls zu einen Fehler (Siehe anhang).
Meine Vermut soweit ist es, dass ich irgendwo die Klasse, welche von
Da dies ziemlich Verwirrend ist und ich absolut keinen Anhaltspunkt habe, hänge ich euch einfach mal das Projekt an. Falls jemand die Zeit finden und einen hilflosen Programmierer auf seinen Weg zurückbringen möchte, darf mir jeden auch noch so kleinen Strohalm reichen, an dem ich mich noch festhalten kann .
Um jedliche Idee würde ich mich freuen.
ich bin gerade dabei ein Windows Service zu erstellen. Dabei möchte ich nicht auf div. Installer (z.B. InstallShield) zurückgreifen. Ich habe tatsälich auch einige Tutorials gefunden (Stackoverflow - c#, Publishing Windows Service, etc..). Mit nachfolgenden Code lässt sich das Windows Service auch perfekt installieren, sodass es im DienstExplorer angezeigt wird:
Die Main in Program.cs
C#-Quellcode
- static void Main()
- {
- TransactedInstaller ti = new TransactedInstaller();
- ArrayList cmdline = new ArrayList();
- cmdline.Add(String.Format("/assemblypath={0}", Assembly.GetExecutingAssembly().Location));
- cmdline.Add("/logToConsole=false");
- cmdline.Add("/showCallStack");
- InstallContext ctx = new InstallContext("installer_logfile.log", cmdline.ToArray(typeof(string)) as string[]);
- ti.Installers.Add(new ProjectInstaller());
- ti.Context = ctx;
- ti.Install(new Hashtable());
- ServiceController service = new ServiceController("MeinService");
- TimeSpan timeout = TimeSpan.FromMilliseconds(15000);
- service.Start();
- }
Nachdem es installiert wurde, sollte es gestartet werden. Dazu ist der zweite bereich der Methode zuständig:
Doch hierbei kommt es zu dem eingestellten Timeout. Es wird
Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in System.ServiceProcess.dll aufgetreten.
Zusätzliche Informationen: Der Dienst MeinService kann nicht auf dem Computer . gestartet werden.
dieser Fehler angezeigt (in VS2013).Wobei das Service aber unter "MeinService" erstellt wurde (Ich kann es über die Eingabeaufforderung mit
sc delete "MeinService"
wieder löschen.) Natürlich läuft VS2013 und die Eingabeaufforderung als AdministratorWenn ich das Service über die Dienste starte kommt es ebenfalls zu einen Fehler (Siehe anhang).
Meine Vermut soweit ist es, dass ich irgendwo die Klasse, welche von
ServiceBase
erbt angeben muss. Nur so kann es gestartet werden und es gibt eine Rückmeldung und dafür kein Timeout. Ich habe jedoch beobachtet, dass ein BreakPoint im Konstruktor oder in z.B. onStart(string[] args)
niemals ausgelöst wird.Da dies ziemlich Verwirrend ist und ich absolut keinen Anhaltspunkt habe, hänge ich euch einfach mal das Projekt an. Falls jemand die Zeit finden und einen hilflosen Programmierer auf seinen Weg zurückbringen möchte, darf mir jeden auch noch so kleinen Strohalm reichen, an dem ich mich noch festhalten kann .
Um jedliche Idee würde ich mich freuen.
Mit freundlichen Grüßen
GVI (Teil1/2): 80%
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „lurker“ ()