AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi wie installierten Dienst starten?
Thema durchsuchen
Ansicht
Themen-Optionen

wie installierten Dienst starten?

Ein Thema von Susanne · begonnen am 19. Okt 2004 · letzter Beitrag vom 19. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

wie installierten Dienst starten?

  Alt 19. Okt 2004, 11:09
Hallo,

Ich möchte gerne einen Dienst entwickeln. Bis jetzt habe ich folgendes geschafft:
Das ist ein leerer Dienst und ich kann in installieren und deinstallieren, aber der Dienst wird nicht gestartet, wie stelle ich das an?


Delphi-Quellcode:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
  TTimeManager = class(TService)
  private
    {Private-Deklarationen}
  public
    function GetServiceController: TServiceController; override;
    {Public-Deklarationen}
  end;

var
  TimeManager: TTimeManager;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
   begin
      TimeManager.Controller(CtrlCode);
   end;

function TTimeManager.GetServiceController: TServiceController;
   begin
      Result := ServiceController;
   end;

end.
Vielen Dank schon mal für eure Hilfe.
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: wie installierten Dienst starten?

  Alt 19. Okt 2004, 11:13
Ich nehme an, du installierst ihn mit "uMain.exe /install". Danach einfach ein "net start <Dienstname>". Vor den Deinstallieren ein "net stop <Dienstname>" nicht vergessen!
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#3

Re: wie installierten Dienst starten?

  Alt 19. Okt 2004, 12:02
irgendwie will das ganze sich jetzt auch nicht mehr installieren lassen

Fehlermeldung Service1 konnte nicht installiert werden, Systemfehler 1072, angegebener Dienst wurde zum löschen markiert

Was soll mir das ganze nun sagen. Gibt es irgendwo ein Tutorial, so von ganz von vorne.

Andere Frage dazu noch. Ich kann ja keine normale Anwendung als Dienst laufen lassen, muss ich die Funktionalität in der Service Anwendung ganz neu implementieren oder wie kann ich die Units in meine Service anwendung einfach reinnehmen? Oder wie mache ich das am Besten?
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: wie installierten Dienst starten?

  Alt 19. Okt 2004, 12:43
Vorsicht mit dem Installieren von Diensten, die du noch in Delphi entwickelst!
1. Niemals, einen Dienst aus der IDE heraus (mit den Parametern) (de)installieren!!
2. Zum Installieren die Exe woandershin kopieren, weil sie während der Laufzeit des Dienstes nicht verändert werden kann darf (Delphi kriegt es manchmal irgendwie hin das Teil neu zu kompilieren und stürzt ab!)
3. Immer die Reihenfolge beachten: Installieren, Starten, Stoppen, Deinstallieren

Die Vorgehensweise beim Umstellen einer "normalen" Anwendung auf einen Dienst hängt davon ab, was die Anwendung macht, die du umstellen willst.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#5

Re: wie installierten Dienst starten?

  Alt 19. Okt 2004, 12:55
ok, bisher liest die umzustellende Anwendung eine ini-Datei ein und anschliessend führt die Anwendung zu bestimmten Zeiten und an bestimmten Tagen bestimmte Programme aus, so ganz grob gesagt. Und im Form wird bisher dann auch angezeigt, was er gemacht hat.
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: wie installierten Dienst starten?

  Alt 19. Okt 2004, 13:09
Tja, das mit dem Form geht nicht, aber ich würd das dann als Log-Datei speichern.
Wenn du die Logik für die Zeitsteuerung in einem DataModul hast, dann kannst du das in deinem Dienst einbinden, ansonsten rauskopieren und im Dienst einfügen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#7

Re: wie installierten Dienst starten?

  Alt 19. Okt 2004, 14:39
Bisher habe ich mit einem Form gearbeitet und da sind die Funktionen onActivate, oncanResize, Onclose, OnQueryClose und onCreate benutzt, das meiste davon würde bei dem Dienst ja wegfallen. Das was ich bei onClose habe müsste dann beim Dienst geschehen, wenn ich ihn beenden will. Also bevor er beendet wird und das von onCreate, wenn der Dienst gerade gestartet wurde? Ist das korrekt?

Einen Timer gibt es ja auch noch in dem Programm, wo müsste der bei dem Dienst implementiert werden?

Und wie kann ich es programmieren, dass wenn der Dienst installiert wurde er auch sofort danach gestartet wird. Bisher habe ich es ja nur mit net start ....exe gemacht, aber das muss doch auch irgendwie direkt im Dienst nach der Installation gehen. - nur wie?
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: wie installierten Dienst starten?

  Alt 19. Okt 2004, 15:00
- Richtig!
- Wenn du einen neuen Dienst erstellst hast du doch dieses Formular, da kannst du deinen Timer reinpacken...
- Das automatische Starten und Stoppen müsste so gehen:
Delphi-Quellcode:
procedure TService1.ServiceAfterInstall(Sender: TService);
begin
  DoStart;
end;

procedure TService1.ServiceBeforeUninstall(Sender: TService);
begin
  if not DoStop then
    raise Exception.Create('Dienst konnte nicht beendet werden!');
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#9

Re: wie installierten Dienst starten?

  Alt 19. Okt 2004, 15:24
Delphi-Quellcode:
procedure TService1.ServiceBeforeUninstall(Sender: TService);
begin
  DoStop;
end;

Hab ich eingebaut und ausprobiert, aber hier kommt die Meldung, er kann den Dienst nicht deinstallieren, Zugriffsverletzung an Adresse ..., Und das sTarten mit dostart funktioniert auch nicht, er installiert den dienst, startet ihn aber nicht.
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

Re: wie installierten Dienst starten?

  Alt 19. Okt 2004, 15:36
Mist, dann wüsst ich auch keinen anderen Weg, als das Teil über den net-Befehl zu starten, aber mach dir doch ne Batch-Datei...
Code:
dienst.exe /install /silent
net start dienst
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz