tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
880
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    D12 D12 ist offline Mitglied Silber
    Registriert seit
    Jun 2005
    Ort
    Eschweiler
    Beiträge
    64
    Hallo Tutorials,

    kann mir hier einer anhand eines kurzen Beispiels zeigen, wie man mit #develope einen Dienst erstellt und nach erstellen des Combines installiert, so das man diesen Testen kann?

    Link zu einem guten Tutorial wäre auch praktisch...

    Der Dienst sollte später wie jeder Dienst über die Dienst-Verwaltung im Windows 2k/Xp zu bedienen sein.

    Danke,
    D12
     

  2. #2
    XChris XChris ist offline Mitglied Brokat
    Registriert seit
    Sep 2003
    Ort
    Weimar
    Beiträge
    373
     

  3. #3
    D12 D12 ist offline Mitglied Silber
    Registriert seit
    Jun 2005
    Ort
    Eschweiler
    Beiträge
    64
    Hallo Chris,

    danke erst mal für Deine Hilfe. Habe das soweit umgesetzt, beim Kompilieren fragt #develop nach einem Ausführungsbefehl. Habe das eigentliche Programm, das vom Dienst ausgeführt werden soll, als auch das InstallUtil.exe ausprobiert. Beide führten ins Leere.

    Hoffe hier hat noch jemand einen sinnvollen Tip für mich.
    LG D12


    Zitat Zitat von XChris
     

  4. #4
    D12 D12 ist offline Mitglied Silber
    Registriert seit
    Jun 2005
    Ort
    Eschweiler
    Beiträge
    64
    Hallo Tutorials,

    Mittlerweile bin ich soweit, das ich einen Dienst installiert bekomme. Aber es hat noch Probleme.

    Obwohl ich den Dienst mit dem Namen TestDienst benenne, wird dieser nur als „Hello Service Template“ in den Diensten angezeigt.
    Wenn ich diesen Dienst starte, dann wird der definierte Code in der Methode „OnStart“ nicht ausgeführt, dieser soll als Zähler Werte in eine Datei schreiben!
    Hier ist der dazugehörige Code. Vielleicht weis hier wer, was ich falsch gemacht habe?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    
    using System;
    using System.IO;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.ServiceProcess;
    using System.Configuration.Install;
    using System.Windows.Forms;
     
    namespace testdienst
    {
      /// <summary>
      /// This is the class for my Service
      /// </summary>
      public class MyService : System.ServiceProcess.ServiceBase
      {
        public MyService()
        {
           InitializeComponents();
           this.ServiceName = "TestDienst";
           ProjectInstaller pi = new ProjectInstaller();
     
           // TODO: Add any further initialization code
        }
     
         private void InitializeComponents()
         {
            this.ServiceName = "TestDienst";
         }
            
         /// <summary>
         /// This method starts the service.
         /// </summary>
         public static void Main()
         {
            System.ServiceProcess.ServiceBase.Run(new System.ServiceProcess.ServiceBase[]
            {
               new MyService() // To run more than one service you have to add them here    
            });
         }
     
         /// <summary>
         /// Clean up any resources being used.
         /// </summary>
         protected override void Dispose(bool disposing)
         {
            // TODO: Add cleanup code here (if required)
            base.Dispose(disposing);
         }
     
         /// <summary>
         /// Start this service.
         /// </summary>
         protected override void OnStart(string[] args)
         {
            StreamWriter sw;
            int i = 1;
            if ( !File.Exists("c:\test.txt"))
            {//*** Wenn die Datei für den Test nicht existiert, dann soll die neu angelegt werden
               sw = new StreamWriter(File.Open("c:\test.txt", FileMode.Create));
               sw.WriteLine("Das ist ein Test");
               sw.Close();
            }   
            //*** Hier wird ein Zähler von 1 bis 1000 in die Datei geschrieben
            sw = new StreamWriter(File.Open("c:\test.txt", FileMode.Append));
            while (i<1000)
            {
               sw.Write(i.ToString() + " ");
               i++;
            }
            sw.Close();
         }
     
         /// <summary>
         /// Stop this service.
         /// </summary>
         protected override void OnStop()
         {
            // TODO: Add tear-down code here (if required) 
            //       to stop your service.
         }
      }
    }
     
    [RunInstaller(true)]
    public class ProjectInstaller : Installer
    {
       ServiceInstaller si = new ServiceInstaller();
        
       public ProjectInstaller()
       {
          ServiceProcessInstaller spi = new ServiceProcessInstaller();
          spi.Account = ServiceAccount.LocalSystem; 
     
          ServiceInstaller si = new ServiceInstaller();
          si.ServiceName = "TestDienst";
          si.StartType = ServiceStartMode.Automatic;
          Installers.AddRange(new Installer[] {spi, si});
       }
        
       public override void Install(IDictionary stateServer)
       {
          base.Install(stateServer);
          Microsoft.Win32.RegistryKey desc;
          try
          {         
             desc = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
                "System\CurrentControlSet\Services\" + si.ServiceName, true);
             desc.SetValue("Description", "Das ist ein erster Testdienst");
             desc.Close();
          }
          catch(Exception ex)
          {
             MessageBox.Show(ex.ToString());
          }
       }
        
       protected override void OnAfterInstall(IDictionary savedState)
       {
          base.OnAfterInstall(savedState);
          Microsoft.Win32.RegistryKey image;
          try
          {
             image = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
                "System\CurrentControlSet\Services\" + si.ServiceName, true);
             si.ServiceName = "TestDienst";
             image.SetValue("ImagePath", image.GetValue("ImagePath") + " - Service");
             image.Close();
          }
          catch(Exception ex)
          {
             MessageBox.Show(ex.ToString());
          }
       }
    }
     

Ähnliche Themen

  1. Windows Dienst aus C# Projekt installieren.
    Von eXistenC im Forum .NET Application und Service Design
    Antworten: 16
    Letzter Beitrag: 04.05.09, 10:40
  2. Dienst installieren und starten
    Von DrMueller im Forum .NET Application und Service Design
    Antworten: 0
    Letzter Beitrag: 06.03.08, 15:22
  3. Windows-Dienst installieren
    Von theindra im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 22.06.04, 18:19
  4. Windows-Dienst installieren
    Von theindra im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 17.06.04, 18:04
  5. XP Pro - Dienst installieren ?
    Von Andreas Späth im Forum Microsoft Windows
    Antworten: 2
    Letzter Beitrag: 12.03.04, 21:50